【问题标题】:How to queryl based on time interval in riak如何在riak中根据时间间隔查询
【发布时间】:2013-05-08 13:55:24
【问题描述】:

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

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

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

【问题讨论】:

标签: mapreduce riak riak-search


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-05
    • 2012-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-21
    相关资源
    最近更新 更多