`

弱一致性在现实世界中到处存在

 
阅读更多

原文 http://www.jdon.com/43246 

 

DZone:弱一致性在现实世界中到处存在谈的是CAP定理和最终一致性(弱一致性:Eventual consistency)。又是一篇摆脱关系数据库阴影的檄文。大意如下:

存储类语言给了我或其他成千上百万LAMP开发者一个误导,那就是偏向于即时性一致性(高一致性:immediate consistency)模型,每次Http请求都是一个事务,每个表每一行都要立即更新,每次改变都要所有状态立即切换。

今天我们看到NoSQL数据库运动经常提到最终一致性(弱一致性),大家也在向消息队列message queue转变,或向EDA事件驱动架构异步编程模型转变。

这些概念都将程序开发带到了一个新的真实世界。

我们的数据被不同项目运行在不同服务器上,被不同的人使用,最终一致性是唯一适合这些场合的可伸缩可扩展的设计,当然我的意思不是要一个CPU支持一百万用户,而是不要让你的一个页面要等待60秒才能加载(banq注:延迟性)。

过去,所有的一切都是写在纸上的假象,至少过去几十年一直如此,即时一致性是IT人发明的,他们纸上谈兵地认为:不同组织不同地方的数据如果没有即时一致性(高一致性)几乎不可能的。

....

Amazon推荐:Amazon的商品购买模式是一个巨大的用户/产品关联矩阵,立即全部更新几乎是不可能的,每次一个商品被购买这个页面将被锁住(banq注:这可能是前段时间我在京东商城购买进入购物车后出现无法连接的问题所在)。

那么,Amazon如何在同一个时间销售数百商品同时生成带有推荐的专有页面呢?,只有一个简单办法:缓存层。

每一个缓存都是基于最终一致性,当然要排除下面情况,当缓存失效必须确定性的,缓存的最终一致性和NoSQL一致性区别是:过段时间缓存将失效,你能够缓存一个HTML页面10秒,但是CouchDB的内容总是有效,即使这个数据结果非常陈旧被丢在什么旮旯,通过CouchDB查询都能通过无等待的堵塞获得,无需再重新计算后缓存

 

Google搜索案例:相同的一致性模型适用于谷歌(和任何搜索引擎):爬虫爬行花费大量的时间,搜索结果总是与被搜索网络的当前状态不一致。

尽管2011年时的Index索引每小时更新一次,但是跨多个数据中心更新将是持续很长时间,专业词语:Google dance:当每次PageRank更新时,每个数据中心返回不同的排序的SERP结果。这些都没有妨碍google成为一个Web超级大国。

Dropbox案例:尽管Dropbox 在很多场合通过同步实现即时一致性,这样你无论使用什么设备无论在什么地方都可以保证你设备中目录文件始终一致相同的。

这种即时一致性背后隐藏了很多复杂性,象Delta压缩算法和管理冲突,以及如有局域网尽可能用局域网,其他情况用互联网等等。

Dropbox积极面对最终一致性,事务一致性将是不可能在一个大型网络如互联网上进行的,正如你的文字处理器在你每次按Ctrl+S时能够暂停一下那样,将更新发往其他设备,这些是不可能的,即时实时一致性也是不可能在一个网络分区需要网络连接的环境中实现的。

这样最后的结果是:你在编辑你的文档,当连接可用时,这些更新将被发往其他设备,有时会花费很长时间同步,特别是你有大文件上传时。


银行和钞票案例:在意大利银行之间转帐还是要花费一定的时间,你可以想象装满钞票和警察的运钞车来回忙碌,尽管很多是通过数字化网络进行,但是商业业务协议还是和以前一样,电汇当天结束,次日才真正办理。

银行转帐总是选择一个典型的数据库事务实现,如果两个账户在同一家银行也许是可能实现的,但这种情况并不普遍......

银行提供了各种日志以便钞票不会消失,但是你看到的是系统外部状态,你看到你的账户钱少了,但不知道电汇正在发生。

有时即时一致性实现需要一种创新:Paypal能够在全世界几秒内实现转帐,允许电子商务网站买卖家能够瞬间完成交易。

但是商家在接受Paypal支付时,经常告诉你:我们已经接受处理你的订单,请等待我们的处理结果,而同时他们也许正在他们仓库中寻找那个商品,在线服务并不总是和实际库存是一致的。

全文完。

相关:
当eventSourceing遇到并发和事务将变得复杂
事件与事务

 

Transactions without Transactions该文提出了传统数据库事务的问题,传统事务大部分使用数据库的ACID实现,这虽然容易,但是却不现实,因为现实中不存在这些假设的事务

作者提出使用事务过程transactional procedure替代database transaction数据库事务,通过事件驱动状态改变的原理,以事务事件的组合替代传统事务

该演讲的PPT文档:Kreuter-TransactionsWithoutTransactions.pdf



 

分享到:
评论

相关推荐

    复习思考题-数据库原理与应用(章节)答案借鉴.pdf

    9. 文件系统阶段的主要缺陷包括数据冗余、数据不一致性和数据联系弱,这些在数据库系统中得到了改善。 10. 数据控制功能是数据库系统的核心特性,包括安全性(防止未授权访问)、完整性(确保数据正确性)、并发...

    (完整word版)互联网数据库自考复习资料-(2).doc

    文件系统阶段也存在三个缺陷:数据冗余性、数据不一致性、数据联系弱。 数据库阶段的管理方式具有以下特点:采用复杂的数据模型表示数据结构、有较高的数据独立性、数据库系统为用户提供方便的用户接口、系统提供四...

    ssd7 exam2

    在ER模型中,实体代表现实世界中的对象或概念,而关系则描述了这些实体之间的联系。属性用于描述实体的特性。 ### 关系的度数 在实体关系模型中,**关系的度数**(Degree of Relationship)指的是参与该关系的实体...

    数据库原理简答题总结.pdf

    但是,文件系统也存在数据冗余性、数据不一致性、数据联系弱等缺陷。数据库阶段的管理方式通过使用复杂的数据模型来表示数据结构,并具备较高的数据独立性,为用户提供方便的用户接口以及四方面的数据控制功能。 ...

    [详细完整版]数据库复习题.doc

    3. 文件系统阶段的缺陷:在文件系统阶段,数据管理存在的问题主要是数据冗余度高(导致更新异常和插入异常),数据的不一致性(更新时难以同步),以及数据的联系弱(难以建立复杂的关系)。 4. 物理数据独立性和...

    2022年数据库系统的数据模型.ppt

    数据模型在数据库系统中起着至关重要的作用,它是现实世界数据特征抽象的工具,用于描述信息世界的概念模型和数据世界中DBMS所支持的具体模型。数据模型必须满足真实性、易理解和易实现的要求,以确保其能够准确反映...

    (完整word版)互联网数据库自考复习资料.doc

    这一阶段的主要缺陷是数据冗余性、数据不一致性和数据联系弱。 文件系统阶段的特点是数据可以长期保存在外存的磁盘上,数据的逻辑结构和物理结构有了区别,文件组织已呈多样化,数据不再属于某个特定的程序,可以...

    互联网数据库自考复习资料.doc

    文件系统阶段存在三个缺陷:数据冗余性、数据不一致性、数据联系弱。 数据库阶段的管理方式具有以下特点:采用复杂的数据模型表示数据结构,有较高的数据独立性,数据库系统为用户提供方便的用户接口,系统提供四...

    数据库设计和ER模型

    ER模型,全称为实体-关系模型,是数据库设计中用于概念建模的一种方法,它以直观的方式来描述现实世界中的数据和它们之间的关系。在这个主题中,我们将深入探讨数据库设计的核心概念以及ER模型的使用。 首先,...

    数据库原理试题库.doc

    在E-R(实体-关系)模型中,现实世界的事物特征被描述为实体的属性,选项C正确。实体代表现实世界中的对象或概念,属性则描述了实体的特性或特征。 实体-联系模型是概念数据模型的一种,它用于描述数据的逻辑结构,...

    Local linear M-estimator for random design model with dependent errors

    弱收敛(或弱一致性)通常指估计量在概率意义上趋近于真实参数,而强收敛(或强一致性)指的是估计量几乎必然地趋近于真实参数。在回归分析中,证明估计量的收敛性是检验其可靠性的关键步骤。 7. 渐进正态性...

    学生选课系统ER图 包含weak entity, sub classes 考虑到必修选修

    ER图是由实体、属性、关系以及一些特殊符号构成的图形表示,用于描绘现实世界中的实体、它们之间的关系以及这些实体的属性。在这个学生选课系统中,"实体"可能包括学生、课程、教师、班级等;"属性"则为每个实体的...

    数据库PPT2

    文件管理系统存在数据冗余、数据不一致性和弱数据联系等问题。而数据库管理阶段则引入了复杂的数据模型,如层次模型、网状模型和关系模型,以更好地表达数据结构。其中,关系模型由IBM公司的E.F.Codd在1970年提出,...

    数据库系统原理与应用教程 ch02 数据库建模-ER图.ppt

    ER图是一种用于描绘现实世界中的实体及其相互关系的可视化工具,尤其在数据库设计阶段起着至关重要的作用。 在数据库建模过程中,首先需要理解的是实体集。实体集代表现实世界中的一类对象,如书籍、作者等。实体是...

    数据库系统讲义.doc

    文件系统阶段引入了数据长期保存和文件组织多样化,但存在数据冗余、不一致性和弱联系的问题。数据库阶段则通过简洁的数据模型和数据独立性解决了这些问题,提供了数据恢复、并发控制、数据完整性和安全性等功能,并...

    数据库基础与应用数据库基础与应用.ppt

    实体是现实世界中的对象,如人员、订单等;联系描述实体之间的关系,如员工与部门之间的归属关系;属性则是实体或联系的特性,如员工的姓名、年龄等。ER(实体-关系)模型是用于表示这些概念的图形工具,有助于理解...

    数据库原理

    现实世界是客观存在的环境,信息世界是对现实世界的认知和反映,而机器世界则是信息世界在计算机中的具体实现。在这个过程中,信息世界中使用了实体、实体集、属性、实体标识符等术语,而在机器世界中则使用字段、...

    数据库简答(有答案).pdf

    在早期的文件系统阶段,存在三个主要缺陷:数据冗余、数据不一致性和数据联系弱。例如,学校的教务处、财务处和保健处各自存储学生的详细信息,造成了数据冗余。如果一个家庭搬家,需要在三个部门的文件中分别修改,...

    数据库原理有答案.doc

    ER模型是数据库设计中用于描述现实世界实体及其关系的一种图形表示。在给出的例子中,读者、书和读者借书记录是三个实体,可以通过ER图连接它们,定义读者号和书号作为键属性,以及它们之间的联系如借阅关系。 6. ...

    软件工程课件

    1. 实体与属性:在E-R图中,实体通常用矩形表示,代表现实世界中的对象或概念,如“用户”、“产品”等。实体的属性则用椭圆形表示,是描述实体特征的数据,如“用户名”、“产品ID”等。这些属性是构成数据库表的...

Global site tag (gtag.js) - Google Analytics