【问题标题】:Looking for open source graph (as in data structure) database engine [closed]寻找开源图(如数据结构)数据库引擎[关闭]
【发布时间】:2009-04-04 23:08:44
【问题描述】:

我正在编写一个处理某种社交网络数据的应用程序,因此理想的底层数据结构是加权有向图。我想直接对数据进行操作(和搜索),而不是先将整个图形加载到内存中并在之后进行序列化。

这可以使用标准 SQL 数据库或键/值存储进行模拟,但这会非常低效(对于我想使用的图遍历算法,例如最短路径等)。

由于谷歌搜索没有找到任何有用的结果,所以我有点想自己写,但我更愿意使用现有的解决方案(如果有的话,我错过了),而不是重新发明轮子。该项目是为了娱乐/个人研究,因此软件必须是开源的(并且最好能够在 Linux 下运行)。

那么,有没有符合上述描述的项目?

谢谢!

【问题讨论】:

    标签: database open-source graph-theory


    【解决方案1】:

    如果你使用 Java,你可以试试http://neo4j.org/

    【讨论】:

    【解决方案2】:

    ODBMS 呢? db40 具有 Java 和 .NET 实现,因此都可以在 Linux 上运行。

    【讨论】:

    • 我感觉 DBMS 在图遍历中也会带来很多开销(想想计算一百万个对象的 pagerank),所以我没有真正考虑过它们。我不知道 db4o 可用于 Linux,感谢您提供的信息,也许这是一个现实的选择。
    【解决方案3】:

    您还可以将图形视为节点数组。每个节点存储其兄弟节点的列表。

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

    然后你可以根据需要读入一个节点。

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

    【讨论】:

    • 是的,这是一种可能性(相当于以您描述的方式实现我自己的数据库)。 TBH 我担心从磁盘读取大量小文件时的性能(应该先做一些测量)。 DirectedEdge (is.gd/l5M1) 做了类似的事情(单独文件中的向量)。
    • 我认为,如果您按照我提到的方式进行操作,那么您可以接受很多优化,例如连接节点的预取。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-09
    • 2012-12-11
    • 2011-08-02
    • 1970-01-01
    • 2010-09-15
    • 2012-03-24
    • 1970-01-01
    相关资源
    最近更新 更多