1. ホーム
  2. amazon-web-services

[解決済み] DynamoDBのBatchGetItemとQueryの違いとは?

2022-02-28 18:53:19

質問

AWS DynamoDBのドキュメントを読んでいるのですが、batchGetItem()とQuery()のコアな違いがどうしても分かりません。どちらもテーブルとインデックスから主キーに基づいたアイテムを取得します。唯一の違いは、取得するアイテムのサイズですが、これは画期的な違いとは思えません。どちらも条件付き更新もサポートしています。

どのような場合に、Query よりも batchGetItem を使うべきですか?

どのように解決するのですか?

一言で言えば BatchGetItem はテーブル上で動作し、ハッシュキーを使って取得したい項目を特定します。一回のレスポンスで最大16MB、100アイテムまで取得できる

クエリーは、テーブル、ローカルセカンダリーインデックス、グローバルセカンダリーインデックスに対して動作します。1回のレスポンスで取得できるデータは最大1MBです。最大の違いは、クエリがフィルタ式をサポートしていることです。つまり、データをリクエストすると、DDBがサーバ側でフィルタリングしてくれるのです。

しかし、経験則から言うと、DDBから大量にダンプする必要があるときはBatchGetを行い、取得したいものを絞り込む必要があるときはクエリを行います(そして、dynamoに重い仕事をさせてデータをフィルタリングしたい場合)。