【问题标题】:Links in Riak: what can they do/not do, compared to graph databases?Riak 中的链接:与图形数据库相比,它们能做什么/不能做什么?
【发布时间】:2012-03-17 17:15:53
【问题描述】:

熟悉的 Neo4j 将关系视为一等公民;即席查询/遍历、完整性(如果一个节点被删除,链接就消失了)等。它还被宣传为表示关系的唯一机制,并且优于关系数据库的连接。

Riak 链接在表示关系方面有多强大?它们是否可以用来回答 临时查询,例如 “为每个收入超过 x 的人获取爱好列表”friend of a friend,假设合适的功能如下二级索引?一般来说,他们可以在 RDBMS 中模拟output of a join 吗?

它们是否也适合大量使用,例如社交书签系统,其中有很多个人链接和书签?还是它们需要小心使用(所有结构都必须是有向无环图)?


在“不做”类别中:

  1. 链接完整性为not enforced
  2. 它无法回答“什么链接到这个节点?”

【问题讨论】:

    标签: riak


    【解决方案1】:

    Riak 中的链接只是一些与值一起存储的元数据(对外键的单向引用列表)。它们通常用作 MapReduce 的输入,可以对它们进行任何操作,包括模拟 RDBMS 连接。

    其中没有完整性检查或任何额外的魔法,例如查找反向链接。它们只是一个方便的 API,完全可以通过将这些外键列表存储在值中,以某种方式序列化来实现。

    对于社交书签示例,我建议使用 Riak Search,因为它允许更灵活的查询,例如 http://example.com/*,并具有适当的分布式索引和查找。

    【讨论】:

      【解决方案2】:

      blinkov 的回答是正确的。不,Riak Links 不适合您描述的场景。没有参照完整性检查,并且每个对象可以存储多少个链接(我相信最多 255 个)。

      Riak Search 更适合社交书签场景。事实上,社交书签网站Clipboard 使用正是这种机制 - 作为 Riak 对象的书签,并在其上启用了 Riak 搜索(用于标记、事件触发器和通知等)。当Ricon 2012 会议视频上线后,我建议您观看剪贴板演讲以了解更多详细信息。

      Riak + Secondary Indexes 也将是许多此类情况的合适解决方案。有关类似设置的架构建议,请参阅我对 Which clustered NoSQL DB for a Message Storing purpose?How to structure data in Riak? 的回答。

      【讨论】:

        猜你喜欢
        • 2016-11-20
        • 2011-08-23
        • 1970-01-01
        • 1970-01-01
        • 2017-09-25
        • 2018-05-30
        • 1970-01-01
        • 1970-01-01
        • 2010-12-31
        相关资源
        最近更新 更多