分布式数据库 | 青训营笔记

150 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的的第2天

今天没有安排课程,我学习了参考资料提到的 CMU 15-445课程中的有关 分布式数据库 的内容。

注:图1来源于cmu官网课程ppt

什么是分布式数据库?

我的理解: 一个数据库被多台物理设备分管,这些设备一般在不同的地方,一台设备可被抽象为一个结点。数据不由某台设备完全存储,而是每台设备存储一部分数据。 当需要读取数据的时候,如下图所示:

image.png

图1 分布式数据库获取数据

如果符合要求,就在该结点获取,否则可以以它为跳板,一步步到达所需结点。

分布式系统的一个很重要的特性是 容错性,我认为这可理解为:就算某个结点出了问题,只要其他结点还在正常工作,就不会让整个系统垮掉。

并行数据库和分布式数据库的区别?

并行数据库分布式数据库
结点(物理设备)距离很近结点之间可以相隔很远
在局域网内公网
通信成本可忽略结点崩溃、丢包等通信问题不可忽略

分布式数据库的设计理念

  • 同一条SQL语句,在单节点系统上地运行效果应与分布式系统上的保持一致。 因为系统应该向用户隐藏一些底层细节,比如数据存储在哪里?是如何被分割或复制的?
  • 同时,分布式系统必须明确的问题有以下几个:
    • 如何让应用程序找到数据?
    • 如何执行查询?比如 对于数据与查询的物理存储不一致的情况,是应该把查询语句放到数据所在的位置再执行,还是相反?
    • 如何保证 正确性 ?

结点如何与所在集群交互?

有两种方案:同构结点异构结点

image.png

图:我所理解的同构结点与异构结点的概念表示