基于现有space的图数据二次建模的问题

  • nebula 版本:3.0.2
  • 部署方式:单机
  • 安装方式:Docker
  • 是否为线上版本: N
  • 硬件信息
    • 100GB( 推荐使用 SSD)
    • 8G内存
      4 Intel(R) Core™ i7-8700 CPU @ 3.20GHz
  • 现有图库里面的数据,是我通过接入一个关系型数据库数据,导入的。里面会有很多各种关系的数据。是一个很复杂的图关系网络。
    是否有什么算法或者技术方案在现有的图库(超大数据量)的基础上,进行一个二次建模(或者叫数据筛选),例如:筛选出边某个属性大于100的所有节点和边(这个应该不能用nGQL,因为数据量会很大),筛选出一个子图(子结果)?

可以用习惯的语言的 nebula storage client 去扫全图(一个类型的边)然后在程序里做处理,再写入别的图或者是其他地方。

或者你有原数据再 nebula 之外,用大数据的工具 etl 工具直接处理也行。

我个人其实在考虑做一个 dbt 的模块去方便做这样的事儿。

scanVertex 函数里面有个 startTime 和 endTime ,这2个参数代表什么意思啊?

这个是1.x 版本时候,字段里带有版本信息的遗留字段,可以忽略

问下啊,如果只是筛选出边的某个属性这种,是否可以在数据导入的时候就做过滤呢?

如果,也可以用lookup语句来实现。

其实关键问题是最终的子图需要写入到什么地方,是写回图里吗?

数据导入的时候过滤不了,因为数据是源源不断的向图库里面写入的。
需要基于已经写入图库的数据做一个分析(筛选),不能一边接入数据,一边统计,内存扛不住,比如某个节点在此时关联了1万个边,我要基于这一万个边的多个属性,做一个排序,只要前10的边。这样对全图所有节点做一个筛选,最后每个顶点就关联了top10的边,再写入图里(写入别的地方)都行。
lookup语句做的话,图数据量太多,不行吧?

其实数据导入的时候,也是可以定义的,看你用什么方式来接入;看你是用关系型数据库,可以参考下面文档中的sentence来处理;
https://docs.nebula-graph.com.cn/3.1.0/nebula-exchange/use-exchange/ex-ug-import-from-mysql/

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