当前位置:首页 » NoSQL在线教程

NoSQL介绍

什么是NoSQL?本章主要介绍了一些目前的NoSql的一些主要技术,算法和思想。同时列举了大量的现有的数据库实例。读完全篇,相信读者会对NoSQL数据库了解个大概。

本章主要介绍了一些目前的NoSql的一些主要技术,算法和思想。同时列举了大量的现有的数据库实例。读完全篇,相信读者会对NoSQL数据库了解个大概。
另外我还准备开发一个开源内存数据库galaxydb.本书也是为这个数据库提供一些架构资料。

CAPBASE和最终一致性是NoSQL数据库存在的三大基石。而五分钟法则是内存数据存储了理论依据。这个是一切的源头。

CAP


· C: Consistency 一致性

· A: Availability 可用性(指的是快速获取数据)

· P: Tolerance of network Partition 分区容忍性(分布式)


10年前,Eric Brewer教授指出了著名的CAP理论,后来Seth Gilbert 和 Nancy lynch两人证明了CAP理论的正确性。CAP理论告诉我们,一个分布式系统不可能满足一致性,可用性和分区容错性这三个需求,最多只能同时满足两个。

熊掌与鱼不可兼得也。关注的是一致性,那么您就需要处理因为系统不可用而导致的写操作失败的情况,而如果您关注的是可用性,那么您应该知道系统的read操作可能不能精确的读取到write操作写入的最新值。因此系统的关注点不同,相应的采用的策略也是不一样的,只有真正的理解了系统的需求,才有可能利用好CAP理论。

作为架构师,一般有两个方向来利用CAP理论

1 key-value存储,如Amaze Dynamo等,可根据CAP三原则灵活选择不同倾向的数据库产品。

2 领域模型 分布式缓存 存储 (Qi4jNoSql运动),可根据CAP三原则结合自己项目定制灵活的分布式方案,难度高。

我准备提供第三种方案:实现可以配置CAP的数据库,动态调配CAP

· CA:传统关系数据库

· APkey-value数据库

而对大型网站,可用性与分区容忍性优先级要高于数据一致性,一般会尽量朝着 A的方向设计,然后通过其它手段保证对于一致性的商务需求。架构设计师不要精力浪费在如何设计能满足三者的完美分布式系统,而是应该进行取舍。

不同数据对于一致性的要求是不同的。举例来讲,用户评论对不一致是不敏感的,可以容忍相对较长时间的不一致,这种不一致并不会影响交易和用户体验。而产品价格数据则是非常敏感的,通常不能容忍超过10秒的价格不一致。
 

CAP理论的证明:Brewer's CAP Theorem