关系型数据库遵循 ACID 规则
要了解非关系型数据库就要先了解关系型数据库,关系型数据库遵循 ACID 规则:
- A (Atomicity):原子性:实务操作要么全部做完,要么全都不做,有错误可以回滚
- C (Consistency):一致性:一直处于一致的状态
- I (Isolation):独立性:并发的事务之间不会互相影响
- D (Durability):持久性:一旦事务提交,所做的修改会永久的保存在数据库上,不会丢失
分布式计算
优点:
- 可靠性:一台服务器系统崩溃并不影响其余服务器(容错)
- 可扩展性:可以根据需要增加更多的机器
- 资源共享:如银行,预定系统
- 灵活性:容易安装,实施,和调试
- 速度更快:分布式计算系统又多台计算机的计算能力
- 开放:本地或远程都可以访问
- 性能更高:比集中式提供更高的性能/性价比
缺点:
- 故障排除
- 软件:软件支持少
- 网络:网络基础设施的问题,如 传输问题,高负载,信息丢失等
- 安全性:开放系统的特性让分布式计算系统存在数据安全性和共享的风险
用户的个人信息,社交网络,地理位置,生成的数据和用户操作日志成倍的增加
对这些数据进行挖掘,关系型 SQL 数据库已经不适合,No SQL 却可以很好的处理
NoSQL
非关系型数据库,用于超大规模数据的存储:例如 google 和 Facebook 每天大量的用户数据
这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展
优点:
- 高扩展性
- 分布式计算
- 低成本
- 架构灵活,半结构化数据
- 没有复杂的关系
缺点:
- 没有标准化
- 有限的查询功能
- 最终一致是不直观的程序
NoSQL 分类
- 列储存,Hbase 等:针对某列或某几列的查询有 IO 优势
- 文档存储,MongoDB 等:使用类似 json 的格式存储,存储的内容是文档型的,有索引
- key-value 存储,Redis 等:通过 key 快速的查询其 value
- 图存储,New4J/FlockDB 等:图形关系的最佳存储
- 对象存储,db4o/Versant:通过类似面向对象语言的语法操作数据库,对象存储
- xml 数据库,BaseX 等:高效存储 XML 数据,并支持 XML 内部查询语法