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分割开来

作者

xiaomaotou31

发布于

2022-05-15

更新于

2022-05-30

许可协议

评论