MPP (Massively Parallel Processing),大规模并行处理
面对海量数据和计算时,采用大事化小的思路,对数据进行分割,数据分割后单独存储,数据处理消耗的资源也是相互隔开的,对于MPP数据库来讲,整个数据库由多个完全独立的数据库构成,各个拥有完整的数据存储、数据管理、数据操作能力。基于网络实现节点互联,形成一个整体对外提供服务,节点间互不干扰,即Share Nothing,不共享磁盘和计算能力。
![在这里插入图片描述](https://img-blog.csdnimg.cn/eb4a3bbe17d5451a88979805c92a3c3e.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAZXBpdG9taXplbHU=,size_17,color_FFFFFF,t_70,g_se,x_16)
Greenplum是一种基于PostgreSQL的分布式数据库。其采用Shared Nothing架构(MPP),主机,操作系统,内存,存储都是自我控制的,不存在共享。
通过将数据分布到多个节点上来实现规模数据的存储,通过并行查询处理来提高查询性能。
把小数据库组织起来,联合成一个大型数据库。将数据分片,存储在每个节点上。
每个节点仅查询自己的数据。所得到的结果再经过主节点处理得到最终结果。通过增加节点数目达到系统线性扩展。
Doris也是MPP架构。
Spark SQL应该还是算做Batching Processing, 中间计算结果需要落地到磁盘,所以查询效率没有MPP架构的引擎(如Impala)高。
MPP的短板
如果整个集群有straggler,会导致整个engine的性能下降到该straggler的能力,木桶短板,故MPP架构不适合异构的机器,要求各节点配置一样