DynamoDB: RCU は「4KB 単位に切り上げ」で数える/DAX を入れる前に強整合が要るか確かめる
読み取りキャパシティ(RCU)は項目サイズを 4KB 単位に切り上げてから、読み取り方式(強整合・結果整合・トランザクション)の倍率を掛けて数える。DAX は結果整合読み取りを速くするキャッシュなので、強整合が必須の読み取りには効かない。
どんなときに使う?
- プロビジョンドモードで RCU を見積もるとき(試験問題でも頻出)
- 「DynamoDB が遅い → DAX を入れよう」と考えたとき
やり方: RCU の計算
1 RCU = 「4KB までの項目を、強整合で毎秒 1 回読む」能力。
- 項目サイズ ÷ 4KB を 切り上げ る(6KB なら 1.5 → 2)
- 1 秒あたりの読み取り回数を掛ける
- 読み取り方式で倍率を変える
- 強整合: ×1
- 結果整合: ×0.5
- トランザクション読み取り: ×2
投稿の例(6KB の項目を毎秒 10 回読む):
| 読み取り方式 | 計算 | 必要 RCU |
|---|---|---|
| 強整合 | 2 × 10 | 20 |
| 結果整合 | 2 × 10 × 0.5 | 10 |
| トランザクション | 2 × 10 × 2 | 40 |
間違えやすいのは手順 1 の切り上げ。6 ÷ 4 = 1.5 をそのまま使うと 15 RCU と少なく見積もってしまう。
やり方: DAX を入れる前の確認
- DAX は DynamoDB 専用のインメモリキャッシュで、応答はマイクロ秒単位
- ただしキャッシュから返すのは 結果整合読み取り が中心。強整合読み取りは DAX を素通りして DynamoDB に行くので速くならない
- 「その読み取りに本当に強整合が要るか」を先に棚卸しし、結果整合で済む読み取りが多いときに DAX を検討する
注意点
- 書き込み(WCU)は 1KB 単位で、計算方法が違う
- オンデマンドモードでも課金の単位(読み取り要求ユニット)は同じ考え方で 4KB 単位
- DAX は VPC 内のクラスタとして動くので、ノード料金と運用(クラスタ管理)が増える