NoSQL中的分布式、容错事务
来源:互联网 发布:淘宝网掌柜热卖 编辑:程序博客网 时间:2024/05/14 09:14
本文来源于我在InfoQ中文站翻译的文章,原文地址是:http://www.infoq.com/cn/news/2015/01/distributed-fault-tolerant-nosql
5年前,术语NoSQL才刚刚开始出现,那时很多 NoSQL 数据库的版本都还不到1.0,对于CAP理论来说,众多NoSQL数据库都选择了可用性要高于一致性的做法。ACID是一个沉重的负担,而BASE则被认为是未来的发展方向。时至今日,社区已经逐渐成熟起来,一些天花乱坠的宣传也都不见了踪迹,新一轮的NoSQL数据库开始寻求重新定义我们对NoSQL的期待,随之而来的是分布式、容错事务又开始出现在了人们的视野中。
向分布式、容错事务领域的进军起始于2012年秋季,那时Google发布了Spanner数据库。Spanner是个全局分布式、容错、事务型的NoSQL数据库;这一系列属性在之前则被认为是自相矛盾的。不过,Google击碎了人们的这种误解,宣称他们已经在生产环境下使用该数据库一年多时间了。
就在Google宣布Spanner数据库的几个月后,HyperDex团队默默地发布了Warp扩展,它为HyperDex带来了分布式、容错的事务功能。这标志着对这种事务的首个开源实现的发布。趋势开始发生了转移,不过还有很长的路要走。
2013年5月,Kyle Kingsbury在RICON上谈到了Jepsen。在演讲中,Kingsbury披露了各种NoSQL数据库在各种失败情况下的一系列缺陷。甚至诸如MongoDB和Redis(一般情况下人们都认为他们可以保证一致性)这样的数据库都无法信守其承诺。Kingsbury的工作使得社区开始更多地关注于测试与形式化设计,在选择可用性优于一致性时能更好地理解这种折衷。
出于对一致性的密切关注,FoundationDB发布了其键值存储的1.0版,这是第一个拥有分布式、容错事务支持的私有NoSQL数据库。FoundationDB团队深刻理解严格测试的必要性,同时对其测试框架Lithium给予了高度评价,这使得FoundationDB能够确保ACID特性。后来他们又可以通过Jepsen对FoundationDB进行测试。
去年又涌现出了两款将支持分布式、容错事务作为设计目标的开源NoSQL数据库。CockroachDB尝试模仿Spanner的地理位置复制事务,它于去年初启动;Treode则在去年6月发布了最初的0.1版。这两个项目都认真地采取了形式化设计,并吸取了很多分布式系统的学术研究成果。
这些事务型数据库已经逐步对NoSQL世界产生了影响,我们看到一致性的NoSQL数据库正在不断改进自己的承诺。比如说,Redis就面临着持续的压力,在构建器分布式功能时要求专注于形式化设计与测试。最近,Tokutek为MonogoDB发布了其新的Ark一致性算法。Ark基于Raft协议,旨在修复MongoDB已知的一致性问题。
虽然现在还是Treode与CockroachDB的早期发展时段,但已经有不少公司在生产环境中使用了FoundationDB与HyperDex Warp。分布式、容错事务将会扎根于NoSQL,我们将会看到其产生的影响。
查看英文原文:Distributed, Fault Tolerant Transactions in NoSQL
- NoSQL中的分布式、容错事务
- GoshawkDB:一个分布式、支持事务与容错的对象存储
- .net中的分布式事务
- Percolator 中的分布式事务
- Percolator 中的分布式事务
- 分布式中的事务?
- Percolator 中的分布式事务
- Percolator 中的分布式事务
- banq 为什么大部分NoSQL不提供分布式事务?
- 分布式 Nosql
- 探究j2ee中的分布式事务
- 分布式事务中的算法,策略
- 分布式事务中的两阶段提交
- 分布式系统中的事务一致性问题
- Spring3.x中的分布式事务配置
- 分布式编程模式中的租约、事务和分布式事件机制
- 分布式-容错性,2PC
- Spark RDDs(弹性分布式数据集):为内存中的集群计算设计的容错抽象
- KVM虚拟机的安装和使用方法
- MFC调用批处理文件(.bat)
- 【Mac】Mac 您需要安装旧 Java SE 6 运行环境才能打开"idea/pycharm"
- Android MediaPlayer 常用方法介绍
- Java中abstract和interface的区别
- NoSQL中的分布式、容错事务
- 请用setBackgroundDrawable()代替setBackgroundResource()
- KVM虚拟机的安装
- SSL工作原理
- C/C++获取当前系统时间
- javascript实现限制上传文件的大小
- java web移植 遇到Project facet Java version 1.7 is not supported
- Bootstrap aggregating----Bagging
- ios学习路线图