【问题标题】:How to fetch set of 10 records each time for multiple keys in DynamoDB using BatchGetItem?如何使用 BatchGetItem 每次为 DynamoDB 中的多个键获取 10 条记录?
【发布时间】:2020-02-01 01:40:08
【问题描述】:

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

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

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

【问题讨论】:

    标签: indexing amazon-dynamodb


    【解决方案1】:

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

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

    【讨论】:

    • 您是否建议为多个客户端使用多个 SQS 队列?在那件事上,每当有新客户端加入服务器时,我都必须创建一个新的 SQS 队列。
    猜你喜欢
    • 1970-01-01
    • 2021-07-23
    • 2021-03-15
    • 2014-02-20
    • 2015-12-18
    • 2016-11-28
    • 2021-05-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多