CMU-15-445笔记(十一)
Parallel DBMS与Distributed DBMS的区别
- Parallel DBMS
- 资源是在物理层面上紧密相邻的
- 通过cpu总线/或者其他的内部的高速通道来互相通信
- 不同cpu的通信是可靠并且简单的
- Distributed DBMS
- 资源可以离的很远,比如一个在北京,另一个在上海
- 通过网络或者其他较慢的传输通道
- 通信通常会到来不可忽视的花费和问题
Process Model
定义了DBMS如何处理来自多个用户的并发请求,其中一个woker(可以是进程或者线程)是DBMS的某个组件,负责代表客户端 执行任务并返回结果
Process Pre Woker
每个woker都是一个进程,由OS调度
- woker使用共享内存来共享所需要的page
- 如果一个woker 崩溃了也不会影响整个数据库的运行
Process Pool
用进程池来执行,避免了每次创建进程的开销
Thread Per Worker
每个线程负责一个执行,开销更小,并且不用去管共享内存之类的事情,但是如果一个线程崩溃了,又可能会导致整个系统崩溃。多线程处理目前是用的最广的Process Model
Scheduling
由于DBMS了解本身要比OS多得多,所以基本所有的query plan都是由DBMS调度的。
Inter VS Intra Quera Parallelism
Inter Quera Parallelism是不同的queries并行执行,Intra Quera Parallelism是一个query的operations 并行执行
Inter Query Parallelism
对于只读的queries来说,实现起来比较简单,但是一旦有写入的操作,就会发生冲突
Intra Query Parallelism
多个works执行一个query,可以将其中的operators看作是一个生产者和消费者模型。例如在hash join中,可以将每个bucket的join操作分解给不同的wokers去做
Inter-Operator(Horizontal)
将完整的一个操作分解进行操作,然后用exchange operator来将处理完成的结果结合起来传给操作流的下一个操作
exchange operator并行的执行next操作来获取每个worker的结果
一个更复杂的例子
Inter-Operator(Vertical)
不同的线程来执行不同的operator,可以是每个operator对应不同的worker
Bushy Parallelism
这个相当于执行query的不同部分,这个部分可以是多个operators
I/O Parallelism
将DBMS分散放置到不同的devices中,这样达到一个并行的效果,减少disk对整个数据库速度的拖累
Mutil Disk Parallelism
将DBMS的文件放到不同的storage devices中,例如可以是RAID
Database Partitioning
有些DBMS可以允许用户指定不同数据库存放的位置。
Parationing
将一些logical table分开物理存储,理想情况下parationing应该对应用透明
Vertical Partitioning
将table的attributes分开存储,类似列式存储数据库
Horizontal Partitioning
通过设定partitioning key将table不同的segments分割开来
CMU-15-445笔记(十一)