GBase 8c分布式查询方法

GBase 8c 架构有三部分组成:
协调器(Coordinator,CN): 协调器管理和客户端的连接,对客户端发来的SQL进行解析,生产执行计划,把执行计划发到相应的数据节点进行读写操作,并将结果汇总返回给客户端。对于涉及跨 DN 的数据写操作,协调者还负责协调所有参与者进行两阶段提交。
数据节点(DataNode,DN): 数据节点是数据实际存放的节点,保存表和索引等数据库对象。数据节点接收协调器下发的读写操作,并将结果返回给协调者处理。数据节点间也可以通信,进行跨数据节点的联合查询。
全局事务管理器(Global Transaction Manager,GTM): 全局事务管理器管理全局事务号和活动事务状态,确保系统的全局一致性。


对于分布式查询,根据关联表类型的不同分为:复制表+复制表、复制表+分布表、分布表+分布表,数据落在相同 HG 上、分布表+分布表,数据落在不同 HG 上,四种情况。

复制表+复制表

image.png

  1. 应用发出查询SQL
  2. CN解析SQL,计算出SQL涉及的表均为复制表
  3. 向本HG发送SQL
  4. 获得结果返回应用

这类查询不涉及数据移动,无临时计算结果,查询性能高,支持高并发,性能线性提升。

复制表+分布表

image.png

  1. 应用发出查询数据SQL
  2. CN根据查询条件判断包含复制表和分布表,则分别向HG-1、HG-2、HG-3 查询数据,并获得每个节点上的结果
  3. 合并结果并返回

这类查询性能较高,高并发的支持不如只涉及单组情况,适用于大表的存储。

分布表+分布表

分布表+分布表的查询,分为数据落在相同HG上和不同HG上两种类型。
数据落在相同HG上:
image.png

TD1和TD2皆为分布表,以uid为分布列:

  1. CN接收到SQL后,根据集群元数据存储的分片规则,确认此次查询仅涉及HG-1
  2. 把SQL语句直接发送给HG-1,获得执行结果
  3. CN将结果返回给用户

这类查询性能高,无冗余操作,支持高并发,性能线性提升。

数据落在不同HG上:
image.png

TD1和TD2皆为分布表,以uid为分布列:

  1. CN接收到SQL后,根据集群元数据存储的分片规则,根据TD1表的分片规则,生成分布SQL语句
  2. 把SQL语句发送给HG-1数据引擎执行
  3. HG-1拉取其他HG上TD2表uid<60 的数据
  4. 进行 JOIN 查询计算
  5. HG-1 将结果返回给CN
  6. CN返回给用户

这类查询性能较差,涉及数据移动,跨节点拉数据,网络传输是瓶颈。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值