Nosql理论基础:
(1)CAP理论
一个分布式系统不可能同时满足一致性(consistency)、可用性(availability)和分区容忍性(tolerance of network patition水平扩展性)
eg:
满足C&A no P:
RDBMS(关系数据库管理系统)
满足C&P no A:
Bigtable,HBase,MongoDB,Redis
满足A&P no C:
Dynamo,Cassandra
eg:
满足C&A no P:
RDBMS(关系数据库管理系统)
满足C&P no A:
Bigtable,HBase,MongoDB,Redis
满足A&P no C:
Dynamo,Cassandra
(2)BASE(够用就好)
basically available基本可用
完美的系统是不存在的,只有清晰的了解应用或者系统最重要最基本的要求,才能够对此做出取舍,从而选择合适的数据库。
(3) 最终一致性(eventual consistency)or软一致
过程松,结果紧,最终一致
(3) 最终一致性(eventual consistency)or软一致
过程松,结果紧,最终一致
- 自我一致
客户端A成功写入一条数据,他可以自己读到新的数据,其他客户端B,C则不能立即访问到(像
博客这类的应用)
- 因果一致
- 单调读一致
- 单调写一致
- 强一致性
cap鱼和熊掌不可兼得,所以完美的数据库是不存在的,于是产生了nosql。由于nosql系统中进行横向扩展是必需的,所以系统必须在可用性(base)和一致性(最终一致)上进行取舍,这三个理论构成一个环,共同奠定nosql的基础。