技术开发 频道

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

     系统框架

  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执行完成后才会返回执行结果给客户端,只要其中有一个节点执行失败,则已经执行的节点都会回滚,保证数据的一致性,并返回错误信息给客户端。

0
相关文章