我读了几个主题,但我迷路了。我对此很陌生。我想存储巨大的稀疏矩阵并有几个想法,但可以在它们之间进行选择。这是我的需求:
所以,这是我的想法:
请帮助我选择或提供更好的决定。
如果我在某处估计错了,请纠正我。
答案 0 :(得分:5)
混合neo4j / hbase方法可以很好地运行,其中neo4j优化了图形处理方面,而hbase实现了繁重的可扩展性 - 例如,用于存储大量额外属性。
neo4j包含节点和关系。它可能具有足够的可扩展性。我在网上对独立的非neo4j站点进行的调查在一台机器上声称多达数十亿个节点/关系,在遍历上比RDBMS提高了几个数量级。
但是..如果需要更多的可扩展性,你可以引入hbase big iron来存储非关系/节点标识符的额外属性。然后只需将hbase rowkey添加到neo4j节点信息中,以便在应用程序需要时进行查找。
答案 1 :(得分:3)
最后,我实施了第一个解决方案。
我使用PostgreSQL有两个表:一个用于带有两列的边 - 开始/结束,另一个用于具有顶点数的唯一序列和顶点描述的一些列的顶点。
我已经基于pg_advisory_xact_lock实现了upsert。它有点慢,但对我来说已经足够了。
此外,从此配置中删除顶点也很痛苦。
为了加速乘法,我将边缘表导出到文件。它甚至可以放在x64机器上的RAM中。
公平地说,数据量低于我的预期。对于1个顶点而不是5000万个顶点和平均200-300个边缘,总共只有700万个顶点和1.6亿个边缘。