0.写在前面
based on CMU 15-445/645 2020fall, Lecture #21 ~ Lecture #24.
1: SYSTEM ARCHITECTURE
1)SHARED Everything:非分布式系统使用。
2)SHARED Memory:多个CPU通过一个通信层去使用同一个内存。
3)SHARED Disk:CPU上运行的worker有自己的本地内存,通过通信层共享磁盘。(可以直接扩充node,cpu之间需要通信来了解当前的状态)(云架构)
4)SHARED Nothing:每个worker都在自己的“孤岛”上自己干自己的事情。每个worker都有自己的内存和磁盘。(性能好,难扩容,难确保一致性)
SHARED DISK EXAMPLE:
SHARED NOTHING EXAMPLE:
2: DESIGN ISSUES
2.1核心问题
1)应用如何找数据?
2)如何查询分布式的数据?
3)DBMS如何确保正确性?
2.2 HORIZONTAL PARTITIONING
HORIZONTAL PARTITIONING:
根据tuple的column(s) 作为依据;可以采用Hash或者Range来分区。比如可以根据地区来进行Hash,浙江省的都在一个区中。
但是这里存在一个问题:如果我们增加一个分区,需要重新进行Hash,这将极大的增加成本。基于此我们提出一个很有趣的方法:CONSISTENT HASHING。(之前在分布式的时候也见过同样的思路)
此时增加一个分区P4,只需要对P3种的进行判断即可。
如果减少一个分区,只需要按时针顺序给到下一个分区。