[转]MPP架构

数据库构架设计中主要有Shared Everthting、Shared Nothing、和Shared Disk:html

Shared Everthting:通常是针对单个主机,彻底透明共享CPU/MEMORY/IO,并行处理能力是最差的,典型的表明SQLServer数据库

Shared Disk:各个处理单元使用本身的私有 CPU和Memory,共享磁盘系统。典型的表明Oracle Rac, 它是数据共享,可经过增长节点来提升并行处理的能力,扩展能力较好。其相似于SMP(对称多处理)模式,可是当存储器接口达到饱和的时候,增长节点并不能得到更高的性能 。服务器

Shared Nothing:各个处理单元都有本身私有的CPU/内存/硬盘等,不存在共享资源,相似于MPP(大规模并行处理)模式,各处理单元之间经过协议通讯,并行处理和扩展能力更好。典型表明DB2 DPF和hadoop ,各节点相互独立,各自处理本身的数据,处理后的结果可能向上层汇总或在节点间流转。网络

咱们常说的 Sharding 其实就是Share Nothing架构,它是把某个表从物理存储上被水平分割,并分配给多台服务器(或多个实例),每台服务器能够独立工做,具有共同的schema,好比MySQL Proxy和Google的各类架构,只需增长服务器数就能够增长处理能力和容量。架构

MPP概念

MPP即大规模并行处理(Massively Parallel Processor )。 在数据库非共享集群中,每一个节点都有独立的磁盘存储系统和内存系统,业务数据根据数据库模型和应用特色划分到各个节点上,每台数据节点经过专用网络或者商业通用网络互相链接,彼此协同计算,做为总体提供数据 库服务。非共享数据库集群有彻底的可伸缩性、高可用、高性能、优秀的性价比、资源共享等优点。elasticsearch

大规模并行处理(MPP)架构分布式

例子

Greenplum是一种基于PostgreSQL的分布式数据库。其采用shared nothing架构(MPP),主机,操做系统,内存,存储都是自我控制的,不存在共享。也就是每一个节点都是一个单独的数据库。节点之间的信息交互是经过节点互联网络实现。经过将数据分布到多个节点上来实现规模数据的存储,经过并行查询处理来提升查询性能。
这个就像是把小数据库组织起来,联合成一个大型数据库。将数据分片,存储在每一个节点上。每一个节点仅查询本身的数据。所获得的结果再通过主节点处理获得最终结果。经过增长节点数目达到系统线性扩展。oop

elasticsearch也是一种MPP架构的数据库,Presto、Impala等都是MPP engine,各节点不共享资源,每一个executor能够独自完成数据的读取和计算,缺点在于怕stragglers,遇到后整个engine的性能降低到该straggler的能力,所谓木桶的短板,这也是为何MPP架构不适合异构的机器,要求各节点配置同样。性能

Spark SQL应该仍是算作Batching Processing, 中间计算结果须要落地到磁盘,因此查询效率没有MPP架构的引擎(如Impala)高。操作系统

(原文地址:https://my.oschina.net/u/2000675/blog/1546160)

相关文章
相关标签/搜索