今日はなにの日。

気になったこと勉強になったことのメモ。

今日は、DynamoDBテーブルで読み込みキャパシティと書き込みキャパシティの計算の日。

目次

とある日

AWS SAPの勉強用の記録。

読み込み/書き込みキャパシティーモード - Amazon DynamoDB

24 時間ごとに 1 回、読み込み/書き込みキャパシティーモードを切り替えることができます。

オンデマンドモード

Amazon DynamoDB オンデマンドは、容量計画なしで 1 秒あたりに数千ものリクエストを処理できる柔軟な請求オプションです。DynamoDB オンデマンドには、読み取りおよび書き込みリクエストのリクエストごとの支払い料金が用意されているため、使用した分だけ課金されます。

使用した分に対して課金が行われるのがポイント。

  • 不明なワークロードを含む新しいテーブルを作成する。
  • アプリケーションのトラフィックが予測不可能である。
  • わかりやすい従量課金制の支払いを希望する。

プロビジョニングモード

プロビジョニングモードを選択した場合、アプリケーションに必要な 1 秒あたりの読み込みと書き込みの回数を指定します。Auto Scaling を使用すると、トラフィックの変更に応じて、テーブルのプロビジョンドキャパシティーを自動的に調整できます。これにより、コストの予測可能性を得るため、定義されたリクエストレート以下に維持されるように DynamoDB を制御することができます。

オンデマンドより安く抑えられる場合がある。

読み込みキャパシティーユニット (RCU)

読み込み回数

  • 1 秒あたり 1 回の強力な整合性のある読み込み
  • 1 秒あたり 2 回の結果整合性のある読み込み

ポイント

  • 最大サイズ 4 KBまで読み込む
  • トランザクション読み込みリクエストでは、4 KB までの項目を 1 秒あたりに 1 回読み込むのに読み込み容量単位が 2 個必要です。
  • DynamoDB は追加の読み込み容量単位を消費する必要があります。

例:

たとえば、項目のサイズが 8 KB の場合、1 秒あたり 1 回の強力な整合性のある読み込みを維持するには読み込みキャパシティーユニットが 2 個、結果整合性のある読み込みを選択した場合は読み込みキャパシティーユニットが 1 個、またはトランザクション読み込みリクエストには読み込みキャパシティーユニットが 4 個必要です。

書き込みキャパシティーユニット (WCU)

読み込み回数

1 つの書き込み容量単位は、最大サイズが 1 KB の項目について、1 秒あたり 1 回の書き込みを表します。

ポイント

  • 1 KB より大きい項目を書き込む必要がある場合、DynamoDB は追加の書き込み容量単位を消費する必要があります。
  • トランザクション書き込みリクエストでは、1 KB までの項目を 1 秒あたり 1 回書き込むのに書き込み容量単位が 2 個必要です。
  • 必要な書き込みキャパシティーユニットの合計数は、項目サイズに応じて異なります。

たとえば、項目のサイズが 2 KB の場合、1 秒あたり 1 回の書き込みリクエストを維持するには書き込みキャパシティーユニットが 2 個、またはトランザクション書き込みリクエストには書き込みキャパシティーユニットが 4 個必要です。

例題

要件

・1秒間に30回の書き込み

・1秒間に20回の結果整合性のある読取処理

・両方の操作ですべてのアイテムのサイズが1KB

プロビジョニングの場合のWCUとRCUの見積もり。

WCU:30

RCU:10

まず、サイズを確認する。

書き込みが1KB、読み込みが4KB。

ここで大事なのがアイテムのサイズをまとめることはできないので読み込みを4KBで5回の読み込みみたいなことはできない。

なので、書き込みは30回、読み込みも20回そのまま計算。

次は一秒間の単位に注目。

書き込みはわかりやすい1秒に1回、読み込みは整合性によって変わる結果整合が一番一秒間に読み込める回数が多い2回

なので、書き込みはそのまま、読み込みは半分の回数で読み込めるの。

まとめ

読み書きのモードは2つある。

  • オンデマンド
    • オンデマンドは単純明快で利用額に応じて支払う。
    • DynamoDBがトラフィックレベルを拡張縮小していい感じにする。
    • 予測できない場合に使う
    • プロビジョニングに比べて高くなる
  • プロビジョニング済み (デフォルト、無料利用枠の対象)
    • 一秒の書き込み読み込みの回数を指定する。
    • 書き込みキャパシティーユニット (WCU) と読み込みキャパシティーユニット (RCU) を指定する。
    • 書き込みキャパシティーユニット (WCU)
      • 1 KB対応
      • トランザクション書き込みは1 秒あたり 1 回書き込むのに書き込み容量単位が 2 個
      • 書き込みリクエストでは最大サイズが 1 KB の項目について、1 秒あたり 1 回
    • 読み込みキャパシティーユニット (RCU)
      • 最大サイズ 4 KB
      • 1 秒あたり 1 回の強力な整合性のある読み込み
      • 1 秒あたり 2 回の結果整合性のある読み込み
      • 1 秒あたりに 1 回読み込むのに読み込み容量単位が 2 個 トランザクション読み込みリクエス

書き込みのほうが時間がかかるため書き込める容量は少ない。

どこまで許容するかで必要となるキャパシティーユニットが違う。

改めてしっかりと調べると。

トランザクションや結果整合性、強力な整合性でも単位が異なる。

ゆっくりやれば解けると思う。