关于在Basho Riak进行就地更新的问题

时间:2011-05-20 00:43:43

标签: mongodb analytics riak

目前我使用Mongodb记录统计数据和保存。我将原始展示记录到日志集合中,然后处理'do findandmodify以取消日志并使用upsert聚合到预先计算的集合中(类似于rainbird如何使用twitter)。 http://techcrunch.com/2011/02/04/twitter-rainbird/

我在父母,孩子,孩子等方面进行聚合,这样可以快速,轻松地查询统计数据。

我使用(在mongo中)一个由{Item_id,Hour}和upsert组成的键(很多)

我想知道Riak是否有一个很好的方法来解决同样的问题,以及我将如何实现它。

2 个答案:

答案 0 :(得分:1)

简短回答:我不认为Riak支持upsert - 就像操作一样。

答案很长:Riak是一个键值存储,它将存储的值视为不透明数据。但是在未来,Riak可以考虑添加对HTTP PATCH的支持,这可能允许支持类似于upsert的操作。还有另一类操作(比较和设置)也很有趣,但支持这些操作肯定要复杂得多。

答案 1 :(得分:0)

这与Riak一起使用的方式取决于您用于Riak的存储后端。

Bitcask,当前的默认存储后端,使用日志结构的哈希树作为内部存储机制。当您向Riak写入新记录时,会将全新的数据副本存储在磁盘上。最终,将发生bitcask的压缩,并且将从bitcask文件中删除旧数据的副本。

任何put进入Riak实际上都是一个upsert - 如果数据不存在,将插入一条新记录。否则,将通过使旧值到期并使最新值成为当前值来更新现有值。