6

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

Riak 链接表示关系有多强大?假设二级索引等合适的特性,它们是否可以用来回答诸如“为每个收入超过 x 的人获取爱好列表”朋友的朋友之类的临时查询?一般来说,他们可以模拟RDBMS中连接的输出吗?

它们是否也适用于大量使用,例如社交书签系统,其中有很多个人链接和书签?或者它们是为了谨慎使用(所有结构都必须是有向无环图)?


在“不做”类别中:

  1. 未强制执行链接完整性
  2. 它不能回答“什么链接到这个节点?”
4

2 回答 2

5

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

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

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

于 2012-05-10T16:38:12.323 回答
3

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

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

Riak +二级索引也将是许多此类情况的合适解决方案。请参阅我对哪个集群 NoSQL DB 用于消息存储目的的回答?以及如何在 Riak 中构造数据?有关类似设置的架构建议。

于 2012-10-21T19:58:37.207 回答