这是我参与「第四届青训营 」笔记创作活动的的第2天
今天没有安排课程,我学习了参考资料提到的 CMU 15-445课程中的有关 分布式数据库 的内容。
注:图1来源于cmu官网课程ppt
什么是分布式数据库?
我的理解: 一个数据库被多台物理设备分管,这些设备一般在不同的地方,一台设备可被抽象为一个结点。数据不由某台设备完全存储,而是每台设备存储一部分数据。 当需要读取数据的时候,如下图所示:
图1 分布式数据库获取数据
如果符合要求,就在该结点获取,否则可以以它为跳板,一步步到达所需结点。
分布式系统的一个很重要的特性是 容错性,我认为这可理解为:就算某个结点出了问题,只要其他结点还在正常工作,就不会让整个系统垮掉。
并行数据库和分布式数据库的区别?
| 并行数据库 | 分布式数据库 |
|---|---|
| 结点(物理设备)距离很近 | 结点之间可以相隔很远 |
| 在局域网内 | 公网 |
| 通信成本可忽略 | 结点崩溃、丢包等通信问题不可忽略 |
分布式数据库的设计理念
- 同一条SQL语句,在单节点系统上地运行效果应与分布式系统上的保持一致。 因为系统应该向用户隐藏一些底层细节,比如数据存储在哪里?是如何被分割或复制的?
- 同时,分布式系统必须明确的问题有以下几个:
- 如何让应用程序找到数据?
- 如何执行查询?比如 对于数据与查询的物理存储不一致的情况,是应该把查询语句放到数据所在的位置再执行,还是相反?
- 如何保证 正确性 ?
结点如何与所在集群交互?
有两种方案:同构结点与异构结点
图:我所理解的同构结点与异构结点的概念表示