graph-databases - 将内存中的图形表示保存在数据库中

标签 graph-databases jung jgrapht

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

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

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

正在寻找输入,以便我可以尝试这些选项。谢谢。

最佳答案

这里你有几个选择:

  1. 要使用第三方面向图形的数据库(例如 Neo4J),MongoDB 是面向文档的,并且未针对图形操作进行优化)
  2. 将图表序列化以归档并将该文件存储在磁盘上

选择哪个选项取决于您,以防万一您需要应用程序内存中的所有图形 - 我建议您自己将其存储在纯文件中。 (因为您可以直接将所有图读取到内存中并使用它,而无需数据库开销),如果您只需要图的一部分,我建议使用 Neo4J 及其 API 进行图遍历。

关于graph-databases - 将内存中的图形表示保存在数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30292190/

相关文章:

mysql - Neo4j : Clarification needed about Data Size of Neo4j

c# - Gremlin,如何获取帖子和所有评论以及评论上的嵌套评论,有点像 reddit。在 C# 中

java - 在荣格中克隆图表的最佳方法是什么?

configure - Thinkaurelius Titan 配置 BerkeleyDB

graph-databases - 如何在创建 CosmosDB 图边时为其分配 ID?

java - JUNG2 - 如何设置自定义边缘颜色/厚变压器

java - 创建一个 DelegateForest 并以预先确定的顺序显示它

java - 错误 "illegalArgumentException: no such vertex in graph"但 vertexSet() 返回顶点

java - 从二分匹配访问边集合<>中的元素

java - 这看起来像是查找图中没有出边的顶点的有效方法(JGraphT)吗?