10年前,Eric Brewer提出著名的CAP定理,指出:一个分布式系统不可能满足一致性可用性分区容忍性这三个需求,最多只能同时满足两个。后来Seth Gilbert 和 Nancy lynch两人也证明了CAP理论的正确性,虽然在后来近十年的时间很多人对CAP理论提出了很多异议,但是在NoSQL的世界中,它还是非常有参考价值的。它的意思是,一个分布式系统不能同时满足一致性,可用性和分区容错性这三个需求,最多只能同时满足两个。

1. 一致性(Consistency):任何一个读操作总是能读取到之前完成的写操作结果,也就是在分布式环境中,多点的数据是一致的;
2. 可用性(Availability):每一个操作总是能够在确定的时间内返回,也就是系统随时都是可用的。
3. 分区容忍性(Partition Tolerance): 在出现网络分区(比如断网)的情况下,分离的系统也能正常运行。

由于一致性、可用性和分区容忍性这三方面只能选择两个,所以大多数NoSQL系统都会根据自己的设计理念来进行相应的选择,但由于许多NoSQL数据库都以水平扩展著称,所以在CAP的选择上面,都倾向于坚持分区容忍性,而放弃一致性或者可用性,它们的做法主要是通过消减关系型和事务相关的功能。

下面的具体分类是来自于Visual Guide to NoSQL Systems一文,虽然对于这块分类我个人觉得还存在一些牵强的地方,比如将能支持多种CAP配置的Dynamo和其衍生产品Cassandra归类为 AP,但是总体而言,这个分类还是相当不错,在现阶段非常具有参考价值,在每个相关的数据库后面还会介绍对应的数据模型。

关注一致性和可用性的 (CA)
这些数据库对于分区容忍性方面比较不感冒,主要采用复制(Replication)这种方式来保证数据的安全性,常见的CA系统有:
1. 传统关系型数据库,比如Postgres和MySQL等(Relational) ;
2. Vertica (Column-oriented) ;
3. Aster Data (Relational) ;
4. Greenplum (Relational) ;

关注一致性和分区容忍性的(CP)
这种系统将数据分布在多个网络分区的节点上,并保证这些数据的一致性,但是对于可用性的支持方面有问题,比如当集群出现问题的话,节点有可能因无法确保数据是一致性的而拒绝提供服务,主要的CP系统有:
1. BigTable (Column-oriented) ;
2. Hypertable (Column-oriented);
3. HBase (Column-oriented) ;
4. MongoDB (Document) ;
5. Terrastore (Document) ;
6. Redis (Key-value) ;
7. Scalaris (Key-value) ;
8. MemcacheDB (Key-value) ;
9. Berkeley DB (Key-value) ;

关于可用性和分区容忍性的(AP)
这类系统主要以实现"最终一致性(Eventual Consistency)"来确保可用性和分区容忍性,AP的系统有:
1. Dynamo (Key-value);
2. Voldemort (Key-value) ;
3. Tokyo Cabinet (Key-value) ;
4. KAI (Key-value) ;
5. Cassandra (Column-oriented) ;
6. CouchDB (Document-oriented) ;
7. SimpleDB (Document-oriented) ;
8. Riak (Document-oriented) ;

参考资料:

Visual Guide to NoSQL Systems

NoSQL数据库笔谈

NOSQL数据模型和CAP原理

如何“打败”CAP定理

Visual Guide to NoSQL Systems相关推荐

  1. 【读博客/翻译】A Visual Guide to Evolution Strategies 进化策略的视觉指南

    进化策略的视觉指南 A Visual Guide to Evolution Strategies brief 博客地址 链接 这个图首先就好有趣! Survival of the fittest.物竞 ...

  2. 云计算背后的秘密(6)-NoSQL数据库的综述

    我本来一直觉得NoSQL其实很容易理解的,我本身也已经对NoSQL有了非常深入的研究,但是在最近准备YunTable的Chart的时候,发现NoSQL不仅非常博大精深,而且我个人对NoSQL的理解也只 ...

  3. MongoDB最佳实践(转)

    将MongoDB加入到我们的服务支持列表中,是整个团队年初工作计划中的首要任务.但我们感觉如果先添加一项对NoSQL存储的支持,而不是先升级已支持的关系型数据库,可能对用户不太好,毕竟目前的用户都使用 ...

  4. 程序员练级攻略(2018)-陈皓-笔记整理

    程序员练级攻略(2018)     开篇词     入门篇         零基础启蒙         正式入门     修养篇         程序员修养     专业基础篇         编程语 ...

  5. Important Programming Concepts (Even on Embedded Systems) Part V: State Machines

    Earlier articles in this series: Part I: Idempotence Part II: Immutability Part III: Volatility Part ...

  6. 2019 6月编程语言_今年六月您可以开始学习650项免费的在线编程和计算机科学课程...

    2019 6月编程语言 Seven years ago, universities like MIT and Stanford first opened up free online courses ...

  7. 夏天和空调_您可以在今年夏天开始学习650项免费的在线编程和计算机科学课程...

    夏天和空调 Seven years ago, universities like MIT and Stanford first opened up free online courses to the ...

  8. 计算机类免费电子书共享

    列表最早来自stackoverflow上的一个问题:List of freely available programming books 现在在github上进行维护:free-programming ...

  9. 神经科学如何影响人工智能?看DeepMind在NeurIPS2020最新《神经科学人工智能》报告,126页ppt...

    来源:专知 Jane Wang是DeepMind神经科学团队的一名研究科学家,研究元强化学习和受神经科学启发的人工智能代理.她的背景是物理.复杂系统.计算和认知神经科学. Kevin Miller是D ...

最新文章

  1. Java集合类ArrayList循环中删除特定元素
  2. Ozon Tech Challenge 2020 (Div.1 + Div.2) F. Kuroni and the Punishment 随机化
  3. 内推 | 旷视研究院深度学习实习生招聘(含内推邮箱)
  4. oracle重新生成控制文件,Oracle重建控制文件的语法
  5. SQLPro for SQLite for Mac(数据库管理软件)
  6. 传奇修改map地图教程_传奇地图Objects.wil与map文件的对应关系
  7. Maven 中 com.adobe.blazeds 的配置失效解决方案
  8. 形容计算机网络教室的成语,形容教育的成语
  9. 电脑数据误删除了怎么恢复?误删除数据恢复操作教程
  10. SPSS Statistics 分位数回归 翻译文档
  11. tibco rv java实例_java – 我不允许使用Tibco Rendezvous确认消息的任何原因?
  12. 卓文萱在北京净万家像街头卖艺似的骗子粉丝做公益绯闻男友辰亦儒看不惯假惺惺模样破口大骂
  13. 基本的LC串联和并联振荡电路分析
  14. 阿里安全研究员路全:如何运用AI对抗“数据污染”?
  15. GPS定位中的误差源及解决方法
  16. 世界级3D渲染大赛TOP3大佬们的制作流程大揭秘!
  17. 关于vue项目的seo问题
  18. LOAM_Livox小结
  19. 【夏季美女们穿的“清凉”容易引男生的狼眼】
  20. Python正则表达式模式

热门文章

  1. 手动制作linux live,Linux下Live USB如何制作
  2. 代码讲解java_主要代码的讲解
  3. android studio cmake opencv_Mac下安装及配置OpenCV环境(Xcode)
  4. avl删除根节点图解_图解 6 种树,你心中有数吗。。。
  5. 区块链分叉如何解决_什么是分叉区块链又该如何分叉
  6. phantomjsjava_Java利用Phantomjs实现生成图片的功能
  7. 【小白学习C++ 教程】四、C++逻辑运算符、While循环和For 循环
  8. Jetpack Compose学习笔记
  9. 从Bayesian Deep Learning到Adversarial Robustness新范式
  10. NLP免费直播 | 两周详解BERT、知识图谱、对话生成、图卷积神经网络