DynamoDB の「読み取り整合性」は、データの一貫性(Consistency)をどう保証するかに関する設定です。DynamoDB では主に以下の2種類があります:
🧩 1. Eventually Consistent Reads(結果整合性のある読み取り)
✅ 特徴:
- デフォルトの動作
- 直前に書き込んだ値が、すぐに反映されない可能性がある
- 少し待てば正しいデータが読める(最終的に整合性が取れる)
🔍 利点:
-
スループットが高く、読み取りコストが安い(1/2ユニット)
- 読み取り性能を重視するユースケースで有効
🧩 2. Strongly Consistent Reads(強い整合性のある読み取り)
✅ 特徴:
-
常に最新のデータを返す(書き込み後すぐに反映)
- パーティション間での整合性を保証
🔍 利点:
- 読み取りの正確性が重要な場面(たとえば在庫数、残高)に最適
⚠️ 注意点:
- スループット使用量が多く、結果整合性の2倍の**読み取り容量ユニット(RCU)**を消費
- グローバルテーブルでは使用不可(最強整合性はリージョンをまたいで保証できない)
✅ 比較表
特性 |
結果整合性 (Eventually Consistent) |
強い整合性 (Strongly Consistent) |
最新データの保証 |
❌ すぐには保証されない |
✅ 常に最新の書き込みが反映 |
RCU消費量 |
1 |
2 |
デフォルトかどうか |
✅ はい |
❌ 手動指定が必要 |
グローバルテーブル対応 |
✅ 対応 |
❌ 非対応 |
💡 使い分けのポイント
ユースケース |
適した整合性 |
ユーザー投稿一覧の表示など |
結果整合性(速さ重視) |
在庫確認・口座残高・設定値確認 |
強い整合性(正確性重視) |
🔧 強い整合性を使う方法(例)
AWS SDKやCLIで ConsistentRead
を明示的に true
にします:
aws dynamodb get-item \
--table-name Products \
--key '{"ProductId": {"S": "123"}}' \
--consistent-read
✅ まとめ
用語 |
説明 |
結果整合性 |
高速・安価だが直前の書き込みが見えない可能性あり |
強い整合性 |
常に最新のデータ取得が保証されるが、スループット消費が多い |