Riak中的链接:与图形数据库相比,它们可以做什么/不做什么?

时间:2012-03-17 17:15:53

标签: riak

熟悉的Neo4j将人际关系视为一等公民;即席查询/遍历,完整性(如果一个节点被删除,链接消失)等。它还将广告作为表示关系以及优于关系数据库连接的唯一机制。

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

它们是否也意味着大量使用,例如社交书签系统,其中有很多人和书签的链接?或者它们是否需要谨慎使用(所有结构都必须是非循环图)?


在“不做”类别中:

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

2 个答案:

答案 0 :(得分:5)

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

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

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

答案 1 :(得分:3)

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?的回答。