您当前的位置:首页 > 电脑百科 > 数据库 > 百科

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

时间:2022-08-01 15:32:45  来源:  作者:偶数科技

大数据从业者一定知道MPP数据库。什么?你还不知道什么是MPP!

在说清楚这个问题之前,我们来聊聊常见的DBMS架构

数据库的常见架构模式

 

 

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架构。

大数据时代,MPP仍是中流砥柱?

 

针对于传统数据库,MPP数据库集群有可伸缩性、高可用、高性能、优秀的性价比、资源共享等优势,它的诞生解决了用户“数据多,很难在一台物理机器上分析数据”的难题,在21世纪的前十年,大量企业开始采用MPP驱动的新型数据库系统,MPP解决了单个SQL数据库不能存放海量数据的问题,分析MPP数据库的激增和成本下降也为数据驱动型组织提供了巨大的机会来运营和分析比以往更大的数据集,但与此同时,数据的快速增长也为体系结构带来了额外的复杂性,以Greenplum为例,它采用了Shared Nothing的MPP架构,尽管它允许用户自定义数据分布方式以提高查询性能,但它的缺点也显而易见:

 

  1. 集群规模受限。
    架构存在“木桶效应”,单机故障会导致性能严重下降:速度变慢,或者不稳定。无论集群规模多大,批处理的整体执行速度都由Straggler决定,其他节点上的任务执行完毕后则进入空闲状态等待Straggler,而无法分担其工作。导致节点处理速度降低的原因多数是磁盘等硬件损坏,考虑到磁盘本身的一定故障率当集群规模达到一定程度时,故障会频繁出现使Straggler成为一个常规问题。因此集群规模不能太大,从而使得支持数据体量有限,很难超过 PB 级别。在数据量大的时候用户需要分库分表,使用多个集群。

  2. 并发性能不高。
    查询系统的设计,主要目的是提供给用户使用的,能支持的并发数越高越好。由于MPP的“完全对称性”,即当查询开始执行时,每个节点都在并行的执行完全相同的任务,这意味着MPP支持的并发数和集群的节点数完全无关。对单个查询来说,调用整个系统的能力会使查询结果的获取比较迅速,但同时带来较大的性能消耗,使得整个系统支持的并发数量有限,从目前企业的实际使用的经验来说,一般只能支持到几十到百左右的并发能力。并发受限也是用户使用MPP需要分库分表的一大原因。

  3. 无法动态适应业务发展。
    MPP存算耦合的架构,不太容易满足云时代不同场景下的不同workload需求。由于其采用无共享的Shared Nothing架构,计算存储共享一个节点,每个节点有自己独立的CPU、内存、磁盘资源,互相不共享。需求动态发展,不易做好规划。在企业需要进行数据导入类的任务时,往往需要消耗比较大的IO、网络带宽,而CPU资源的使用率较低;在进行复杂查询类任务时,对CPU的资源消耗则变得非常大。因此在选择资源规格时,需要结合不同的workload分别做不同的类型选择,MPP很难满足这些需求。随着业务不停在发展,workload也不停在变化,企业也比较难提前做好规划。

  4. 扩容易影响业务连续性。
    在扩缩容的增删节点操作时,数据重分布就成为一个令人头疼的问题,它的整个操作过程会产生大量的 I/O 请求,引起正常的业务处理速度下降,影响客户的正常查询需求。随着用户数据规模增长,数据重分布过程少则需要几小时,多则需要几天,可能会对业务连续性造成一定影响。

 

典型 MPP 架构图

 

所以,MPP数据库在集群规模上是有限制的,它所支持的应用主要还是适合小集群、低并发的场景。

 

企业有没有更好的选择?

 

 

Hadoop + MPP :湖仓分体模式

 

由于新兴业务的不断产生,而MPP数据库缺乏现代分析和数据科学所需的灵活性,这时候另一门新技术——Hadoop诞生,并快速的占领了一些市场。Spark Streaming、Flink 等实时数据处理技术也让大数据平台具备了实时数据处理能力。虽然 Hadoop 逻辑上实现了计算和存储分离,但是其物理部署架构依然强调在每一个节点同时部署计算节点和存储节点,通过将计算置于存储所在的位置,利用数据本地性提升计算性能。

 

随着 Hadoop 大数据平台建设逐步推广,企业尝试将 Hadoop 用于一些非核心场景之后,发现 Hadoop 不仅性能和并发支持有限,而且事务支持弱,交付、运维成本高,事实证明Hadoop 无法替代核心数仓,并逐渐形成了其特殊的定位——数据湖。数据湖对全量的、各种类型的数据进行存储和挖掘,为数据科学家提供基于任意原始数据开发应用的敏捷性,而不必局限于数仓的数据,这是数据湖优于传统数仓之处。但数据湖却始终无法满足用户在性能、事务等方面的要求,然后很多企业开始考虑数据湖和数据仓库互补的方式。即在构建数据湖的同时,也使用MPP,湖仓各自独立部署,数据通过ETL的方式打通。

 

 

这种业内常说的 Hadoop+MPP 模式,我们称之为"湖仓分体"模式。它让湖和仓有很好的技术特性互补,但是它也会产生严重的数据孤岛问题:同一份数据在多个集群冗余存储,分体模式下的湖和仓各自形成数据孤岛;数据达到PB 级别时, Hadoop 和 MPP 集群规模受限,Hadoop和MPP本身也需要拆成多个集群;在面对高并发数据查询时,易造成业务应用崩溃。另外,湖+仓带来的复杂的实施和运维问题更让从业者头疼不已。

 

理解了前面的描述,关于企业大数据处理的需求也就显而易见了:实现数据和查询层面形成一体化架构,彻底解决实时性和并发度,以及集群规模受限、非结构化数据无法整合、建模路径冗长、数据一致性弱、性能瓶颈等问题,有效降低 IT 运维成本和数据管理的技术门槛。

 

存算分离架构 :湖仓一体模式

 

为了保证存储和计算可以独立的弹性扩展和伸缩,数据平台的设计出现了一个崭新的架构,即存算分离架构。显然,传统 MPP 和 Hadoop 都不适应这样的要求。MPP 数据库存算耦合,而 Hadoop 不得不通过计算和存储部署在同一物理集群拉近计算与数据的距离,仅在同一集群下构成逻辑存算分离。

 

要真正的解决业务的痛点,选择企业适合的湖仓产品,我们可以按照ANCHOR 标准来选型。ANCHOR 的6个首字母分别代表六大特性,:All Data Types(支持多类型数据)、Native on Cloud(云原生)、Consistency(数据一致性)、High Concurrency(超高并发)、One Copy of Data(一份数据)、Real-Time(实时T+0)。

 

国外的Snowflake、Databricks 和国内的OushuDB 就是这一代产品的突出代表,它们突破了传统 MPP 和 Hadoop 的局限性,率先实现了存算完全分离,计算和存储可部署在不同物理集群,并通过虚拟计算集群技术实现了高并发,同时保障事务支持,成为湖仓一体实现的关键技术。

 

以 OushuDB 为例,实现了存算分离的云原生架构,并通过虚拟计算集群技术在数十万节点的超大规模集群上实现了高并发,保障事务支持,提供实时能力,保证一份数据再无数据孤岛。同时,偶数科技通过首创的Omega架构(KAppa架构的下一代)保障了湖仓一体的实时性,形成了具备全实时能力的实时湖仓一体。

 

 

随着需求的演进,从上世纪60年代的数据库,到数据仓库、数据湖,到现在的湖仓一体,新产品总是在性能、功能上去解决以前从业者在业务上的痛点,我们可以说湖仓一体是数据库发展到云原生时代的必然产物。通过虚拟计算集群技术在数十万节点的超大规模集群上实现高并发,保障事务支持,提供实时能力,一份数据再无数据孤岛,新一代湖仓一体架构将是未来的发展趋势,给行业带来更大的影响。



Tags:数据库   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
向量数据库落地实践
本文基于京东内部向量数据库vearch进行实践。Vearch 是对大规模深度学习向量进行高性能相似搜索的弹性分布式系统。详见: https://github.com/vearch/zh_docs/blob/v3.3.X/do...【详细内容】
2024-04-03  Search: 数据库  点击:(9)  评论:(0)  加入收藏
如何正确选择NoSQL数据库
译者 | 陈峻审校 | 重楼Allied Market Research最近发布的一份报告指出,业界对于NoSQL数据库的需求正在持续上升。2022年,全球NoSQL市场的销售额已达73亿美元,预计到2032年将达...【详细内容】
2024-03-28  Search: 数据库  点击:(19)  评论:(0)  加入收藏
为什么数据库连接池不采用 IO 多路复用?
这是一个非常好的问题。IO多路复用被视为是非常好的性能助力器。但是一般我们在使用DB时,还是经常性采用c3p0,tomcat connection pool等技术来与DB连接,哪怕整个程序已经变成以...【详细内容】
2024-03-27  Search: 数据库  点击:(20)  评论:(0)  加入收藏
过去一年,我看到了数据库领域的十大发展趋势
作者 | 朱洁策划 | 李冬梅过去一年,行业信心跌至冰点2022 年中,红衫的一篇《适应与忍耐》的报告,对公司经营提出了预警,让各个公司保持现金流,重整团队,想办法增加盈利。这篇报告...【详细内容】
2024-03-12  Search: 数据库  点击:(37)  评论:(0)  加入收藏
让数据库和缓存数据保持一致的三种策略
如何保证缓存和数据库的一致性,这算得上是个老生常谈的话题啦,看到好多技术新人在写更新缓存数据代码,采用了非常复杂甚至“诡异”的方案,甚为不解。一、背景目前随着缓存架构方...【详细内容】
2024-02-20  Search: 数据库  点击:(45)  评论:(0)  加入收藏
MySQL数据库如何生成分组排序的序号
经常进行数据分析的小伙伴经常会需要生成序号或进行数据分组排序并生成序号。在MySQL8.0中可以使用窗口函数来实现,可以参考历史文章有了这些函数,统计分析事半功倍进行了解。...【详细内容】
2024-01-30  Search: 数据库  点击:(56)  评论:(0)  加入收藏
一篇文章,彻底理解数据库操作语言:DDL、DML、DCL、TCL
本篇文章以具体的SQL语句讲解了数据库SQL语言四大分类(数据定义语言DDL,数据操作语言DML,数据查询语言DQL,数据控制语言DCL),同时也介绍了事务控制语言TCL。最近与开发和运维讨论...【详细内容】
2024-01-30  Search: 数据库  点击:(50)  评论:(0)  加入收藏
一文读懂:什么是数据库,它到底有啥用?
提到数据库,可能很多人会很陌生。但据库其实已经渗入我们生活的方方面面,像网上购物、扫码点餐、抢红包等等应用背后都离不开数据库的支持。可以说数据库是支撑各类应用软件运...【详细内容】
2024-01-25  Search: 数据库  点击:(47)  评论:(0)  加入收藏
oracle数据库基础学习
在当今数字化时代,数据库已成为企业运营的关键要素。而Oracle数据库,作为全球领先的企业级数据库管理系统,更是备受推崇。本文将带您深入了解Oracle数据库的基础知识,帮助您从零...【详细内容】
2024-01-20  Search: 数据库  点击:(106)  评论:(0)  加入收藏
一个流行的支持超多数据库的ORM库
Sequelize 是一个流行的 Node.js ORM(对象关系映射)库,用于在 Node.js 中操作关系型数据库。它支持多种数据库系统,如 PostgreSQL、MySQL、SQLite 和 MSSQL,并提供了简单易用的 A...【详细内容】
2024-01-15  Search: 数据库  点击:(83)  评论:(0)  加入收藏
▌简易百科推荐
向量数据库落地实践
本文基于京东内部向量数据库vearch进行实践。Vearch 是对大规模深度学习向量进行高性能相似搜索的弹性分布式系统。详见: https://github.com/vearch/zh_docs/blob/v3.3.X/do...【详细内容】
2024-04-03  京东云开发者    Tags:向量数据库   点击:(9)  评论:(0)  加入收藏
原来 SQL 函数是可以内联的!
介绍在某些情况下,SQL 函数(即指定LANGUAGE SQL)会将其函数体内联到调用它的查询中,而不是直接调用。这可以带来显著的性能提升,因为函数体可以暴露给调用查询的规划器,从而规划器...【详细内容】
2024-04-03  红石PG  微信公众号  Tags:SQL 函数   点击:(7)  评论:(0)  加入收藏
如何正确选择NoSQL数据库
译者 | 陈峻审校 | 重楼Allied Market Research最近发布的一份报告指出,业界对于NoSQL数据库的需求正在持续上升。2022年,全球NoSQL市场的销售额已达73亿美元,预计到2032年将达...【详细内容】
2024-03-28    51CTO  Tags:NoSQL   点击:(19)  评论:(0)  加入收藏
为什么数据库连接池不采用 IO 多路复用?
这是一个非常好的问题。IO多路复用被视为是非常好的性能助力器。但是一般我们在使用DB时,还是经常性采用c3p0,tomcat connection pool等技术来与DB连接,哪怕整个程序已经变成以...【详细内容】
2024-03-27  dbaplus社群    Tags:数据库连接池   点击:(20)  评论:(0)  加入收藏
八个常见的数据可视化错误以及如何避免它们
在当今以数据驱动为主导的世界里,清晰且具有洞察力的数据可视化至关重要。然而,在创建数据可视化时很容易犯错误,这可能导致对数据的错误解读。本文将探讨一些常见的糟糕数据可...【详细内容】
2024-03-26  DeepHub IMBA  微信公众号  Tags:数据可视化   点击:(11)  评论:(0)  加入收藏
到底有没有必要分库分表,如何考量的
关于是否需要进行分库分表,可以根据以下考量因素来决定: 数据量和负载:如果数据量巨大且负载压力较大,单一库单一表可能无法满足性能需求,考虑分库分表。 数据增长:预估数据增长...【详细内容】
2024-03-20  码上遇见你  微信公众号  Tags:分库分表   点击:(17)  评论:(0)  加入收藏
在 SQL 中写了 in 和 not in,技术总监说要炒了我……
WHY?IN 和 NOT IN 是比较常用的关键字,为什么要尽量避免呢?1、效率低项目中遇到这么个情况:t1表 和 t2表 都是150w条数据,600M的样子,都不算大。但是这样一句查询 ↓select *...【详细内容】
2024-03-18  dbaplus社群    Tags:SQL   点击:(13)  评论:(0)  加入收藏
应对慢SQL的致胜法宝:7大实例剖析+优化原则
大促备战,最大的隐患项之一就是慢SQL,对于服务平稳运行带来的破坏性最大,也是日常工作中经常带来整个应用抖动的最大隐患,在日常开发中如何避免出现慢SQL,出现了慢SQL应该按照什...【详细内容】
2024-03-14  京东云开发者    Tags:慢SQL   点击:(13)  评论:(0)  加入收藏
过去一年,我看到了数据库领域的十大发展趋势
作者 | 朱洁策划 | 李冬梅过去一年,行业信心跌至冰点2022 年中,红衫的一篇《适应与忍耐》的报告,对公司经营提出了预警,让各个公司保持现金流,重整团队,想办法增加盈利。这篇报告...【详细内容】
2024-03-12    InfoQ  Tags:数据库   点击:(37)  评论:(0)  加入收藏
SQL优化的七个方法,你会哪个?
一、插入数据优化 普通插入:在平时我们执行insert语句的时候,可能都是一条一条数据插入进去的,就像下面这样。INSERT INTO `department` VALUES(1, '研发部(RD)', &#39...【详细内容】
2024-03-07  程序员恰恰  微信公众号  Tags:SQL优化   点击:(24)  评论:(0)  加入收藏
站内最新
站内热门
站内头条