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

Mongodb 关于在Basho Riak中进行就地更新的问题,mongodb,analytics,riak,Mongodb,Analytics,Riak,目前我使用Mongodb来记录统计数据和AdService。我将原始印象记录到日志集合中,并处理“do Find Modify”以提取日志并使用upsert聚合到预计算的集合中(类似于rainbird与twitter的工作方式)。 我对父母、孩子、孩子的孩子等进行聚合,这使得查询统计数据既快捷又轻松 我(在mongo中)使用一个由{Item_id,Hour}组成的键,并向上插入(alot) 我想知道Riak是否有一种强大的方法来解决同样的问题,以及我将如何实现它。简短回答:我认为Riak不支持

目前我使用Mongodb来记录统计数据和AdService。我将原始印象记录到日志集合中,并处理“do Find Modify”以提取日志并使用upsert聚合到预计算的集合中(类似于rainbird与twitter的工作方式)。

我对父母、孩子、孩子的孩子等进行聚合,这使得查询统计数据既快捷又轻松

我(在mongo中)使用一个由{Item_id,Hour}组成的键,并向上插入(alot)


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

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


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

这一操作与Riak的工作方式取决于您用于Riak的存储后端

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

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