分布式数据库30讲
王磊
光大银行首席数据架构师
立即订阅
1219 人已学习
课程目录
已更新 3 讲 / 共 33 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词|为什么要学习分布式数据库?
免费
基础篇 (2讲)
01|什么是分布式数据库?
02|强一致性:那么多数据一致性模型,究竟有啥不一样?
分布式数据库30讲
15
15
1.0x
00:00/00:00
登录|注册

02|强一致性:那么多数据一致性模型,究竟有啥不一样?

王磊 2020-08-12
你好,我是王磊,你也可以叫我 Ivan。
我们经常会听到说,分布式数据库的一个优势在于,它能够支持 NoSQL 做不到的强一致性。你怎么看待这件事儿呢?
显然,要来分析这个问题,我们首先得明白“强一致性”意味着什么。
我也问过很多身边的朋友,他们的答案都不太一样。有人说,只要使用了 Paxos 或者 Raft 算法,就可以实现强一致性;也有人说,根据 CAP 原理只能三选二,分区容忍性和高可用性又是必不可少的,所以分布式数据库是做不到强一致性的。可是,这些观点或多或少都是有问题的。
那么,今天我们就来讲讲什么是“强一致性”。
一直以来,在“分布式系统”和“数据库”这两个学科中,一致性(Consistency)都是重要概念,但它表达的内容却并不相同。
对于分布式系统而言,一致性是在探讨当系统内的一份逻辑数据存在多个物理的数据副本时,对其执行读写操作会产生什么样的结果,这也符合 CAP 理论对一致性的表述。
而在数据库领域,“一致性”与事务密切相关,又进一步细化到 ACID 四个方面。其中,I 所代表的隔离性(Isolation),是“一致性”的核心内容,研究的就是如何协调事务之间的冲突。
因此,当我们谈论分布式数据库的一致性时,实质上是在谈论数据一致性事务一致性两个方面。这一点,从 Google Spanner 对其外部一致性(External Consistency)的论述中也可以得到佐证。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《分布式数据库30讲》,如需阅读全部文章,
请订阅文章所属专栏新⼈⾸单¥19.9
立即订阅
登录 后留言

精选留言(4)

  • 叫我皮卡丘
    我认为是数据的一致性依靠paxos,raft等一致性算法来保证
    2020-08-12
    1
  • 感觉很长一段时间都被翻译给耽误了,ACID的C是一致性,强调的是数据的状态变迁的特性,CAP里的C共识,强调的是多副本条件下,多个节点怎么就数据的变动,达成共识,统一修改。
    而paxos,raft是在牺牲一定A的条件下(多数节点存活才ok),实现C的一种多节点的通信协议,Paxos貌似不需要主节点这个角色去统一时序,Raft,zab需要主节点,它们都是实现线性一致性的方式。
    2020-08-12
  • 扩散性百万咸面包
    强一致性和弱一致性的定义感觉还是不够准确。
    1. MySQL这个例子是全同步复制,实际上Raft也是强一致性算法,但它在应答客户端的请求成功后并不保证多副本之间暂时的数据一致性,有可能数据存在不同。只不过在收到读请求的时候会转发给Master,保证强一致性。

    2. 弱一致性是说有可能不同用户看到的state不一样,而不仅仅是副本之间数据不一致。可能A先比B发起请求,但是是B的修改却被A覆盖了
    如果按作者的
    2020-08-12
  • 扩散性百万咸面包
    Paxos本质上是共识算法,主要是用来维护数据库副本的一致性/权威性。而今天讲的一致性是从用户角度来谈,而不局限于是数据副本。
    同时,今天讲的一致性也需要共识算法Paxos,Raft来保证。比如选举,如何才能选出正确的Leader等等。
    2020-08-12
收起评论
4
返回
顶部