确保riak的正确性?

5 transactions riak

看来你不能在riak做交易.如何确保数据正确?

让我们说我们想插入一条评论.在redis中,我会这样做

commentId=incr commentCount
multi
SET comment_post:commentId postId //for later use when we flag comments. We'll need to know where in the db it is
RPUSH post_comment:postId binaryValue //contains commentId in it + comment body
exec
Run Code Online (Sandbox Code Playgroud)

在SQL中我会在注释表中插入一个带有文本和帖子ID的新行.两者都使用了多个语句.我如何插入评论正文并将帖子与riak中的评论相关联,因为它没有交易?

另一个问题是如果我修改帖子.如何更新帖子并使用该标签更新帖子的标签列表

Bri*_*ach 6

Riak是一个最终一致的系统,旨在提供可写性,并且没有原子性概念; 没有原子计数器或事务.

编辑:我们在Riak 1.4中使用CRDT发布了计数器.有关详细信息,请参阅Riak 1.4中的计数器

Riak使用的方法基于Amazon Dynamo论文,并使用矢量时钟进行冲突解决; 它是一个读/修改/写周期,在后续读操作期间执行任何冲突解决.在任何给定时间,您可以为给定的键提供多个值,这些值在执行提取时将全部返回.

听起来像你想看看我们的二级指标(如果我理解您的方案,事实上,你需要一个新commentId的"喜欢"是有点混乱不知道更多).您将创建一个指向您的注释主体的辅助索引,该索引在您执行存储时与主体本身一起发送.这解决了问题的至少一半.

你如何得到你commentId的东西有点棘手.你不能使用全局原子计数器,因为我们没有它们.您的设计需要不依赖于顺序ID(可能生成UUID?)并且可能使用我们的链接

如果您有兴趣并希望讨论可能的设计方法,请在riak-users邮件列表上ping我们- 我们所有的工程师都会阅读它并且很乐意回答问题.