#gStore-weekly | gMaster功能详解之数据划分策略

gMaster的数据划分策略有4种:主宾语随机划分、谓词随机划分、主宾语WorkLoad动态划分、谓词WorkLoad动态划分。

1 框架结构

gMaster数据库基本架构采用主-从架构,主节点负责算法的实现和任务/数据分派,从节点每个节点有一个gStore实例,管理本节点的子图。

图片

对于建立数据库、增加三元组、删除三元组,主节点决定每个三元组被发送到何节点,从节点各自对自己接收的数据调用gStore相关功能来建立数据库/增加三元组/删除三元组。

图片

2  划分策略

根据三元组何部分划分为两类:根据主语宾语决定、根据谓语决定。

图片

划分节点时,1种是根据对主语、宾语、谓语计算hash值与节点数取模确认节点,1种是指定节点ID,通过ID与节点数取模确认节点。根据用户是否自定义分为两种。与前两种相乘,一共4种策略。

图片

在构建数据库时,假设我们使用主语与宾语决定的策略

Hash(<Alice>  )=Hash(<Bob>)=1

Hash(<Coral>)=2

则有

<Alice>  <Partner> <Bob> -> 1(分配到一个节点)

<Bob> <Partner>  <Coral> -> 1 & 2(分配到两个节点)

gMaster在构建数据库时,在第二步切割页面,选择划分策略:主宾语随机划分、谓词随机划分、主宾语WorkLoad动态划分、谓词WorkLoad动态划分。

主宾语随机划分:通过对三元组的主语、宾语计算hash值与节点数取模,根据模值分配到对应的文件。如果主语、宾语模值相等,该三元组只分配到一个节点。如果主语、宾语模值不相等,该三元组分配到两个节点。

谓词随机划分:通过对三元组的谓词计算hash值与节点数取模,根据模值分配到对应的节点。

主宾语WorkLoad动态划分:选择该策略时,策略配置文件栏位显示【上传】按扭,点击后,可上传自定义的策略文件。文件格式为<entity>\t{Node_id},entity为三元组主语或宾语,Node_id为节点id(数字类型),把计划分配到同一节点的节点id配置为相同。后台通过配置的节点id与节点数取模,根据模值分配到对应的节点。

谓词WorkLoad动态划分:选择该策略时,策略配置文件栏位显示【上传】按扭,点击后,可上传自定义的策略文件。文件格式为<predicate>\t{Node_id},predicate为三元组谓语,Node_id为节点id(数字类型),把计划分配到同一节点的节点id配置为相同。后台通过配置的节点id与节点数取模,根据模值分配到对应的节点。

综上所诉,WorkLoad动态划分策略需要手动配置策略文件,我们一般情况下使用随机划分策略。主宾语随机划分有数据膨胀情况,谓词随机划分在谓语较少情况下,可能导致某些节点无数据或数据分布不均匀。具体采用哪个策略需要根据实际数据情况而定。

若大家在实际项目中需要使用gMaster可联系运营同学或者发送邮件进行项目层面合作沟通。       

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值