在数据库中保存内存中的图形表示
Saving in-memory graph representation in database
我有一个随时间变化的动态图,我正在使用 Jgrapht 库使用
将图的每个实例存储在内存中
UndirectedGraph<Node, DefaultEdge> timeGraph = new SimpleGraph<Node, DefaultEdge>(DefaultEdge.class);
由于在内存中保存多个巨大的图形非常密集,我想知道是否有办法像 MongoDB 这样的数据库中一样存储 timeGraph
的每个实例(Neo4j 或其他)并在必要时将特定图形导入内存;而不是在图形数据库中再次构建节点和关系。
P.S。我尝试导出为 graphML 文件格式并每次都导入,但它似乎没有帮助(由于我对子图存储的额外要求)。
customGraphMLImporter.GraphMLImport(i_timestep);
正在寻找输入以便我可以尝试这些选项。谢谢
您在这里没有几个选择:
- 要使用第 3 方面向图形的数据库(如 Neo4J),MongoDB 是面向文档的并且未针对图形操作进行优化)
- 将您的图表序列化以归档并将此文件存储在磁盘上
选择哪个选项取决于您,以防万一您的应用程序内存中需要所有图形 - 我建议您自己将其存储在普通文件中。 (因为您可以直接将所有图表读入内存并使用它而无需数据库开销),如果您只需要部分图表,我建议使用 Neo4J 及其 API 进行图表遍历。
我有一个随时间变化的动态图,我正在使用 Jgrapht 库使用
将图的每个实例存储在内存中
UndirectedGraph<Node, DefaultEdge> timeGraph = new SimpleGraph<Node, DefaultEdge>(DefaultEdge.class);
由于在内存中保存多个巨大的图形非常密集,我想知道是否有办法像 MongoDB 这样的数据库中一样存储 timeGraph
的每个实例(Neo4j 或其他)并在必要时将特定图形导入内存;而不是在图形数据库中再次构建节点和关系。
P.S。我尝试导出为 graphML 文件格式并每次都导入,但它似乎没有帮助(由于我对子图存储的额外要求)。
customGraphMLImporter.GraphMLImport(i_timestep);
正在寻找输入以便我可以尝试这些选项。谢谢
您在这里没有几个选择:
- 要使用第 3 方面向图形的数据库(如 Neo4J),MongoDB 是面向文档的并且未针对图形操作进行优化)
- 将您的图表序列化以归档并将此文件存储在磁盘上
选择哪个选项取决于您,以防万一您的应用程序内存中需要所有图形 - 我建议您自己将其存储在普通文件中。 (因为您可以直接将所有图表读入内存并使用它而无需数据库开销),如果您只需要部分图表,我建议使用 Neo4J 及其 API 进行图表遍历。