【问题标题】:How to compute connected components in OrientDB如何在 OrientDB 中计算连通分量
【发布时间】:2015-08-21 14:47:24
【问题描述】:

OrientDB 是否支持connected components 的高效计算?

我对图形数据库没有经验。我天真的直觉认为这个操作应该是相当高效的。

如果得到有效支持,查询如何查找所有连接的组件?

【问题讨论】:

    标签: orientdb gremlin


    【解决方案1】:

    我遇到了同样的问题,但我最终写了一个 OSQL 查询来计算图中的连接组件,这里是 my solution

    【讨论】:

      【解决方案2】:

      以下是OrientDB website 的摘录。我已经突出显示了一些相关部分。

      OrientDB 可以像任何其他文档数据库一样嵌入文档,但是 也支持关系。它不使用昂贵的 JOIN。反而, OrientDB 在记录之间使用超快速、持久的指针,采用 来自图形数据库世界。您可以遍历部分或全部 只需几毫秒即可生成树和记录图。

      此插图显示了原始文档的处理方式 拆分为使用客户记录 ID #8:124 链接的两个文档 将订单连接到客户文档。可以想到链接 作为内存中的指针,但在磁盘上持久存在。

      [剪辑]

      配备文档和关系型 DBMS,您的数据越多 有,数据库会越慢。连接的运行时间很长 成本。相反,OrientDB 将关系作为物理链接处理 记录,仅分配一次,当创建边缘时 O(1)。比较 这对于每次“计算”关系的 RDBMS 您查询数据库 O(LogN)。 使用OrientDB,遍历速度不 受数据库大小影响。它始终是恒定的,无论是对于一个 记录或 1000 亿条记录。 这在 Big 时代至关重要 数据!

      下面是一个来自tutorial document 的示例查询,它将获取名为 Luca 的人的所有朋友。

      SELECT EXPAND( BOTH( 'Friend' ) ) FROM Person WHERE name = 'Luca'

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-06
        • 2012-04-19
        • 1970-01-01
        • 1970-01-01
        • 2017-04-19
        • 2022-10-31
        相关资源
        最近更新 更多