2013-05-08 23 views
0

我想实现以下功能。我有一个存储对象的存储桶。其中一个对象字段是时间戳。现在我想检索其时间戳之间的时间间隔像(20130605 08:00:00至20130605 08:05:00) 我的意思是我需要从8.00到所有对象8.05的对象。如何基于riak中的时间间隔queryl

我可以使用Map Reduce或使用二级索引来实现这个吗?

我正在考虑的另一种方法是,桶本身将创建为20130605:0800:0805,然后将对象存储在该桶下。所以现在,我不想实施基于条件的时间间隔的查询。请建议一种方法。

+0

Basho拥有riak-users邮件列表(http: /lists.basho.com/mailman/listinfo/riak-users_lists.basho.com)查看与使用相关的问题和问题。在这里发布你的问题可能是值得的,并且它非常活跃。 – 2013-05-08 17:03:27

回答

3

根据您存储的数据类型,有几个选项。正如您正确指出的那样,二级索引是解决这个问题的方法之一,因为这些支持完全匹配和范围查询。你可以例如创建一个二进制索引(可能甚至是一个整数索引),其中包含您的示例中概述的时间戳,然后基于此索引上的范围查询进行提取。

如果您的数据允许,另一个选项可能是将多个对象存储在单个记录中,并为该记录提供一个代表特定时间间隔的密钥。这将允许您直接使用密钥来检索覆盖特定时间段的记录,这非常有效且可以很好地扩展。我已经描述了这种方法可能类似的情况here

您可以根据插入的数据量和频率确定单个记录所涵盖的时间段,以便记录的大小不会变得太大(几MB)。你可以例如在一条记录中收集所有数据一分钟,并以“YYYYMMDDHHMI”格式给它一个密钥。如果您正在查找涵盖20130605 08:00至20130605 08:05期间的所有数据,则可以直接获取记录201306050800,201306050801,201306050802,201306050803和201306050804.