首页 > 解决方案 > 如何使用 BatchGetItem 每次为 DynamoDB 中的多个键获取 10 条记录?

问题描述

用例:我收到来自不同客户的多个请求。因此,我需要将这些请求存储在数据库(最好是 DynamoDB)中,按照传入时间的顺序对它们进行排序,并同时为所有客户端获取 10 个集合。

例如:如果有 5 个客户端:C1、C2、C3、C4、C5 并且都在一个时间点发送 50 个请求,我将它们及其时间戳存储在数据库中。现在我只需要按时间戳顺序从所有客户端获取 10 个请求对象,而不是全部获取。所以,先进来的请求,需要先处理。

如何使用 DynamoDB GSI 和 BatchGetItem API 来实现这一点?还是有其他方法可以实现这一点?

标签: indexingamazon-dynamodb

解决方案


这是 SQS FIFO 队列的完美用例。这似乎是您最好的选择。

如果您真的必须使用您不会使用的 DynamoDB BatchGetItem,那么您将使用Query. 当您知道所需记录的键时,BatchGetItem用于在一个请求中检索多个项目。使用查询,您可以指定分区键和可选的排序键,或排序键的函数。使用 DynamoDB 时遇到的最大问题是您需要确保只获取一次记录,因此您必须采取措施删除记录或以不被查询的方式更新记录再次。这一切都是可行的,但同样,SQS 更适合于此。


推荐阅读