2022 年了,MPP 还是当今数据库主流架构吗?

大数据从业者一定知道MPP数据库 。什么?你还不知道什么是MPP!
 
在说清楚这个问题之前,我们来聊聊常见的DBMS架构 。
 
  数据库的常见架构模式

2022 年了,MPP 还是当今数据库主流架构吗?

文章插图
 
DBMS的系统架构指定CPU可以直接访问哪些共享资源,它影响着CPU之间的协调方式以及它们在数据库中检索和存储对象的位置,常见的四种架构包括:
 
  • Shared Everything
单节点DBMS使用的就是所谓的shared everything架构,使用本地内存和存储 。
  • Shared Memory
在Shared Memory系统中,多个CPU可以共享内存,同时也共享存储 。
  • Shared Disk
在Shared Disk架构中,所有节点都有自己的专用内存,并且都可以通过网络直接读写共享存储 。这种架构常见于云原生数据库,将计算层和存储层结构,可以分别扩缩容 。
  • Shared Nothing
在Shared Nothing架构中,每个节点都有自己的CPU、内存和磁盘,节点间仅通过网络通信 。增加新节点是,DBMS必须将数据物理地移动到新节点,因此在这种架构中增加容量更加困难,灵活性较差 。然而,其优点是它可以大规模并行,并优化本地读从而实现不错的性能 。
 
  那什么是MPP呢?
 
传统关系型数据库的技术架构,尤其是 OLTP 数据库在海量数据的存储、查阅以及分析方面出现了明显的性能瓶颈 。随着分布式技术的产生和发展,出现了以 Teradata 为代表的基于专有硬件的MPP数据库,以及 Greenplum 和 Vertica 等基于普通服务器的 MPP 数据库 。
 
MPP即大规模并行处理(Massively Parallel Processing),MPP数据库是针对分析工作负载进行了优化的数据库,可以聚合和处理大型数据集 。MPP数据库往往是列式的,因此MPP数据库通常将每一列存储为一个对象,而不是将表中的每一行存储为一个对象 。这种体系结构使复杂的分析查询可以更快,更有效地处理 。
 
这些分析数据库将其数据集分布在许多节点上以处理大量数据,这些节点都有独立的磁盘存储系统和内存系统,从而使每个节点都可以执行查询的一部分 。业务数据根据数据库模型和应用特点划分到各个节点上,每台数据节点通过专用网络或者商业通用网络互相连接,彼此协同计算,作为整体提供数据库服务 。结合前文来看,我们所说的MPP数据库即采用了Shared Nothing架构 。
2022 年了,MPP 还是当今数据库主流架构吗?

文章插图
  大数据时代,MPP仍是中流砥柱?
 
针对于传统数据库,MPP数据库集群有可伸缩性、高可用、高性能、优秀的性价比、资源共享等优势,它的诞生解决了用户“数据多,很难在一台物理机器上分析数据”的难题,在21世纪的前十年,大量企业开始采用MPP驱动的新型数据库系统,MPP解决了单个SQL数据库不能存放海量数据的问题,分析MPP数据库的激增和成本下降也为数据驱动型组织提供了巨大的机会来运营和分析比以往更大的数据集,但与此同时,数据的快速增长也为体系结构带来了额外的复杂性,以Greenplum为例,它采用了Shared Nothing的MPP架构,尽管它允许用户自定义数据分布方式以提高查询性能,但它的缺点也显而易见:
 
  1. 集群规模受限 。
    架构存在“木桶效应”,单机故障会导致性能严重下降:速度变慢,或者不稳定 。无论集群规模多大,批处理的整体执行速度都由Straggler决定,其他节点上的任务执行完毕后则进入空闲状态等待Straggler,而无法分担其工作 。导致节点处理速度降低的原因多数是磁盘等硬件损坏,考虑到磁盘本身的一定故障率当集群规模达到一定程度时,故障会频繁出现使Straggler成为一个常规问题 。因此集群规模不能太大,从而使得支持数据体量有限,很难超过 PB 级别 。在数据量大的时候用户需要分库分表,使用多个集群 。
  2. 并发性能不高 。
    查询系统的设计,主要目的是提供给用户使用的,能支持的并发数越高越好 。由于MPP的“完全对称性”,即当查询开始执行时,每个节点都在并行的执行完全相同的任务,这意味着MPP支持的并发数和集群的节点数完全无关 。对单个查询来说,调用整个系统的能力会使查询结果的获取比较迅速,但同时带来较大的性能消耗,使得整个系统支持的并发数量有限,从目前企业的实际使用的经验来说,一般只能支持到几十到百左右的并发能力 。并发受限也是用户使用MPP需要分库分表的一大原因 。


    推荐阅读