todo:hibernate、Hbase、Neo4J
1 CAP 定理
CAP 定理指出对于一个分布式计算系统来说,不可能同时满足以下三点:
- 一致性(Consistency)
- 所有节点在同一时间具有相同的数据
- 可用性(Availability)
- 保证每个请求不管成功或者失败都有响应
- 分区容忍性(Partition tolerance)
- 系统中任意信息的丢失或失败不会影响系统的继续运作
根据 CAP 原理将 NoSQL 数据库分成了满足 CA 原则、满足 CP 原则和满足 AP 原则三大类:
- CA - 单点集群,满足一致性,可用性的系统,通常在可扩展性上不太强大。
- CP - 满足一致性,分区容忍性的系统,通常性能不是特别高。
- AP - 满足可用性,分区容忍性的系统,通常可能对一致性要求低一些。
2 BASE
BASE 是 NoSQL 数据库通常对可用性及一致性的弱要求原则:
- 基本可用(Basically Availble):指分布式系统在出现故障的时候,保证核心可用,允许损失部分可用性。
- 软状态(Soft-state)
- “Soft state” 可以理解为"无连接"的, 而 “Hard state” 是"面向连接"的
- 指允许系统中的数据存在中间状态,并认为该中间状态不会影响系统整体可用性,即允许系统不同节点的数据副本之间进行同步的过程存在时延。
- 最终一致性(Eventual Consistency)
- 最终一致性强调的是系统中所有的数据副本,在经过一段时间的同步后,最终能达到一致的状态。
- ACID 要求强一致性,通常运用在传统的数据库系统上。而 BASE 要求最终一致性,通过牺牲强一致性来达到可用性,通常运用在大型分布式系统中。
- 在实际的分布式场景中,不同业务单元和组件对一致性的要求是不同的,因此 ACID 和 BASE 往往会结合在一起使用。
3 NoSQL 数据库分类
类型 | 部分代表 | 特点 |
---|---|---|
列存储 | Hbase | 按列存储数据的。最大的特点是方便存储结构化和半结构化数据,方便做数据压缩,对针对某一列或者某几列的查询有非常大的IO优势。 |
文档存储 | MongoDB | 文档存储一般用类似json的格式存储,存储的内容是文档型的。 |
key-value存储 | MemcacheDB Redis |
不管value的格式。(Redis包含了其他功能) |
图存储 | Neo4J | 图形关系的最佳存储 |