0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【図解】DynamoDBのキャパシティ計算

Posted at

早めの結論

計算方法

  • 必要なブロック数 = データ / 項目のサイズ (小数点切り上げ)
  • 1 秒あたりの項目数 = 必要なブロック数 * 1 秒あたりのリクエスト数
  • キャパシティユニット = 1 秒あたりの項目数 / 1 秒あたりの実行回数

RCU

  • 読み込み方法は 3 種類
    • 結果整合性
    • 強力な整合性
    • トランザクション
  • 結果整合性は,強力な整合性1/2 倍の RCU
  • トランザクションは,強力な整合性2 倍の RCU

WCU

  • 書き込み方法は 2 種類
    • 結果整合性
    • トランザクション
  • トランザクションは,結果整合性2 倍の WCU

キャパシティユニットとは

DynamoDB のプロビジョニングモードでは,
予め 1 秒あたりどのくらいデータを読み書きするのか回数を指定します
その回数こそがキャパシティユニットです

プロビジョニングされたキャパシティーのモードでは、
アプリケーションに必要な
1 秒あたりのデータ読み込みと書き込みの回数を指定します。
プロビジョンドキャパシティの料金

読み込みと書き込みそれぞれで計算します
また,読み込み書き込みそれぞれ以下のように表記します

  • 読み込みのキャパシティユニット: RCU
  • 書き込みのキャパシティユニット: WCU

登場人物のご紹介

計算に出てくるメンバーをご紹介!

登場人物 説明 単位
項目のサイズ 1ブロックの単位 KB
データ 読み書きするデータ KB
必要なブロック数 データ / 項目のサイズ
1 秒あたりのリクエスト数 1 秒あたりに処理するリクエスト数 n/s
1 秒あたりの実行回数 1 秒あたりに処理を実行できる回数 n/s
キャパシティユニット 1 秒あたりのデータ処理回数 CU
  • 必要なブロック数 = データ / 項目のサイズ (小数点切り上げ)
  • 1 秒あたりの項目数 = 必要なブロック数 * 1 秒あたりのリクエスト数
  • キャパシティユニット = 1 秒あたりの項目数 / 1 秒あたりの実行回数

必要なブロック数.png
1秒あたりの項目数.png
キャパシティユニット.png

簡単な例で考えてみます

  • 項目のサイズ: 4 [KB]
  • データ: 8 [KB/S]
  • 1 秒あたりのリクエスト数: 2 [n/s]
  • 1 秒あたりの実行回数: 2 [n/s]

なので,

必要なブロック数 = 8 * 4 = 2
1 秒あたりの項目数 = 2 * 2 = 4
キャパシティユニット = 4 / 2 = 2

RCU: 読み込みキャパシティユニット

項目のサイズ

読み込みの場合は,4 KB です

読み込み方法

読み込み方法は 3 種類あります

読み込み.png
※ トランザクションについては実行回数の記載は無いですが計算の便宜上0.5にしました
https://aws.amazon.com/jp/dynamodb/pricing/provisioned/

読み込み実行回数についてのイメージをざっくりまとめると,

  • 1 秒あたりの実行回数が多い ⇒ 処理は早いが結果は雑
  • 1 秒あたりの実行回数が少ない ⇒ 処理は遅いが結果は正確

ということで RCU は以下の関係になります

  • 結果整合性は,強力な整合性の 1/2 倍の RCU
  • トランザクションは,強力な整合性の 2 倍の RCU

直列化可能分離レベルについて少し解説です
処理Aと処理Bがあるとします
この時,以下のようにしても結果が同じになるのが直列化可能ということです

  • 処理Aと処理Bを同時
  • 処理A→処理B の順で実行
  • 処理B→処理Aの順で実行

読み込み計算例

では具体的に見ていきましょう
以下の設定で確認です

  • 項目のサイズ: 4 (読み込みなのでここは固定)
  • データ: 4 [KB/S]
  • 1 秒あたりのリクエスト数: 1
  • 1 秒あたりの実行回数: 1 (強力な整合性)

読み込み例_必要なブロック数.png
読み込み例_1秒あたりの項目数.png
読み込み例_キャパシティユニット.png

書き込み

項目のサイズ

読み込みの場合は,1 KB です

書き込み方法

書き込み方法は 2 種類あります

書き込み.png

WCU は以下の関係になります

  • トランザクションは,結果整合性の 2 倍の WCU

書き込み計算例

では具体的に見ていきましょう
以下の設定で確認です

  • 項目のサイズ: 1 (書き込みなのでここは固定)
  • データ: 3 [KB/S]
  • 1 秒あたりのリクエスト数: 1
  • 1 秒あたりの実行回数: 1 (結果整合性)

では計算していきます

  • 必要なブロック数 = 3 / 1 = 3
  • 1 秒あたりの項目数 = 3 * 1 = 3
  • キャパシティユニット = 3 / 1 = 3

よって WCU = 3 です
これがトランザクションなら WCU が 2 倍なので,6WCU です

0
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?