3

我的用例是几亿个顶点的图(比如 100M 到 1B)。每个顶点都有一组 10 个属性,这些属性基本上是根据顶点边缘的权重和相邻顶点的分数计算得出的分数。在图中添加(或删除)节点时,可能需要重新计算所有顶点的分数。这不需要实时完成,因此这绝对是一个 OLAP/批处理用例。还有一些非常简单的图 OLTP 要求,基本上只是读取给定顶点及其相邻节点的分数。我正在尝试确定是否应该使用以下任何一种方法: 1- Giraph:这意味着以文件格式导出整个图形,将其加载到 Giraph 中,然后将结果加载回用于持久化图形的任何数据存储(Neo4J、Neptune、JanusGraph、HBase、RDBMS...)。2- Tinkerpop3 的 GraphComputer:如果我理解正确,我可以直接在与 Tinkerpop3 兼容的图数据库(JanusGraph、Neptune 等?)上运行 OLAP 图更新算法,从而用一个工具同时解决 OLAP 和 OLTP 用例,无需进行额外的数据导入/导出。

4

1 回答 1

4

如果您还没有获得所需的 Graph OLAP 性能,或者如果将数据移动到 Spark 被证明很慢或很麻烦,我建议您看看 AnzoGraph。它是由构建 Netezza 和 ParAccel/Redshift 的同一团队编写的。

AnzoGraph 是大规模并行处理原生 Graph OLAP (GOLAP) 引擎的全新 C/C++ HPC 实现 - 即数据仓库风格的交互式或批处理报告分析和图形数据聚合。它具有非常高的性能并且可以在商用计算机上线性扩展,因此可以处理您提到的数据集(您甚至可能不需要集群来处理这种大小的数据)。在撰写本文时,它不支持 Tinkerpop/Gremlin,这对您来说可能是个问题。它确实支持 SPARQL1.1 和 RDF*(还不是 W3C SPARQL 标准的一部分的属性图支持)和许多常规分析所需的附加扩展函数/聚合函数。它还支持推理、命名查询、视图、各种图形算法等

免责声明:我为剑桥语义公司工作。

于 2018-11-21T19:04:18.217 回答