DynamoDB はどれくらいのデータを保存できますか?
事実上無制限です。DynamoDB のテーブルに最大サイズはなく、アイテム数もバイト数も水平にスケールします。実際の上限はアイテム単位のもの(400 KB)と、ローカルセカンダリインデックスを持つテーブルに限って、アイテムコレクション(1 つのパーティションキー値)あたり 10 GB です。LSI のないテーブルにパーティションサイズの上限はありません。
テーブルサイズ: 天井なし
DynamoDB はデータが増えるにつれて、多数の物理パーティションに自動的に分散します。設定上の最大テーブルサイズは存在せず、書き込みに応じてキャパシティとストレージがスケールします。
実際に存在する上限
- 400 KB — 単一アイテムの最大サイズ。バイナリ単位で測られ、値だけでなく属性名も数えます(その境界が正確にどこに落ちるか)。
- 10 GB — 1 つのアイテムコレクション(同じパーティションキー値を共有する全アイテム)の最大サイズ。ただし テーブルがローカルセカンダリインデックス (LSI) を持つ場合に限ります。LSI がなければ、この上限は適用されません。
測れるサイズは、支払うサイズではない
「どれくらい保存しているのか」に答える素直な方法は DescribeTable で、TableSizeBytes が返ります。この数字は設計上、請求額より小さくなります。AWS の請求ガイダンスによれば "DynamoDB measures the size of your billable data by adding the raw byte size of your data plus a per-item storage overhead that depends on the features you have enabled" であり、"Storage usage values in the CUR will be higher compared with the storage values when using DescribeTable, because DescribeTable does not include the per-item storage overhead." です。
エンジンの報告もそれと一致します。約 3 KB のアイテムを 40 件持つテーブルは TableSizeBytes: 120700 を返しました。これは生のコンテンツそのもので、それ以外は含みません。オーバーヘッドは API からは見えず、Cost and Usage Report にだけ現れます。
つまり両者の差は、アイテムの サイズ ではなく 件数 とともに広がります。1,000 万件の小さなアイテムはそのオーバーヘッドを 1,000 万回払います。同じバイト数を 10 万件の大きめのアイテムに詰めれば、払うのは 10 万回です。請求が TableSizeBytes の示唆より先に走っているなら、小さな行が横に広がったテーブルが定番の原因です。
「天井なし」の代償
ストレージは寛容な方です。us-east-1 の 1 TB のテーブルは 1,024 GB で、GB 月あたり 0.25 ドルなら月 256 ドル、25 GB の無料枠が効けば 249.75 ドルです。
厳しいのはアイテムサイズです。書き込みが 1 KB 単位で切り上げられるからです。同じ 100 万件のアイテムでも、書き込みコストは大きく変わります。オンデマンドの書き込みリクエストユニットは 100 万件あたり 0.625 ドルです。
| アイテムサイズ | 1 件あたりの書き込みユニット | 100 万件の書き込み(us-east-1、オンデマンド) |
|---|---|---|
| 1 KB | 1 | 0.63 ドル |
| 100 KB | 100 | 62.50 ドル |
| 400 KB | 400 | 250.00 ドル |
つまり、設計の基準にすべき量はテーブルのサイズではなくアイテムのサイズです。大きな BLOB は S3 に押し出してポインターだけを DynamoDB に置き、ホットなキーの下に上限のないアイテムコレクションを作らないようにしましょう。自分の数字は料金計算ツールで確認してください。
さらに詳しく
DynamoDB のアイテムコレクションと DynamoDB のパーティションキーの仕組みを読んでください。大きなテーブルを効率よく探索するには DynoTable をダウンロードしてください。
参考資料
- Quotas in Amazon DynamoDB — Amazon DynamoDB Developer Guide
- Local secondary indexes — Amazon DynamoDB Developer Guide
- TableDescription — Amazon DynamoDB API Reference
- Best practices for understanding your AWS billing and usage reports in DynamoDB — Amazon DynamoDB Developer Guide
最終検証日 2026-07-13、上記にリンクした公式 AWS ドキュメントに照らして確認しました。クォータと価格は 2026-07-28 に再確認しました。
TableSizeBytes の数値は、2026-07-28 に @aws-sdk/client-dynamodb 3.1095.0 経由で DynamoDB Local 3.3.0(amazon/dynamodb-local:latest)に対して測定しました。DynamoDB Local はサービスそのものではなく、そこからアイテムごとのオーバーヘッドの定数を推定することはしていません。