Mapreduce 如何在riak中基于时间间隔进行查询

Mapreduce 如何在riak中基于时间间隔进行查询,mapreduce,riak,riak-search,Mapreduce,Riak,Riak Search,我正在尝试实现以下功能。我有一个存储物品的桶。其中一个对象字段是timestamp。现在我想检索时间戳介于(20130605 08:00:00到20130605 08:05:00)之间的对象 我的意思是我需要得到8.00到8.05之间的所有对象 我可以使用Map Reduce或二级索引实现此功能吗 我正在考虑的另一种方法是,将创建类似20130605:0800:0805的bucket本身,然后将对象存储在此bucket下。所以现在,我不想实现基于条件时间间隔的查询。请给出建议。根据您存储的数据类

我正在尝试实现以下功能。我有一个存储物品的桶。其中一个对象字段是timestamp。现在我想检索时间戳介于(20130605 08:00:00到20130605 08:05:00)之间的对象 我的意思是我需要得到8.00到8.05之间的所有对象

我可以使用Map Reduce或二级索引实现此功能吗


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

根据您存储的数据类型,有几个选项。正如您正确指出的,二级索引是实现这一点的一种方法,因为它们支持精确匹配和范围查询。例如,您可以创建一个包含时间戳的二进制索引(甚至可能是一个整数索引),如示例中所述,然后基于对该索引的范围查询进行获取

如果数据允许,另一个选项可能是在单个记录中存储多个对象,并为该记录指定一个表示特定时间间隔的键。这将允许您直接使用键检索覆盖特定时间段的记录,这是非常高效且可扩展的。我已经为一个可能类似的场景描述了这个方法


您可以根据插入的数据量和频率来确定单个记录所覆盖的时间段,这样记录的大小就不会增长太大(几MB)。例如,您可以在一条记录中收集一分钟的所有数据,并以“YYYYMMDDHHMI”格式为其提供一个键。如果您正在查找涵盖20130605 08:00到20130605 08:05期间的所有数据,您将直接获取记录201306050800、201306050801、201306050802、201306050803和201306050804。

根据您存储的数据类型,有几个选项。正如您正确指出的,二级索引是实现这一点的一种方法,因为它们支持精确匹配和范围查询。例如,您可以创建一个包含时间戳的二进制索引(甚至可能是一个整数索引),如示例中所述,然后基于对该索引的范围查询进行获取

如果数据允许,另一个选项可能是在单个记录中存储多个对象,并为该记录指定一个表示特定时间间隔的键。这将允许您直接使用键检索覆盖特定时间段的记录,这是非常高效且可扩展的。我已经为一个可能类似的场景描述了这个方法


您可以根据插入的数据量和频率来确定单个记录所覆盖的时间段,这样记录的大小就不会增长太大(几MB)。例如,您可以在一条记录中收集一分钟的所有数据,并以“YYYYMMDDHHMI”格式为其提供一个键。如果您正在查找涵盖20130605 08:00到20130605 08:05期间的所有数据,您将直接获取记录201306050800、201306050801、201306050802、201306050803和201306050804。

Basho有一个riak用户邮件列表(),用于处理与使用相关的问题。在那里发布您的问题可能是值得的,因为它非常活跃。Basho有一个riak用户邮件列表(),用于处理与使用相关的问题。这可能是值得张贴您的问题,以及它是相当活跃。