LoginSignup
2
1

More than 5 years have passed since last update.

DynamoDB BatchGetItem における注意点

Last updated at Posted at 2016-11-25

よく 複数のデータを取得する時は、BatchGetItem でという記事がありますが、これには注意点があります。

さまざまなオペレーションに対応するキャパシティーユニットの計算

(バッチ内の各項目が別々に読み込まれる)BatchGetItem については、DynamoDB は、まず各項目のサイズを次の 4 KB に切り上げ、次に、合計サイズを算出します。この結果は、すべての項目の合計サイズと必ずしも同じではありません。たとえば、BatchGetItem が 1.5 KB の項目と 6.5 KB の項目を読み込むと、DynamoDB は、サイズを 8 KB(1.5 KB + 6.5 KB)ではなく、12 KB(4 KB + 8 KB)と算出します。

この様に BatchGetItem は各サイズを4KB単位に切り上げてから合計するので キャパシティーユニット の削減にはなりません。
ですが、Queryの場合は合計サイズを算出してから4KBに切り上げてくれます。

Queryの場合、返されるすべての項目は、単一の読み込みオペレーションとして処理されます。その結果、DynamoDB はすべての項目の合計サイズを算出し、次の 4 KB 境界に切り上げます。たとえば、クエリの結果、合計サイズが 40.8 KB になる 10 項目が返されるとします。DynamoDB はオペレーションの項目サイズを 44 KB まで切り上げます。クエリの結果、64 バイトの項目が 1,500 項目返されると、累積サイズは 96 KB になります。

可能であれば、Queryを利用する様にすると、キャパシティーユニットの消費が削減できます。
これから設計するのであれば、Queryでデータの取得ができるように設計される事をオススメします。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1