如何存储图表?

时间:2013-10-24 12:41:22

标签: python graph

假设我有一个Graph定义的类。

graph iowa = {.....nodes:{edges.......}}

和类似的图集。

一旦脚本在对象中运行其全部内容。

但是如何存储图形信息(包括其属性的定义)? 你把它保存在数据库表csv?

可能不满意的查询: Storing multiple graphs in Neo4J (它说newo4j一个实例一次支持一个Graph,如果你想运行多个图形,则支持一个图形下的子图)

How to store graph data in a database?

***** UPDATE *****: 关于Alexanders在下面回答可用的图形数据库,我想知道是否 有谁知道VertexDB的一个可能的分支,他们已经将这个高性能的lib导入到任何其他语言,最好是NodeJS或Python?

http://www.dekorte.com/projects/opensource/vertexdb/docs/manual.html

有没有人有使用AllegroGraph vs Neo4j的经验?

3 个答案:

答案 0 :(得分:8)

NetworkX python库提供了几种存储图形数据的方法:

  1. Serialize a graph to JSON
  2. Pickle a graph
  3. gml格式(link
  4. 存储图表
  5. 将图形写入.dot文件(link)。
  6. 在关系数据库中存储图形肯定是 错误的 选项,因为数据的复杂性,图形查询的复杂性,这在SQL和SQL中很难编写这些查询的表现。 Graph Databases, NOSQL and Neo4j文章详细介绍了这个问题。

    但是,我认为,您应该考虑使用Neo4j。我希望经过一些调查,你会找到一种方法来适应你的需求。毕竟,Neo4j有一个lot of alternatives

    DB-engines是一个很棒的资源。有很多有用的信息,特别是,您可以将任何数据库与另一个数据库进行比较,找到最适合您的数据库。

    ,您可以参考此beautiful answer

    <强>更新

    由于您使用的结构类似于JSON,因此您可以考虑使用面向JSON的数据库,例如CouchDBMongoDB。与Neo4j相比,它们具有良好的性能和规模。

答案 1 :(得分:2)

如果您将图形数据存储在字典中,使用json.dump()将其写入json文件非常简单,并使用json.load()将其加载到内存中。或者,如果它是字典列表,您将使用json.dumps()和json.loads()。 Python文档here

答案 2 :(得分:2)

VertexDB实现了RESTful API以提供查询工具,因此将它与python一起使用并不会有问题,因为您唯一需要的是将适当的HTTP请求写入服务器