如何分布式集群环境下控制图分布并进行全局关系检索

如何分布式集群环境下控制图分布并进行全局关系检索

集群部署环境如下:

  • nebula 版本:v3.1.0
  • 部署方式:分布式
  • 安装方式:Docker
  • 是否为线上版本:N
  • 硬件信息
    • 磁盘:SSD
    • 内存: 128 GB
  • 客户端开发语言:Golang

本人按照官网使用Docker Compose部署分布式集群,成功跑起了一个伪集群,通过Nebula Console连接9669端口也能顺利进行CRUD操作,现有以下进一步需求不知道如何进行配置和处理,下面我将利用示意图解释我的问题,希望论坛各位技术支持大神和各位大佬能赐教,十分感谢!

1. 数据集情况

为快速说明问题,我用一个含有11个顶点、14条边的有向图数据集来进行示意说明(如图1)

本人实际有一份10万+体量的有向图数据集,需要分布式存储在3台服务器上,为快速说明问题,采用一份简单的有向图数据集进行示意,如下图1所示。将该图进行后处理,分割为三个子图{G1, G2, G3}。

2. 业务场景说明

  • 需要将3个子图分别独立部署在3台独立服务器上;
  • 查询时需要全局查询,即将3个子图看作一个完整的图进行关系查询;

3. 问题说明

  • 问题1:如何控制才能将子图存储到指定分布式节点机器中?(如下图2所示)

  • 问题2: 存好后如何进行全局查询?比如查询一条路径(如图3所示)

希望论坛各位技术支持大神和各位大佬能抽空赐教,十分感谢!

问题1:如何控制才能将子图存储到指定分布式节点机器中?
目前NebulaGraph是将顶点和边按照Hash的方式存储在各个partition上的。不需要自己控制图的存储。

问题2: 存好后如何进行全局查询?比如查询一条路径
对于图的查询,Nebula提供了多种语句,如:go、match等。参考官网文档

感谢您的回复,

但仍有些问题需要进一步解惑,由于数据权限约束,目前需求是将不同的子图分布在指定的分布式服务器节点中,请问有什么好的解决方案吗?

无法将子图按照指定存到某个机器上。
涉及到的点:
1)每个顶点和边是属于某个partition,一个机器可以有多个partition。
2)为了保证数据不丢失,采用了多副本存储。

感谢,有没有api或者什么方法可以控制点和边分布到指定partition?

没有。
你可以试试自己改代码。

当前没有这个接口。下一个大版本也没有计划。

我注意到neo4j 5是可以自己控制placement的,我不知道其他竞品有没有类似的功能。

你直接多搭几套不就行了嘛。

感谢提供思路指导。

我在想多部署几套作为集群节点,然后子图数据按规则分布在各个节点机器上。这样部署之后,我这边还有的需求就是通过一个网络接口进行全部图数据的查询,现有我有的初步思路如下:

部署一个路由节点,在接到查询请求后,分发给其他子节点并行查询,然后合并结果返回

您看针对这个需求是否还有更好的思路,因为不太熟悉还不知道上述初步思路如何实现 ::。

特别感谢!

你这个和neo4j 4 5思路很像, neo4j 叫 fabric + compose

此话题已在最后回复的 30 天后被自动关闭。不再允许新回复。