众所周知,一致性是数据最关键的属性之一。2000年,Eric Brewer教授在ACM分布式计算年会上指出了著名的CAP理论:
Brewer, E. A. 2000. Towards robust distributed systems. In Proceedings of the 19th Annual ACM Symposium on Principles of Distributed Computing (July 16-19, Portland, Oregon)
即分布式系统不可能满足一致性(C: Consistency),可用性(A: Availability)和分区容错性(P: Tolerance of network Partition)这三个需求。
<wbr></wbr>
大约两年后,Seth Gilbert 和 Nancy lynch两人证明了CAP理论的正确性:
Gilbert , S., Lynch, N. 2002. Brewer's conjecture and the feasibility of consistent, available, partition-tolerant Web services. ACM SIGACT News 33(2)
<wbr></wbr>
几种常见的一致性类型有:
- 强一致性:系统中的某个数据被成功更新(事务成功返回)后,后续任何对该数据的读取操作都得到更新后的值。这是传统关系数据库提供的一致性模型,也是关系数据库深受人们喜爱的原因之一。
- 弱一致性:系统中的某个数据被更新后,后续对该数据的读取操作得到的不一定是更新后的值,这种情况下通常有个“不一致性时间窗口”(inconsistency window)存在:即数据更新完成后在经过这个“不一致性时间窗口”,后续读取操作就能够得到更新后的值。
- 最终一致性:属于弱一致性的一种,即某个数据被更新后,如果该数据后续没有被再次更新,那么最终所有的读取操作都会返回更新后的值。
关于最终一致性,Werner Vogels提出了NWR模型(Eventually Consistent - Revisited, By Werner Vogels on December 23, 2008 12:15 AM,<wbr><wbr>http://www.allthingsdistributed.com/2008/12/eventually_consistent.html):</wbr></wbr>
- N:数据复制的份数(the number of nodes that store replicas of the data)
- W:数据更新完成前需要到达的节点数(the number of replicas that need to acknowledge the receipt of the update before the update completes)
- R:为了读取正确数据需要读取的节点数(the number of replicas that are contacted when a data object is accessed through a read operation)
Werner Vogels还写到,如果W+R > N,那么读写节点有重叠,读总是能够得到最新的数据,这就是强一致性。在传统的一主一备同步复制的关系数据库中,N=2,W=2,R=1;在非同步复制模型中,W变成1,此时W+R=N,一致性也就无法保证。
<wbr></wbr>
不过,NWR模型只代表了一类情形,例如,在传统的一主一备的非同步复制的关系数据库中,尽管N=2,W=1,R=1,如果只有主库提供服务,则一致性仍然是保证的,不过主机异常时,服务的恢复不是实时的,因此CAP理论依然适用。
<wbr></wbr>
在调研中,我们发现一些项目正在或倾向于弱一致性或最终一致性,咋看这似乎表明这些工程师偏爱弱一致性或最终一致性。然而,在经过仔细沟通和深入分析后,我们发现,这些项目采用弱一致性或最终一致性,其实是在高数据量(十几亿条记录、数TB数据)和高访问量(数千TPS、数万QPS)需求压力之下的无奈选择。如果两个系统都能满足上述高数据量和高访问量需求且成本差异不是很大,那么在强一致性和若一致性(或最终一致性)两者中他们会毫不犹豫地选择前者。
<wbr></wbr>
显而易见,作为整个系统中最为基础的部件,如果数据库的数据是弱一致,那么上层应用就不得不承受这种弱一致导致的种种后果,从上层应用的角度看,这并不是十分友善的行为。由于上述原因,我们决心在我们的海量数据库中实现与传统关系数据库相同的强一致性,因为我们相信这种强一致性不仅会简化数据库的管理,减轻数据库管理的工作量,尤其重要的是,上层应用不再需要关注数据的不一致性,应用程序也会因此而简化,并且易于开发和维护。
分享到:
相关推荐
丰富的完整性(实体完整性、参照完整性和用户定义的 完整性)大大减低了数据冗余和数据不一致的概率;二维表结构易于用户理解。关系型数 据库同样存在问题:面对用户并发性非常高的情况,磁盘读写速度跟不上;在包含...
淘宝海量数据服务平台:架构与实践
海量数据库设计与实践: 海量数据的设计原则, 以数据库的视角思考
《海量数据库解决方案》系列丛书深受广大读者的喜爱已经长达10年之久,在被誉为“圣经”的同时,它已经变成了数据库用户不可或缺的必读书籍。作者竭力探求能够让it工作者在实际工作中轻松应用并掌控的巧妙方法,...
海量数据库解决方案 海量数据库解决方案 有兴趣的人。看看吧
《海量数据库解决方案》系列丛书深受广大读者的喜爱已经长达10年之久,在被誉为“圣经”的同时,它已经变成了数据库用户不可或缺的必读书籍。作者竭力探求能够让IT工作者在实际工作中轻松应用并掌控的巧妙方法,...
《海量数据库解决方案》系列丛书深受广大读者的喜爱已经长达10年之久,在被誉为“圣经”的同时,它已经变成了数据库用户不可或缺的必读书籍。作者竭力探求能够让IT工作者在实际工作中轻松应用并掌控的巧妙方法,...
又到了找工作的时候啦,给大家上传一个最近网上很热的海量数据库的笔试、面试题
数据入库 CONTENTS 空间数据库 数据的完整性和一致性 数据入库 目录 01 空间数据库 1. 空间数据 是对现实世界中空间对象(事物)的描述,其实质是指以地球表面空间位置为参照,用来描述空间实体的位置、形状、大小...
2011年3月26日,ITPUB社区作为媒体支持,被邀请参加了在中国人民大学举行“海量数据库管理:企业面临的挑战暨中韩数据库技术交流会”。韩国著名数据库专家李华植先生演讲pdf。 用7zip解压即可
海量数据库查询海量数据库查询海量数据库查询海量数据库查询海量数据库查询
《海量数据库解决方案》系列丛书深受广大读者的喜爱已经长达10年之久,在被誉为“圣经”的同时,它已经变成了数据库用户不可或缺的必读书籍。作者竭力探求能够让it工作者在实际工作中轻松应用并掌控的巧妙方法,...
淘宝核心团队开发的海量数据库系统WASP,中文名称“黄蜂”。适应淘宝自有业务系统的特点,汲取了Hbase与google megastore的优点,实现了大规模数据的集群式高效管理。
海量数据库的查询优化及分页算法方案-DAO-Java
海量数据库ASP完美分页代码 速度超快,减轻服务器负担,支持SQL和ACCESS
主要语言:C++ ...推荐理由:一个免费的大数据分析数据库管理系统(DBMS),专为处理海量数据而设计。它提供了强大的分析功能,可用于实时查询和分析大规模数据集,帮助用户从海量数据中快速提取有价值的信息。
mysql_海量数据库的查询优化及分页算法方案.doc