NoSQL 简介——Not Only SQL

关系型数据库遵循 ACID 规则

要了解非关系型数据库就要先了解关系型数据库,关系型数据库遵循 ACID 规则:

  • A (Atomicity):原子性:实务操作要么全部做完,要么全都不做,有错误可以回滚
  • C (Consistency):一致性:一直处于一致的状态
  • I (Isolation):独立性:并发的事务之间不会互相影响
  • D (Durability):持久性:一旦事务提交,所做的修改会永久的保存在数据库上,不会丢失

分布式计算

优点:

  • 可靠性:一台服务器系统崩溃并不影响其余服务器(容错)
  • 可扩展性:可以根据需要增加更多的机器
  • 资源共享:如银行,预定系统
  • 灵活性:容易安装,实施,和调试
  • 速度更快:分布式计算系统又多台计算机的计算能力
  • 开放:本地或远程都可以访问
  • 性能更高:比集中式提供更高的性能/性价比

缺点:

  • 故障排除
  • 软件:软件支持少
  • 网络:网络基础设施的问题,如 传输问题,高负载,信息丢失等
  • 安全性:开放系统的特性让分布式计算系统存在数据安全性和共享的风险
非关系型数据库 NoSQL

用户的个人信息,社交网络,地理位置,生成的数据和用户操作日志成倍的增加

对这些数据进行挖掘,关系型 SQL 数据库已经不适合,No SQL 却可以很好的处理

NoSQL

非关系型数据库,用于超大规模数据的存储:例如 google 和 Facebook 每天大量的用户数据

这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展

优点:

  • 高扩展性
  • 分布式计算
  • 低成本
  • 架构灵活,半结构化数据
  • 没有复杂的关系

缺点:

  • 没有标准化
  • 有限的查询功能
  • 最终一致是不直观的程序

NoSQL 分类

  • 列储存,Hbase 等:针对某列或某几列的查询有 IO 优势
  • 文档存储,MongoDB 等:使用类似 json 的格式存储,存储的内容是文档型的,有索引
  • key-value 存储,Redis 等:通过 key 快速的查询其 value
  • 图存储,New4J/FlockDB 等:图形关系的最佳存储
  • 对象存储,db4o/Versant:通过类似面向对象语言的语法操作数据库,对象存储
  • xml 数据库,BaseX 等:高效存储 XML 数据,并支持 XML 内部查询语法