Amazon DynamoDB获取过去24小时内的所有项目



我想得到过去24小时的所有项目。我已经在谷歌上做了一些搜索,使用DynamoDB似乎并不容易。

我在想是否可以用一个通用的散列键和一个时间戳字段作为排序键来创建一个二级索引。因此,我可以查询条件为timestamp>(DateTime.Now-24h)的时间戳。如果这是一种可能的方式或有其他想法,有人能对此发表评论吗?

事实上,我的桌子上只需要不超过24小时的物品。因此,另一个想法是每小时清理一次桌子,并删除所有超过24小时的项目。这可能吗?


EDIT:另一个想法是创建一个二级索引,将日期作为散列键,将时间作为排序键,然后执行两个查询。第一个表示日期="今天",第二个表示日期为"昨天",条件为准时。但是,我该如何将日期和时间存储为字符串或整数呢?这会比我上面的想法更好吗?

您对索引的想法通常是正确的。你也说得对,Dynamo无法对扫描检索到的项目进行排序(在没有索引的情况下,这是获得所需项目所必需的)。

选项如下:

  1. 正如你所建议的,你可以创建一个GSI,其中有一个分区键,比如说是日期值,还有一个排序键,就是时间戳——然后通过两个查询,你总是可以获得最近24小时的项目(你也可以在分区键中有小时值,然后进行24个查询,而不是2个)

  2. 另一个可能比GSI更好的选择是每N小时轮换一次表(其中N可能是12小时,也可能是24小时,或者根据您拥有的数据量有意义的其他值)。此解决方案为您提供了一种很好的方法来修剪旧数据并针对不均匀的访问模式进行优化。较旧的表可能需要非常低的写入容量,在某些情况下,您甚至可以使用较低的读取容量。这种方法在读取和写入数据时确实需要注意多个表,但根据您正在处理的数据量,考虑它可能非常有利。

相关内容

  • 没有找到相关文章

最新更新