我有一个随时间变化的动态图,并且我正在使用 Jgrapht 库将图的每个实例存储在内存中
UndirectedGraph<Node, DefaultEdge> timeGraph = new SimpleGraph<Node, DefaultEdge>(DefaultEdge.class);
由于在内存中保存多个巨大的图是很密集的,我想知道是否有一种方法来存储 timeGraph
的每个实例。就像在 MongoDB(Neo4j 或任何其他)这样的数据库中一样,并在必要时将特定的图形导入到内存中;而不是在图数据库中再次构建节点和关系。
附注我尝试导出为 graphML 文件格式并每次导入,但它似乎没有帮助(由于我对子图存储的额外要求)。
customGraphMLImporter.GraphMLImport(i_timestep);
正在寻找输入,以便我可以尝试这些选项。谢谢。
最佳答案
这里你有几个选择:
- 要使用第三方面向图形的数据库(例如 Neo4J),MongoDB 是面向文档的,并且未针对图形操作进行优化)
- 将图表序列化以归档并将该文件存储在磁盘上
选择哪个选项取决于您,以防万一您需要应用程序内存中的所有图形 - 我建议您自己将其存储在纯文件中。 (因为您可以直接将所有图读取到内存中并使用它,而无需数据库开销),如果您只需要图的一部分,我建议使用 Neo4J 及其 API 进行图遍历。
关于graph-databases - 将内存中的图形表示保存在数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30292190/