CMU15445 Lecture 22 Introduction to Distributed Databases
PARALLEL VS. DISTRIBUTED
PARALLEL(比如oracle的数据库一体机)
- 节点(机器)之间离得很近,比如放在一个机房之中
- 节点之间的数据在高速局域网(LAN)中传输
- 数据传输的花销小
DISTRIBUTED - 数据库集群的节点之间距离很远
- 节点之间通过network连接
- 数据传输的延迟很大
Distributed DBMSs
容错问题,避免单节点故障影响整个系统

System Architectures
system architecture指的是distrubuted system的内存与disk的分布,以及cpu是如何去访问这些内存与disk。architecture能够影响cpu如何去存取database中的数据

shared everything已经算不上是分布式数据库了,一般是在自己的电脑上测试集群
Shared Memory
内存与硬盘是统一的,数据库之间互相感知,这种architecture基本不用,应该这种架构的memory根本就不能叫memoery了

Shared Disk
把海量的数据存储到统一的硬盘中
存储节点(disk)与计算节点(cpu)解耦

内存中的缓存需要同步,比如一个节点修改了数据库内容,那么需要通知其他节点去读取新的内容

Shared Nothing
类似与互联网上的主机通信

如果要修改的数据在本地的话,那么修改的速度会很快
为了容错,各个节点之间也会存在数据副本

Design Issues(设计分布式数据库需要考虑哪些问题)
How does the application find data?
How should queries be executed on a distributed data? Should the query be pushed to where the data
is located?
把query发到各个节点,最后把结果汇总
Or should the data be pooled into a common location to execute the query?
把data先汇总,之后对汇总后的数据做query
How does the DBMS ensure correctness?(如何保证分布式数据库节点之间的一致性)
集群中的节点是如何交互的
- homogenous node(均一的节点),指的是每个节点的作用一致,存的内容不同,这样会使得划分更简单,但是也会更容易故障
- heterogeneous node,nodes的职责不是一样的
![]()
![]()
Partitioning Schemes
NAÏVE TABLE PARTITIONING

HORIZONTAL PARTITIONING
logically partition是指把disk切开吗?
查找时最好使用partitionKey

扩容时要重新hash


consistent hash
解决了数据库扩容时,数据重新hash的问题

需要设置副本时

LOGICAL PARTITIONING
shard disk只是逻辑上区分

PHYSICAL PARTITIONING

Distributed Concurrency Control

有两种分布式事务的处理方式
middleware方案与centralized coordinator不同之处在于不用告知middleware具体的节点号,application server对于centralized coordinator需要加锁时要告知其特定的节点号,而middleware不需要被告知,只要给它quer,它就知道如何去查找相关节点,也就是具有router的作用
decentralized 不容易处deadlock

Centralized
对于centralized的transaction处理方式,如果多个client请求centralized的coordinator,会出现并发度过大,处理不过来的问题



浙公网安备 33010602011771号