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

时间:2016-08-03 17:15:32

标签: amazon-web-services amazon-dynamodb nosql

我想获得过去24小时内的所有项目。我已经完成了一些谷歌搜索,似乎用DynamoDB做起来并不容易。

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

实际上,我只需要表格中不超过24小时的物品。所以另一个想法是每小时清理一次表并删除超过24小时的所有项目。这可能吗?

编辑:另一个想法是创建一个二级索引,其中日期为哈希键,时间为排序键,然后执行两个查询。第一个是date ='today',第二个是date ='昨天',条件准时。但是我如何将日期和时间存储为字符串或整数?这会比我上面的想法更好吗?

1 个答案:

答案 0 :(得分:2)

您对索引的想法通常是正确的方向。你也是对的,Dynamo无法订购扫描检索的项目(为了在没有索引的情况下获得你想要的项目,这是必需的。)

关于选项:

  1. 你可以按照你的建议创建一个带有分区键的GSI,比如说日期值,以及一个时间戳的排序键 - 然后有两个查询,你总能获得最多的项目最近24小时(您还可以在分区键中使用每小时值,然后进行24次查询而不是2次)

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