DynamoDb 数据检索的良好实践

问题描述 投票:0回答:1

我正在评估新项目的 DynamoDB 作为潜在数据库。我非常感谢您对以下用例和解决方案的意见。

用例:用户提供多个设备 ID 来查找有关设备的数据。 API 应返回其设备 ID 与用户输入的设备 ID 完全匹配的所有设备。

算法:在 API 调用中发送多个 DynamoDB 请求来获取数据。每个请求通过 device_id 获取一个设备,device_id 是表中的分区键。一旦 Db 返回数据,api 将数据组合成一个数据结构返回给 UI。

我担心的是我必须收到多个数据库请求。来自 SQL 世界,通过 1 个查询可以实现相同的功能,因此数据库仅被访问一次:

select * from device where device_id in ('123','234', 345')

问题:

  1. 通过分区键进行 DynamoDB 数据检索是否如此快速/便宜,以至于像上面的示例那样进行多次数据访问是合理的?
  2. 我应该使用另一种方法/算法在一个查询中通过 id 获取多个项目吗?
amazon-dynamodb nosql
1个回答
0
投票

您有多种方法可以在单个请求中取回数据:

  1. 如果您的表只有分区键,您可以使用BatchGetItem在单个请求中最多获取100个项目
  2. 如果您有排序键,但仍需要每个设备的所有数据,则可以使用 ExecuteStatement,您可以在其中使用您共享的 SQL 语法,并在单个请求中获取最多 50 个设备的数据。
© www.soinside.com 2019 - 2024. All rights reserved.