我有一个用例,其中我在dynamodb表中有记录(设备mac地址)。我想获取记录并处理它们。有没有一种方法可以让我按排序的顺序获取记录并将结果限制为10个? DynamoDB要求在查询表达式中提供一个哈希键,而我本人没有。即使在GSI中,查询中也必须有一个哈希键(即使它与主表的哈希键不同)。 任何帮助将不胜感激。
答案 0 :(得分:1)
同时获得ordering和limits的唯一方法是使用queries,而不是scans。
但是您似乎没有哈希键,因此无法使用查询。您有什么选择?
我想到两个。
第一个:不将touch-action
存储为时间戳,而是存储为日期和时间戳。
创建一个哈希索引键设置为日期和范围设置为时间戳的全局二级索引。
这样,您就可以使用排序和限制查询该索引。
但是,如果一天之内您的限制项目少于所需数量,它将无法正常工作(您需要查询以前的日期)。
第二个:使用DynamoDB流+ Lambda来获取有关新条目的通知,并将它们存储在另一个地方,删除最旧的条目,从而形成所需大小(限制)的LRU缓存。 您甚至可以使用扫描来搜索此缓存中最旧的项目,因为它的大小不会很大。