分布式数据库 30 讲
王磊
光大银行首席数据架构师
29144 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 34 讲
结束语 (1讲)
分布式数据库 30 讲
15
15
1.0x
00:00/00:00
登录|注册

01|什么是分布式数据库?

原因:导致差异的原因
差异:Aurora与传统分布式数据库的差异
单元化架构 + 单体数据库
代理中间件 + 单体数据库
客户端组件 + 单体数据库
关系型数据库
高可靠性
海量存储
海量并发
低延时
写多读少
差异和原因
分布式数据库的内部构成
分布式数据库的外部特性
思考题
内部视角
外部视角
什么是分布式数据库?

该思维导图由 AI 生成,仅供参考

你好,我是王磊,你也可以叫我 Ivan。
在这门课的第 1 讲,我想和你探讨一个最基本的问题:什么是分布式数据库?
回答这个问题,其实就是在给分布式数据库下定义。
分布式数据库和很多技术概念一样,没有权威机构来做这个定义,甚至对于哪些机构是权威机构,我们都很难有共识。
作为技术人员,我们常会提到一个概念,叫“事实标准”。当一个技术产品占据市场的主导位置时,它自然就成了同类产品的事实标准。例如,对于关系型数据库,可以说 Oracle 就是事实标准,因为所有数据库产品发布新版本时,都要拿自己的特性去和 Oracle 比一比。
很遗憾,分布式数据库作为一个新兴的基础软件,还没有一款产品占据“事实标准”的位置。既然没有参照,我们就自己动手,一起来定义分布式数据库这个概念吧。
由表及里、由外到内是人们认识事物的普遍规律,所以我们让也从内外部两个视角来观察。

外部视角:外部特性

外部视角,就是看看分布式数据库具备哪些特性,能解决什么问题。
通常,业务应用系统可以按照交易类型分为联机交易(OLTP)场景和联机分析(OLAP)场景两大类。OLTP 是面向交易的处理过程,单笔交易的数据量小,但是要在很短的时间内给出结果,典型场景包括购物、缴费、转账等;而 OLAP 场景通常是基于大数据集的运算,典型场景包括生成个人年度账单和企业财务报表等。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

分布式数据库是为写多读少、低延时、海量并发OLTP场景设计的关系型数据库。通过水平扩展,即增加机器数量,它提供远高于单体数据库的并发量,几乎不受单机性能限制。文章从外部视角和内部特性两个方面探讨了分布式数据库的定义。外部视角强调了分布式数据库解决的问题和适用场景,主要关注OLTP场景下的特性。内部特性则突出了分布式数据库相对于传统关系型数据库的最大差异,即海量并发处理能力。文章还介绍了分布式数据库的高可靠性需求,以及其具备海量数据存储能力的特点。此外,文章还对分布式数据库的内部构成进行了分类介绍,强调了分布式数据库将技术细节收敛到产品内部,以一个整体面对业务应用的特点。整体而言,本文通过清晰的逻辑和简洁的语言,为读者解释了分布式数据库的概念和技术特点,为进一步深入学习提供了良好的基础。文章还提到了Aurora及其同类产品,探讨了它们与传统分布式数据库的差异和原因。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《分布式数据库 30 讲》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(38)

  • 最新
  • 精选
  • 趁早
    我也不太能理解老师说的分布式数据库服务于写多读少的应用,我觉得不管是写多还是读多都可以应用分布式,关键是单体已经承担不了这么多请求了(不论读写),所以其实高并发就够了,不应该吧写多读少加入到分布式数据库的定义里面

    作者回复: 你好,之所以强调写多读少,因为写操作的负载只能是单体数据库的主节点上,是无法转移的;而读操作,如果对一致性要求不高可以转移到备节点,甚至在某些条件下还能保证一致性。就是说单体数据库可以通过一主多备解决读负载大的问题,而无需引入分布式数据库

    2020-08-12
    6
    70
  • kylexy_0817
    一直没接触过分布式关系型数据库,感觉就是把客户端或中间件的方案直接作为数据库服务端的特性组件,把分库分表做得更为自动化🙃

    作者回复: 分布式数据库和分库分表的最大区别在于,分布式数据库的使用体验是非常接近关系型数据库的,不需要应用进行额外的控制,这就降低了代码的开发难度。而分库分表方案在分布式事务和跨节点查询等方面,通常支持的都不好。

    2020-08-11
    21
  • 云dbms再分布式基础上更关注于计算存储分离后可独立扩展,甚至动态扩缩容,self-driven搞起来,更好卖了哈哈哈。当然这引发了不少问题,aurora提出了log is database的思想,降低写压力,snowflake通过建立中间分布式换存层,降低网络瓶颈等等。

    作者回复: 总结的很好,log is database是aurora类数据库的设计思想。

    2020-08-10
    15
  • 开心哥
    aurora也用到一点投票机制,6个副本,半数以上就确认写入成功。也算沾点边。但没有分片,不能多写,肯定不算分布式。

    作者回复: 你好,说的很好。不能多写,这点很关键,适用场景会有很大区别,所以这是一个重要标准。但是,因为Aurora是基于共享存储的,所以说它是分布式也不是没道理。我们定标准的目的,只是为了让学习的思路更清晰。

    2020-08-13
    2
    10
  • xy🥝
    AWS aurora,阿里polarDB,腾讯CynosDB,架构上是比较类似的,计算存储分离。 所有计算节点都访问存储节点上的同一份数据,也可以说是分布式架构的。建议老师加个餐讲讲

    作者回复: 你好,你说的很对,三款产品都是类似的架构,还有华为的Taurus。这个架构的局限是写入不能横向扩展,但对于中小型应用也够了。

    2020-08-14
    9
  • Monday
    建议老师画一张分布式数据库的全景图,后续的章节都可以在这张图上添砖加瓦,不然单节学完就是学完了而已,没有成体系,谢谢

    作者回复: 这个建议很好,我和编辑商量下,看看放在哪个部分

    2020-08-15
    6
  • 赵见跃
    老师您好,基于OLAP使用场景的分布式关系型数据库,都有哪些呀?谢谢,

    作者回复: 这个还是挺多的,最典型的是MPP架构数据库,比如Greenplum和华为的GaussDB 200,它们的内核都使用了PostgreSQL。此外,还有Vertica。OLAP不再强调事务的支持,如果弱化了对数据更新的要求,很多大数据生态的产品就都可以纳入进来,比如Clickhouse,Hive on spark,甚至Kylin都可以算是广义的OLAP分布式数据库

    2020-08-11
    3
    5
  • 万丰路甲一号
    希望老师能够讲讲交易场景下,交易代码配合分布式数据库而做出的交易补偿或者数据回放等等

    作者回复: 你好,如果需要交易代码配合做出补偿和回放,这很可能意味着它不是分布式数据库。在分布式数据库成熟前,确实有不少应用代码配合单体数据库的方式。这类应用代码也会被抽离出来形成独立的框架,如果你感兴趣,可以研究下阿里的SOFA。

    2020-08-11
    5
  • 赵赟
    从老师的措辞上来看感觉老师水平很高,相对于其它老师学术范更浓一点。

    作者回复: 谢谢:)

    2020-08-17
    4
  • qinsi
    请问OLTP中“写多读少”中的“多”和“少”是指请求的数量还是请求的大小,或是什么其他的指标呢?都说互联网应用的数据请求通常是“读多写少”,所以才会有一主多从读写分离、全量数据缓存等解决“读”的问题的扩容手段。如果说的是同一个指标的话,是不是意味着分布式数据库不适合互联网应用?

    作者回复: 你好,首先,OLTP的写多读少,是指请求数量。互联网确实可以通过通过一主多满足“读多写少”的场景,但前提是对读对一致性要求较低。而在金融场景中,很多读操作依然是无法在备库运行的,就是一致性不满足要求。所以,我觉得对互联网也不能一概而论,还是要区分场景。有关一致性的话题,我在02/03会具体讲解,你可以先看看,我们再讨论。

    2020-08-11
    4
收起评论
显示
设置
留言
38
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部