寻找开源图形(数据结构)数据库引擎

4
我正在编写一个处理某种社交网络数据的应用程序,因此理想的底层数据结构是加权有向图。我希望直接在数据上进行操作(和搜索),而不是先将整个图加载到内存中并进行序列化。
这可以通过使用标准SQL数据库或键值存储来模拟,但这样做效率非常低(对于我想要使用的图遍历算法,例如最短路径等)。
我有些想自己编写,因为谷歌搜索没有找到任何有用的结果,但我更愿意使用现有的解决方案(如果有的话,我可能错过了它),而不是重新发明轮子。该项目是为了娱乐/个人研究,因此软件必须是开源的(最好能够在Linux下运行)。
那么,是否有符合上述描述的项目呢?
谢谢!
3个回答

5

还有其他语言的绑定(目前有:Ruby,Python,Clojure),请参见http://neo4j.org/community/languages/。 - nawroth

2

那么一个ODBMS呢?db40有Java和.NET实现,因此两者都可以在Linux上运行。


我觉得DBMS在图遍历方面也会带来很多开销(比如在百万个对象上计算页面排名),所以我并没有真正考虑过它们。我不知道db4o是否适用于Linux,谢谢您提供的信息,这可能是一个现实的选择。 - user87180

0

你也可以将图形看作节点数组。每个节点存储其兄弟节点的列表。

因此,您可以在图形中每个节点上简单地存储1个文件。然后该文件的内容是它连接到的节点列表(指向有向图)。

然后,您可以根据需要读取一个节点。

这使您能够执行诸如遍历整个树之类的操作,同时一次只保留一个节点在内存中。


是的,那是一种可能性(相当于按照您描述的方式实现自己的数据库)。说实话,我担心从磁盘读取大量小文件时的性能问题(应该先进行一些测量)。DirectedEdge(http://is.gd/l5M1)做了类似的事情(将向量存储在单独的文件中)。 - user87180
我认为如果你按照我所提到的方式进行,那么你就可以进行很多优化,比如预取连接节点。 - Brian R. Bondy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接