什么是MPP数据库?

人大金仓MPP数据库的

并行查询技术原理是什么?

如何实现并行查询?性能如何?

且听以下详细分解~

01

什么是人大金仓MPP数据库?

KingbaseAnalyticsDB(简称KADB)是人大金仓为应对大数据时代海量数据分析处理的需求推出的具备高性能、高扩展能力的MPP数据库。它具有分布式集群部署、数据分片无共享存储、大规模并行处理技术(MPP)、数据分区、行列混存、数据库内压缩、MapReduce、在线扩容、内嵌数十种AI算法等技术特点,能满足当前各行业对大量数据采集、存储、挖掘及分析等多种需求的能力。

目前,该产品主要定位于数据分析类应用市场,可处理PB级甚至更大存储量的数据,并能集成多种异构数据源进行数据挖掘和分析,在处理多表连接、聚合等各类复杂查询方面也体现出了很好的性能。

▲KADB技术架构图

02

如何理解MPP数据库并行查询技术?

MPP数据库并行查询技术主要是为了提升多节点并行查询时的查询性能而设计的。

其设计思路如下:让用户的数据较均匀地分开存放在各集群计算节点上(采用哈希分布或随机分布等)——管理实例接受客户端查询请求——分析请求并生成查询计划——分发查询计划给计算实例并发查询。

以数据库中最常见的join操作为例,假如两张表的分片字段上是等值连接,则各计算节点可根据自己负责的分片数据得出查询结果(管理实例会将查询直接发给各相关计算实例执行);否则,各计算实例必须依赖于其他计算实例的数据才能完成查询。此时,就需系统在执行计划树中插入一个数据传输节点(Motion)负责在不同计算实例之间传输数据。

计算实例间的通信有3种方式:

01

基于广播的数据传输

(Broadcast Motion)

每个计算实例将自己负责的执行结果发送给其他所有计算实例;

02

基于重哈希的数据传输

(Redistribute Motion)

每个计算实例首先计算指定字段的HASH值,然后根据HASH结果将本条记录发送给对应的计算实例;

03

汇总传输

(Gather motion)

计算实例将执行结果发送给管理实例。

需要说明的是,以上3种传输方式中,前两种传输是为了保证单个计算节点查询时数据的完整性,汇总传输是为了保证返回给用户数据的完整性。

03

KADB如何保证查询最大的并行度?

KADB按照Motion操作对查询计划进行分片(Slice),再将分片后的查询计划发送给计算实例进行并行查询。此时,不同的Slice可以并行执行查询,由此实现计算实例内和计算实例间的多级并行,保证查询实现最大的并行度。

执行过程图和执行计划示意图如下图所示:

▲MPP执行过程图

▲MPP某个含有所有Motion节点的执行示意图

下面将以1个管理实例+2个计算实例的集群join操作的实际执行计划作具体说明:

create table x(x1 int, x2 int, x3 int) distributed by (x1);

create table y(y1 int, y2 int, y3 int) distributed by (y1);

insert into x values(1,2,3);

insert into x values(2,3,4),(3,4,5),(4,5,6);

insert into y values(1,2,3);

insert into y values(2,3,4),(3,4,5),(4,5,6);

注:表默认hash分布。

01

查询计划只有Gather Motion情况

select * from x join y on x1=y1;

kingbase=# explain select * from x join y on x1=y1;

QUERY PLAN

-----------------------------------------

Gather Motion (slice1)

->  Hash Join

Hash Cond: x.x1 = y.y1

->  Seq Scan on x

->  Hash

->  Seq Scan on y

当表x、y的join条件都是分布键x1、y1进行join时,因为相同值一定会hash到同一个计算实例中,因此只需每个计算实例在本地,根据本地的数据执行hashjoin,最终的结果返回给管理实例,管理实例统一收集返回给客户端即可。

02

查询计划使用Redistribute Motion情况

select * from x join y on x1=y2;

kingbase=# explain select * from x join y on x1=y2;

QUERY PLAN

------------------------------------------

Gather Motion 2:1  (slice2)

->  Hash Join

Hash Cond: y.y2 = x.x1

->  Redistribute Motion 2:2  (slice1)

Hash Key: y.y2

->  Seq Scan on y

->  Hash

->  Seq Scan on x

当表x、y的join条件不全是分布键(y2不是分布键)做join时,由于采用分布键做join表x列的x1数据已hash好,采用非分布键做join表y列的y2是随机分布的,因此每个计算实例需要根据非分布键做join表的y按照y2进行重新hash把数据分发给各节点,各节点在本地做join,也就是计划中有y表的Redistribute Motion,然后将最终结果返回给管理实例,管理实例统一收集返回给客户端。

03

查询计划使用Broadcast Motion情况

select * from x join y on x1=y2;

kingbase=# explain select * from x join y on x2=y2;

QUERY PLAN

----------------------------------------------------

Gather Motion 2:1  (slice2)

->  Hash Join

Hash Cond: x.x2 = y.y2

->  Seq Scan on x

->  Hash

->  Broadcast Motion 2:2  (slice1)

->  Seq Scan on y

当表x、y的join条件都不是分布键(x2、y2不是分布键)做join时,表x列的x2数据是随机分布的,表y列的y2也是随机分布的。

当x、y表存在小表情况,可把小表如表y的所有数据广播(Broadcast)到各节点,将每个计算实例本地表x数据和整个表y的数据做join,最终的结果返回给管理实例,管理实例统一收集返回给客户端即可。

当遇到计算实例较多,x、y数据量较大的情况,可将表x、y分别按列x2、y2进行hash,对数据进行重新分发(Redistribute)。这样一来,每个计算实例的数据都是hash后的数据,再进行本地join,将最终结果返回给管理实例,管理实例统一收集返回给客户端即可。

执行计划如下:

QUERY PLAN

--------------------------------------------

Gather Motion 2:1  (slice3)

->  Hash Join

Hash Cond: (x.x2 = y.y2)

->  Redistribute Motion 2:2  (slice1)

Hash Key: x.x2

->  Seq Scan on x

->  Hash

->  Redistribute Motion 2:2  (slice2)

Hash Key: y.y2

->  Seq Scan on y

04

KADB并行查询性能表现

应用数的增加会带来数据量的增加,相应地,对查询性能的响应速度也提出了更高的要求。在单机数据库无法满足的情况下,可采用MPP集群的并行技术提高查询响应速度,MPP数据库的性能也会随着机器数的增长得到线性提升。

以下是一个简单模拟采用MPP数据库的性能表现情况:

01

测试环境

02

应用场景

03

测试结果

测试结论:采用人大金仓MPP数据库KADB的集群技术能使查询速度随机器数量得到线性提升。

以客户为中心

人大金仓——做中国最优秀的数据管理软件与服务提供商

金仓数据库字段_技术干货 | 超实用!详解人大金仓MPP数据库并行查询技术相关推荐

  1. 如何查询当前表空间下所有实例_详解人大金仓MPP数据库并行查询技术

    什么是MPP数据库? 人大金仓MPP数据库的 并行查询技术原理是什么? 如何实现并行查询?性能如何? 且听以下详细分解~ 01 什么是人大金仓MPP数据库? KingbaseAnalyticsDB(简 ...

  2. sql 动态写入数据库字段_批处理写入,动态SQL和参数化SQL,数据库的性能如何?...

    sql 动态写入数据库字段 最有效的数据库优化之一是批处理写入. 批处理写入受大多数现代数据库和JDBC标准的一部分支持,并且受大多数JPA提供程序支持. 普通数据库访问包括在单独的数据库/网络访问中 ...

  3. sql输出带颜色的字段_表输出步骤详解

    表输出步骤常被用于将转换中的行集从内存持久化到数据库,对转换而言是行集被拿出去的感觉,故名为输出.步骤配置信息如图1所示. 图1 :表输出插件整体信息 下文依次解释各配置项的含义:1.转换步骤名称:步 ...

  4. 【技术干货】详解BGP4+的负载分担

    众所周知,BGP协议是用于自治系统AS之间的动态路由协议,早期已经发布了三个版本,分别是BGP-1.BGP-2和BGP-3:目前在ipv4时代中使用的是BGP-4版本,该版本仅仅只能用在IPV4的网络 ...

  5. 虚拟串口最大传输速率_【干货】详解RS232、RS485、RS422、串口amp;amp;握手

    RS232.RS485和RS422基础知识 一.RS232基础知识计算机与计算机或计算机与终端之间的数据传送可以采用串行通讯和并行通讯二种方式.由于串行通讯方式具有使用线路少.成本低,特别是在远程传输 ...

  6. 画世界怎么用光影_【干货】详解光影的魅力及其绘画技巧,一起打造极致炫丽的光影世界吧!...

    [光影,它能带来唯美.清新.治愈的味道,也能带来妖冶.魅惑.绚丽的感觉,谁都不能拒绝美好的光影诱惑!那么在绘画中,我们如何来表现出光影效果呢?一起来看看吧~] 我们的生活离不开光,因为有了光,我们才看 ...

  7. IPv6技术详解:基本概念、应用现状、技术实践(上篇)

    本文来自微信技术架构部的原创技术分享. 1.前言 普及IPV6喊了多少年了,连苹果的APP上架App Store也早已强制IPV6的支持,然并卵,因为历史遗留问题,即使在IPV4地址如果饥荒的情况下, ...

  8. MySQL数据库增删改查常用语句详解

    MySQL数据库增删改查常用语句详解 一 MySQL数据库表结构 1.1 常见数据类型 1.2 常用约束类型 1.3 MySQL存储引擎 二 DDL语句:数据定义语句 2.1 修改数据库密码 2.1. ...

  9. IPv6技术详解:基本概念、应用现状、技术实践(上篇)(转)

    最近在搞IPV6的项目,百度搜了下,这个还是写的很清楚,转载下, 原文是这里,https://www.cnblogs.com/imstudy/p/9056334.html 严禁转载,请告知 本文来自微 ...

最新文章

  1. 团队nabcd(校园大事件)
  2. 数据中心真能促进乡村经济吗?
  3. Google AI 教育项目今起免费开放,支持中文
  4. python launcher卸载后蓝屏_误卸载python2.4导致yum不能用后的修复
  5. 集合对偶律:分别用图文证明
  6. Ubuntu扩展触摸屏触控错位修复
  7. 时间序列的预处理之纯随机性检验
  8. 金融数据公司发展趋势小探
  9. 【AI视野·今日CV 计算机视觉论文速览 第188期】Wed, 23 Dec 2020
  10. 虚拟机 之 安装VMTools工具
  11. css radio 垂直居中显示,CSS表单元素垂直居中完美解决方案
  12. Anaconda使用conda连接网络时,出现网络错误CondaHTTPError(包括Anaconda安装与入门)
  13. 【原创】常用元器件选型目录-cayden(待续)
  14. 关于LNode 和* LinkList
  15. VMware ESXi 7.0 U2 SLIC Unlocker USB 网卡驱动集成镜像
  16. 使用Linux搭建软路由
  17. 记一次webpack优化免费邮官网 ym.163.com
  18. 超凡颖想之一【换位思考】
  19. 格雷希尔GripSeal快速密封接头G70外卡式、滑套式快速连接器型号规格
  20. 【Linux集群教程】07 块存储之 iSCSI 服务

热门文章

  1. 使用ffmpeg将mts格式视频文件转为mp4视频文件
  2. java实现debounce_Debounce
  3. debounce函数防抖
  4. html 提交form表单提交数据格式,form表单提交数据
  5. 刺客信条-【设计模式】-软件设计准则
  6. img标签的onerror事件
  7. shell脚本常用时间格式
  8. 1461:xzr请客
  9. Semtech SM712.TCT 瞬态电压抑制器(TVS)二极管
  10. 六一书单 | 童年的快乐,藏在每一本书里