假设我有一个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的经验?
答案 0 :(得分:8)
NetworkX python库提供了几种存储图形数据的方法:
在关系数据库中存储图形肯定是 错误的 选项,因为数据的复杂性,图形查询的复杂性,这在SQL和SQL中很难编写这些查询的表现。 Graph Databases, NOSQL and Neo4j文章详细介绍了这个问题。
但是,我认为,您应该考虑使用Neo4j。我希望经过一些调查,你会找到一种方法来适应你的需求。毕竟,Neo4j有一个lot of alternatives。
DB-engines是一个很棒的资源。有很多有用的信息,特别是,您可以将任何数据库与另一个数据库进行比较,找到最适合您的数据库。
,您可以参考此beautiful answer。
<强>更新强>
由于您使用的结构类似于JSON,因此您可以考虑使用面向JSON的数据库,例如CouchDB或MongoDB。与Neo4j相比,它们具有良好的性能和规模。
答案 1 :(得分:2)
如果您将图形数据存储在字典中,使用json.dump()将其写入json文件非常简单,并使用json.load()将其加载到内存中。或者,如果它是字典列表,您将使用json.dumps()和json.loads()。 Python文档here。
答案 2 :(得分:2)
VertexDB实现了RESTful API以提供查询工具,因此将它与python一起使用并不会有问题,因为您唯一需要的是将适当的HTTP请求写入服务器