系统中的每个节点都应该可以或许纯粹基于当地状态做出决议。如果您必要在高负载下做某事且发生故障而且必要达成协议,那么您会迷失方向。如果您担心可扩展性,那么任何迫使您达成协议的算法终极都会成为瓶颈。以此为前提。如果优先考虑可用性,我们可以让客户端将数据写入数据库的一个节点,而无需等候其他节点达成协议。如果数据库知道如何照顾节点之间的这些操作,那么我们将得到某种“终极一致性”,以换取高可用性。对于很多应用来说,这是一个令人惊讶的实用折衷。
—亚马逊首席技能官兼副总裁沃纳·沃格斯(Werner Vogels)
注意CouchDB使用多版本并发控制(MVCC)代替锁,来管理对数据库的并发访问。图3. MVCC体现没有锁定说明了MVCC和传统锁定机制之间的差异。 MVCC意味着CouchDB即使在高负载下也可以不绝全速运行。请求是并行运行的,从而充分利用了服务器必须提供的每最后一滴处理能力。
现代的关系数据库通过在幕后实施MVCC来避免锁定,但对终极用户隐藏了MVCC,要求它们协调单个行或字段的并发更改。
欢迎光临 创意电子 (https://wxcydz.cc/) | Powered by Discuz! X3.4 |