在数据库中保存内存中的图形表示

时间:2015-05-17 21:09:48

标签: graph-databases jung jgrapht

我有一个随时间变化的动态图表我正在使用Jgrapht库将图形的每个实例存储在内存中 UndirectedGraph<Node, DefaultEdge> timeGraph = new SimpleGraph<Node, DefaultEdge>(DefaultEdge.class);

由于在内存中保存多个巨大的图表非常密集,我想知道是否有一种方法来存储timeGraph的每个实例,就像它在MongoDB(Neo4j或任何其他)等数据库中一样必要时将特定图形导入存储器;而不是在图数据库中再次构建节点和关系。

P.S。我已经尝试导出到graphML文件格式并每次导入,但它似乎没有帮助(由于我对子图存储的额外要求)。 customGraphMLImporter.GraphMLImport(i_timestep);

寻找输入,以便我可以尝试选项。感谢。

1 个答案:

答案 0 :(得分:0)

你在这里几乎没有选择:

  1. 要使用第三方面向图形的数据库(如Neo4J),MongoDB是面向文档的,并未针对图形操作进行优化)
  2. 将图表序列化为文件并将此文件存储在磁盘上
  3. 选择哪个选项取决于您,如果您需要应用程序内存中的所有图形 - 我建议您将它自己存储在普通文件中。 (因为您可以直接将所有图形读入内存并在没有数据库开销的情况下使用它),如果您只需要部分图表,我建议使用Neo4J及其API进行图形遍历。