我正在编写一个操纵某种社交网络数据的应用程序,因此理想的底层数据结构是加权有向图。我想直接对数据进行操作(和搜索),而不是先将整个图形加载到内存中并在之后进行序列化。
这可以使用标准SQL数据库或键/值存储来模拟,但效率非常低(对于我想使用的图遍历算法,例如最短路径等)。
由于谷歌搜索没有发现任何有用的结果,我只想写自己的一半,但我宁愿使用现有的解决方案(如果有的话,我错过了它),而不是重新发明轮子。该项目用于娱乐/个人研究,因此该软件必须是开源的(并且能够在Linux下运行)。
那么,有没有符合上述描述的项目?
谢谢!
答案 0 :(得分:5)
如果您使用的是Java,可以尝试http://neo4j.org/
答案 1 :(得分:2)
ODBMS怎么样? db40具有Java和.NET实现,因此都在Linux上运行。
答案 2 :(得分:0)
您还可以将图形视为节点数组。每个节点存储其兄弟节点的列表。
因此,您只需在图表中为每个节点存储1个文件即可。然后该文件的内容是它连接到的节点列表(指向自定向)。
然后您可以根据需要读取节点。
这允许您执行迭代整个树的操作,同时仅将一个节点保留在内存中。