在上一篇博客里面我们对达梦数据库的达梦DMDSC共享存储数据库集群进行了动手部署实践。本篇技术分享文章是基于Linux下达梦DMMPP集群技术原理的学习。
1、DM MPP集群简介
达梦大规模并行处理MPP(DM Massively Parallel Processing,缩写DM MPP)是基于达梦数据库管理系统研发的完全对等无共享式集群组件,支持将多个DM数据库实例组织为一个并行计算网络,对外提供统一的数据库服务。
在海量数据分析的应用场景中,经常会遇到以下问题:
- 大量的复杂查询操作需要较高的系统性能支持;
- 数据库响应能力受到硬件的束缚;
- 小型机虽然能在垂直领域提供较好的单个节点性能,但是价格较高。
为了支持上述海量数据存储和处理、高性价比等方面的需求,提供高端数据仓库解决方案,达梦数据库提供了大规模并行处理MPP架构,以极低的成本代价,为客户提供业界领先的计算性能。
2、DM MPP集群概念及技术原理
2.1 基本概念
2.1.1 执行节点EP
DM MPP系统中每一个运行的DM数据库服务器实例称为一个执行节点EP,基于数据守护的MPP环境内的备库除外。
2.1.2 主、从EP
DM MPP采用完全对等无共享架构,对整个系统来说,每个EP作用都是一样的,用户可以连接到其中的任何一个进行操作。而对每个用户会话来说,EP具有主从之分。用户会话实际连接的那个EP对该用户会话来说称为主EP,其余的EP都称为从EP。
2.1.3 数据分布
DM MPP系统中的数据分布在各EP中,支持表数据的哈希分布、随机分布、复制分布、范围分布、LIST分布类型,用户可根据应用的实际情况为表数据选择合适的分布类型。
哈希分布
哈希分布按照表定义中指定的一列或多列对行数据计算一个哈希值,再根据哈希值和哈希映射表,将该行数据分布到映射的节点上。
当表的连接查询中使用的连接键为哈希分布列时,MPP下的查询计划会进行优化,比如可能减少计划中通讯操作符个数、使用索引、对分组计划优化等,减少数据在节点间的分发,提高查询效率。
使用哈希分布时,节点间的数据是否均衡,取决于设置的哈希分布列以及表中的数据情况。当节点个数变动时,各个节点的数据需要按照新的哈希映射表重新进行分发。
随机分布
随机分布表不存在分布列,插入表数据时会按照一定的随机算法,将数据随机均衡分布到各个节点。
随机分布的优点是数据和节点间不存在映射关系。节点个数变动后,如果没有节点数据均衡的要求,可以不用对节点现有的数据进行变动。
一般来说,随机分布对于复杂查询及存在较多的节点间数据分发情况,性能不如哈希分布高。
复制分布