我的用例是一个由数亿个顶点(例如100M到1B)组成的图。每个顶点都有一组10个属性,这些属性基本上是根据顶点的边的权重和相邻顶点的分数计算得出的分数。在图中添加(或删除)节点时,可能需要重新计算所有顶点的得分。这不需要实时完成,因此这绝对是一个OLAP/批处理用例。还有一些非常简单的图OLTP需求,基本上就是读取给定顶点及其相邻节点的分数。我正在尝试确定是否应该使用以下方法之一: 1- Giraph:这意味着以文件格式导出整个图,将其加载到Giraph中,然后将结果加载回用于持久化该图的任何数据存储(Neo4J、Neptune、JanusGraph、HBase、RDBMS...)。2- Tinkerpop3的GraphComputer:如果我理解正确的话,我可以直接在兼容Tinkerpop3的图形DB (JanusGraph,海王星,其他?)上运行OLAP图形更新算法,这样就可以用一个工具同时解决OLAP和OLTP用例,而不需要进行额外的数据导入/导出。
发布于 2018-11-22 03:04:18
如果您还没有获得所需的Graph OLAP性能,或者如果将数据移动到Spark被证明是缓慢或繁琐的,我建议您看看AnzoGraph。它是由开发Netezza和ParAccel/Redshift的同一个团队编写的。
AnzoGraph是一个大规模并行处理原生图形OLAP (GOLAP)引擎的全新C/C++高性能计算实现--即数据仓库风格、交互式或批量报告、分析和图形数据聚合。它具有非常高的性能,并且在商用计算机上呈线性扩展,因此将处理您提到的数据集(您甚至可能不需要集群来存储这种大小的数据)。在撰写本文时,它还不支持Tinkerpop/Gremlin,这可能会给您带来问题。它支持SPARQL1.1以及RDF* (属性图支持,它还不是W3C SPARQL标准的一部分),以及许多常规分析所需的附加扩展函数/聚合函数。它还支持推理、命名查询、视图、各种图形算法等
免责声明:我为剑桥语义学工作。
anzograph
https://stackoverflow.com/questions/48528301
复制相似问题