如何查询DynamoDB中是否存在多个项目?

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

我有一个 ID 列表,我想以有效的方式检查其中哪些存在于我的 DynamoDB 中。

例如我的 ID 列表可能是:

[1, 2, 3, 4, 5]

我的名为 Cats 的 DynamoDB 表具有以下内容:

{id: 1, name: 'cat1'}, {id: 3, name: 'cat3'}, {id: 5, name: 'cat5'}

我想通过一次调用知道 id 1、3、5 在我的 DynamoDB 中。不确定这是否可以通过 1 个 get 请求实现,或者我是否需要进行 5 个 get 请求。

amazon-dynamodb
2个回答
2
投票

我认为答案取决于你的数据结构如何。

Query请求必须包含实体的id,因此无法执行 1 个查询请求并获取所有三个结果。

Scan 请求可以获取所有条目(或根据您的列表过滤后的版本),但是,根据您的表有多大,从时间角度来看,该请求可能相当昂贵。

另一种选择可能是根据数据可能具有的其他语义创建辅助索引,并对其进行查询/扫描。

查看 dynamodb 最佳实践页面,看看是否可以改进表结构以方便操作。


0
投票

如果您拥有每个项目的哈希值和范围,那么在一次检查多个项目是否存在时,使用具有最小投影(仅一个键)的 BatchGetItem 可以更有效。这种方法允许您向 DynamoDB 发送单个请求,仅检索必要的属性,然后检查检索的项目数是否与请求的项目数匹配。

  1. 构建要检索的项目
  2. 批量获取这些物品
  3. 检查请求的长度与检索的长度。如果不检索它就不存在
© www.soinside.com 2019 - 2024. All rights reserved.