设为首页收藏本站

小牛社区-大数据学习交流社区|大数据免费学习资源

 找回密码
 立即注册!

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 105|回复: 0

阿里巴巴大数据架构师解析:Greenplum hash分布算法

[复制链接]

120

主题

0

帖子

16

积分

吃土小白

Rank: 1

积分
16
发表于 2018-1-9 19:54:10 | 显示全部楼层 |阅读模式

如何 PostgreSQL , hash , cdbhash , 一致性hash算法 背景 Greenplum,如果从master节点写入数据的话,写入性能实际上是比较差的,但是我们可以直接连数据节点来写入: 《让greenplum的oltp性能飞起来》 这种用法需要客户端从master获取gp_segment_configuration,同时需要获取表的分布键,同时需要使用cdbhash算法算出记录应该写入哪个segment节点,这种方法不保证全局一致性,建议选择场景使用。


工程师
PostgreSQL , hash , cdbhash , 一致性hash算法

背景
Greenplum,如果从master节点写入数据的话,写入性能实际上是比较差的,但是我们可以直接连数据节点来写入:
《让greenplum的oltp性能飞起来》
这种用法需要客户端从master获取gp_segment_configuration,同时需要获取表的分布键,同时需要使用cdbhash算法算出记录应该写入哪个segment节点,这种方法不保证全局一致性,建议选择场景使用。
hash算法
src/backend/cdb/cdbhash.c
算出的值对应gp_segment_configuration.content.
获取GPDB集群配

content就是hash value,注意-1表示master,0开始表示segment,如果有mirror的话,content会重复,每个content id都有两条,分别表示primary 和 mirror
通过role判断当前属于什么角色,选择primary写入。
注意有MIRROR时,如果PRIMARY挂了会自动切换到MIRROR,所以建议写入时,如果发现失败,再从master获取新的gp_segment_configuration,找到对应content id的当前role=p的连接。
hostname, port表示节点的真实连接断开和主机名。

获取分布
如果gp_distribution_policy获取到的attrnums是空,表示随机分布。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册!

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册!

本版积分规则

快速回复 返回顶部 返回列表