2

目前我使用 Mongodb 来记录统计信息和投放广告。我将原始印象记录到日志集合中,并且进程确实 findandmodify 以提取日志并使用 upsert 聚合到预先计算的集合中(类似于rainbird 与 twitter 的工作方式)。 http://techcrunch.com/2011/02/04/twitter-rainbird/

我汇总了父母、孩子、孩子的孩子等,这使得查询统计数据变得快速而轻松。

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

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

4

2 回答 2

1

简短回答:我认为 Riak 不支持upsert类似操作。

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

于 2011-05-22T10:34:00.710 回答
0

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

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

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

于 2011-07-29T23:39:47.610 回答