技术开发 频道

达梦数据库:DM7大规模并行处理MPP框架

  【IT168 技术】为了支持海量数据存储和处理、高并发处理、高性价比、高可用性等需求,提供高端数据仓库解决方案,达梦数据库7.0版本(DM7)提供了大规模并行处理MPP架构,以极低的成本代价,为客户提供业界领先的计算性能。DM7采用完全对等无共享(share-nothing)的MPP架构,支持SQL并行处理,可自动化分区数据和并行查询,无I/O冲突。

  MPP系统工作起来就像是一台单独的计算机,由于采用自动化的并行处理,执行速度比传统的单节点数据库大大提高。

  特色

  1、大规模并行处理

  DM7的MPP架构最多可以同时部署1024个节点,采用统一的并行操作数据库引擎,由于数据分散在不同的数据库节点上,在高速的内部网络环境下,对于海量数据的并发查询可极大地减少I/O,提高查询效率。

  2、核心的MPP架构

  DM7的MPP架构提供数据存储和查询的自动化并行,插入的数据会被自动分区保存到相应的节点,查询时在各节点的数据库引擎上并行执行查询,并将所有结果数据自动汇集到主查询节点上,数据无共享、无I/O冲突。

  3、可靠的数据保护机制

  DM7提供了数据守护系统,满足用户对数据可靠性、安全性的需求,解决由于硬件故障、自然灾害等原因导致的数据库服务长时间中断问题,提高系统的可用性。MPP系统中的每个节点都可配置数据守护系统,增加节点数据的完整冗余镜像。节点和镜像节点之间可以互相转换成MPP中的工作节点。

  4、支持列存储

  在数据仓库(OLAP)、数据挖掘等查询密集型应用中可使用列存储表,在查询只需要少数几个字段的时候,能大大减少I/O,同时列存储也利于使用设计更好的压缩/解压算法,进一步减少存储空间。

  5、功能齐全

  DM7的MPP系统和单节点数据库相比,几乎没有任何功能上的限制,支持各种约束,支持触发器,支持存储过程、系统函数、复杂查询等。由于功能齐全,配置也不繁琐,从用户的体验来看,整个系统显得更加透明、简单、易用。

  6、高速数据加载

  数据加载可完全并行,所有节点可同时读取数据,然后根据散列算法,将属于自己的数据留下,将其他节点的数据通过网络直接传送给目标节点,实现高速数据加载。如图1所示:

达梦数据库:DM7大规模并行处理MPP框架
▲图1并行加载数据图

     系统框架

  DM7的MPP架构通过分布负载到多个数据库服务器主机,实现存储和处理大规模的数据,采用的是完全对等的无共享架构,每个数据库服务器称为一个EP,每个EP都是一个独立的达梦数据库。

  完全对等的无共享架构中各个EP节点的功能完全一样,用户可连接MPP系统内的任意EP节点进行数据操作。这种架构的先进性在于不需要任何主控制节点进行节点间的协调,因为随着MPP系统规模的扩大,主控制节点往往会成为系统的一个瓶颈,导致大规模并行处理的能力大打折扣。随着系统的不断扩展,完全对等的无共享架构优势更加明显。

        总体框架图

  系统总体框架如图2所示:

DM7大规模并行处理MPP框架-系统框架
▲图2DM7的MPP总体架构图

  客户端可连接任意一个EP站点进行操作,所有EP对客户来说都是对等的。图中互为镜像的节点是配置了守护进程的主备机,在主机发生故障时守护进程会自动将镜像备机切换为主机,继续提供对外服务,大大提高了系统的可用性和可靠性。

  MPP系统内每个站点只负责自身部分数据的读写,执行计划是完全并行执行,完全无I/O冲突,充分利用硬件资源,只是额外增加了数据在节点间移动的通信时间,在高速局域网内,通信时间大大缩短,更能体现大规模并行处理的优势,随着系统规模的扩大,并行支路越多,优势越明显。

  实现技术

  1、基于散列的自动数据分配

  加载数据时如何自动将数据分配到各个EP节点是保证并行查询效率的前提,如果数据分配不均匀则不能很好地体现MPP的并行处理优势。DM7采用的是基于散列的方法,即在创建一个表的时候,用户只需要简单地指定一个或多个列作为“哈希分布”键,或者默认选择表的第一列,系统会针对每个插入的数据行计算这些列的哈希值,以便确定应该将数据放在系统的哪个EP节点上。在大多数情况下,通过这种方式,可以在系统所有EP节点上实现数据的平均和平衡分配。

  2、查询执行流程

  MPP系统查询执行流程如下:

  1. 建立连接。用户连接到MPP系统内任意一个EP节点,该EP称为主EP,其余节点称为从EP节点。(主从EP不是固定不变的,在用户连接不同EP的并发情况下,一个节点可同时是主EP也是从EP,主从只是相对概念)

  2. 执行计划生成。主EP解析查询的SQL语句,生成普通的查询计划后,在合适的位置插入并行查询通讯节点,生成最终的并行查询计划

  3. 计划的分发。主EP执行计划时同时把该计划发布到所有的从EP上

  4. 计划的执行。从EP收到计划后建立和主EP的连接,并生成执行计划的环境。 所有EP通过通讯操作符协调执行的进度

  5. 返回执行结果。主EP收集所有的查询结果(包括自身数据)返回到客户端。

  3、增删改执行流程

  MPP系统插入、删除、更新的执行流程如下:

  1. 用户连接到主EP

  2. 执行计划生成。主EP解析语句,生成执行计划,其中包含的查询计划也是并行查询计划。另外还会生成一个对应的在从EP上执行的计划(MPLN)。

  3. 数据准备。主EP开始执行计划时首先把查询计划部分发布到所有的从EP上,并行执行查询,主EP收集到所有数据。

  4. 节点定位阶段。数据准备完成后,根据分布列和散列算法计算出行数据的目标节点,将MPLN以及实际数据发送到对应的EP节点,如果目标节点为本地则不发送,而是在本地直接完成操作。

  5. 从EP执行。从EP收到MPLN计划后建立和主EP的连接或找到之前已建立的连接,生成执行环境,执行实际的操作。

  6. 返回执行结果。主EP会等待所有的从EP执行完成后才会返回执行结果给客户端,只要其中有一个节点执行失败,则已经执行的节点都会回滚,保证数据的一致性,并返回错误信息给客户端。

  4、高度并行的查询计划

  MPP系统在单节点的基础上增加了三个通讯操作符,包括收集(MGAT)、分发(MDIS)、广播(MBRO)操作符,它们的作用是负责主EP和从EP,以及从EP之间的数据同步、移动。MPP系统的查询计划是在单节点普通查询计划的基础上,选择合适的位置插入通讯操作符节点,可充分利用单节点系统的查询优化机制,生成最优的查询计划。

  下面举几个典型的例子,首先简要说明以下计划中使用到的操作符名称:

  表1 例子中用到的操作符节点名称

DM7大规模并行处理MPP框架-系统框架

 

  例1:

  下图为全表扫描时插入的MGAT操作符的示例,图中EP1为客户连接的EP(称为主EP),因此EP2的MGAT数据流向EP1,EP1将所有数据收集后返回到客户端。


▲图3全表扫描并行执行计划示意图

  例2:

  下图中显示的是一个完整查询的部分查询计划,由于HLS在左儿子节点的数据上建立哈希表,右儿子节点上需要探测完整数据,因此需要在HLS的右儿子之上增加一个MDIS节点,保证每个EP执行时得到完整的数据。


▲图4哈希左半连接并行执行计划示意图

  例3:

  下图中显示的是一个完整查询的部分查询计划,用户连接EP1,由于计划中有聚集函数操作符节点AAGR(如count()函数),需要的数据流是完整的,于是增加一个MGAT作为AAGR的儿子节点收集完整数据。此时EP2的AAGR不需要再重复收集数据,而是认为儿子无数据,不做聚集操作。当EP1中AAGR完成后,通过MBRO把结果广播到EP2即可。


▲图5聚集函数并行执行计划示意图

  5、 邮件式的通信系统

  EP节点之间的消息通信和数据移动都是通过嵌入在DM数据库系统内部的MAL通信系统完成,MAL系统负责在执行查询计划的过程中在协调任务相关的节点之间高效驱动数据流,完成发送消息、移动数据、收集操作结果等功能。

  每个消息相当于一封邮件投递到对应的邮箱中,一旦收到信件,立刻通知系统从邮箱中取出信件,对信件进行处理,完成数据的整合。这种高效的通信机制有利于提高并行查询的效率,充分发挥高速网络的优势。

  6、数据守护系统

  MPP系统中对每个EP节点配置数据守护功能,对节点进行故障自动切换和恢复,满足用户对数据可靠性、安全性的需求,解决由于节点的数据库实例异常、硬件故障等原因导致的数据库服务长时间中断问题,提高了系统的可用性和可靠性。

  守护系统对MPP中单个节点进行数据镜像保护,节点和其镜像节点分别称作主机(Primary)和备机(Standby),主备机位于不同的机器上。主机发生故障后,守护系统自动将备机切换成主机加入MPP系统,替代故障主机工作。故障主机重启后,守护系统又自动将其恢复,并转换成新主机的备机,作为主机镜像。守护系统中备机还可作为只读服务器对外提供服务,实现负载均衡。

  数据守护系统是MPP系统的数据安全、可靠性的一道保障,提高了系统的可靠性,同时在MPP系统启动和恢复时还承担了各个EP节点之间的网络连接或网络重建的功能。

  架构的先进性

  目前的数据仓库解决方案通常是借助通用数据库或基于硬件的专用平台而创建,这两种方案难以从根本上解决当今社会爆发式增长的数据所面临的挑战。目前主流架构如图6所示:

DM7大规模并行处理MPP框架(4)
▲图6 主流架构图

  通用数据库主要是是针对OLTP处理功能设计的,在运行大量小规模交易查询数据时效果优秀。从结构上来说,采用了完全共享或磁盘共享架构。完全共享体系局限于单节点服务器,通常价格比较昂贵,其扩展性和性能受到相应的限制。磁盘共享体系允许系统带有多个服务器实例,这些实例与SAN或其它共享存储设备相连。这种体系需要通过一个狭窄的数据管道将所有I/O信息过滤到昂贵的共享磁盘子系统。

  与此相比,基于硬件的数据仓库平台也采用完全无共享体系。在这种体系下,通讯功能部署在一个高宽带网络互连体系上,用户通过一个主控制节点执行并行查询。该体系的一个重要优势就是每个节点都有一个通往本地磁盘的独立高速通道,不但简化了体系,还提供良好的扩展性。但这些平台所面临的困难是需要价格昂贵的专用硬件,显著增加了系统成本。

  达梦MPP的完全对等无共享体系架构结合了完全无共享体系的优点,在此基础上又前进了一步,通过软件提升处理能力,它不需要价格昂贵的专用硬件,也不采用增加主控制节点来协调所有并行处理的主从式方法,而是各个节点完全对等,更进一步简化了体系的实现,也消除了系统可能存在的主节点瓶颈问题。

  综上所述,将主流架构特点比较列于表2中:

  表2 主流架构特点比较

DM7大规模并行处理MPP框架(4)

 

  总结和展望

  达梦数据库管理软件DM7实现的MPP系统功能,为新一代数据仓库所需的大规模数据和复杂查询提供了先进的软件级解决方案,具有业界先进的架构和高度的可靠性,能帮助企业管理好数据,使之更好的服务于企业,必能推动数据依赖型企业的发展。

0
相关文章