運用とコスト

モデリングはデータをテーブルに置く。運用とは、一貫した書き込み、変更フィード、期限切れ、キャパシティの請求、マルチリージョンでの生存、そして復旧のことだ。ここを正しく押さえれば本番で DynamoDB を信頼できる。誤れば午前 2 時にスロットルする。

このセクションは 1 つの稼働シナリオを通して進む。マルチテナント SaaS の監査ログ、つまり企業の買い手が求める不変の「誰が何をいつしたか」の記録だ。テナントごとにパーティション化された 1 テーブル:

PKSKactoractionip
TENANT#acmeEVENT#2026-06-24T09:14Z#a1USER#88login.success203.0.113.7
TENANT#acmeEVENT#2026-06-24T09:15Z#a2USER#88invoice.export203.0.113.7
TENANT#globexEVENT#2026-06-24T09:15Z#b9USER#12role.granted198.51.100.4

ほとんどのガイドは、この同じテーブルに運用上の関心事を 1 つ足す。

このセクションで身につくこと

  • オールオアナッシングの書き込みが重要なところでトランザクションを使い、AWS が返すキャンセル理由を知っている。
  • 夜間の削除ジョブなしに、追記専用の監査保持のため DynamoDB Streams と TTL を配線できる。
  • トラフィックの平均使用率からオンデマンドとプロビジョンドキャパシティを選べる。
  • グローバルテーブルと PITR による復旧を計画できる。それぞれが何を、どこまで遡って復旧するかを含めて。

読む順番

  1. コストモデルと SQL スキャン: 監査テーブルを運用する前に、スキャン形の読み取りが請求にどう表れるか。
  2. トランザクション: 監査イベントとテナントごとのカウンターをまとめる TransactWriteItems。冪等性トークン。
  3. Streams: テーブルをポーリングせずに監査イベントを SIEM やウェアハウスへ送るストリームコンシューマー。
  4. TTL: 古い EVENT# 行を自動で期限切れにする。TTL 属性には epoch 秒。
  5. オンデマンド対プロビジョンド: リクエスト単位の課金とプロビジョンドキャパシティ、使用率の損益分岐点、実際の請求例。
  6. オンデマンドのスループットを実測する: 新しいオンデマンドテーブルの書き込みと読み取りの上限、そして負荷の下でそれがどう伸びたか。
  7. オートスケーリング: プロビジョンドモードのスケーリングポリシー。
  8. スロットリング: スロットリングの 4 つの原因、それぞれを示す例外とメトリクス、それぞれの対処。
  9. テーブルサイズとアイテム数: DynamoDB が 6 時間ごとに更新する DescribeTable の見積もりと、正確な Scan カウントの比較。
  10. グローバルテーブル: 監査ログのマルチリージョンレプリケーション。最終書き込み優先の競合解決と、MREC/MRSC の整合性モード。
  11. バックアップと PITR: 継続的バックアップとポイントインタイム復元のウィンドウ。
12 件中 0 件読了クイズ
DynamoDB のコストモデル: なぜ SQL は請求を見えなくするのか
DynamoDB 上の SQL が請求を見えなくする理由:JOIN、任意の WHERE フィルター、集計が Scan にコンパイルされる仕組みと、フル Scan 1回のコスト。
中級読了 4 分
DynamoDB Transactions:複数アイテムへのオールオアナッシングな書き込み
TransactWriteItems による DynamoDB トランザクション。最大 100 個の all-or-nothing アクション、4 MB の制限、2 倍の書き込みキャパシティ、そして競合でキャンセルされる仕組み。
上級読了 9 分
DynamoDB Streams:アイテムの変更すべてに反応する
DynamoDB Streams:24 時間の変更ログ、StreamViewType、アイテムごとの順序、Lambda トリガー、そして変更をより長く保持したり S3 にアーカイブしたりするための Kinesis 経由の方法。
上級読了 9 分
DynamoDB TTL:期限切れアイテムが削除される仕組み
DynamoDB TTL は、Unix エポックのタイムスタンプ属性が過ぎるとアイテムを自動削除します。通常は数日以内で、その削除に書き込みキャパシティはかかりません。
中級読了 6 分
DynamoDB オンデマンド vs プロビジョンドキャパシティ
DynamoDB のオンデマンドとプロビジョンドキャパシティ。リクエスト課金とプロビジョンドスループットの比較、使用率約 29% の損益分岐点、そして月額請求の計算例。
中級読了 8 分
DynamoDB オンデマンドスループットの実測
DynamoDB のオンデマンドスループットを実測。新規テーブルの書き込み上限 4,000/秒、スロットリングなしの読み取り 12,762/秒、負荷の下で上限がどう伸びたか。
中級読了 5 分
DynamoDB Auto Scaling (オートスケーリング) の設定方法
プロビジョンドキャパシティで DynamoDB のオートスケーリングを設定する方法。コンソールと CLI の手順、ターゲット使用率と最小/最大の選び方、それでも起きるスロットリング。
中級読了 9 分
DynamoDB のスロットリングとその直し方
DynamoDB がスロットリングする理由: 文書化された4つの原因、パーティションあたり読み取り 3,000 ユニット・書き込み 1,000 ユニットの上限、オンデマンドの立ち上がり、そして原因ごとの対処。
中級読了 10 分
DynamoDBテーブルのサイズとアイテム数を取得する方法
DynamoDBテーブルのサイズとアイテム数を、最大6時間遅れるDescribeTableの無料の推定値か、Scan Select COUNTによる正確なカウントで取得する。
初級読了 5 分
DynamoDB Global Tables:マルチリージョンレプリケーション解説
DynamoDB グローバルテーブル。マルチリージョンのアクティブ-アクティブ複製、last-writer-wins の競合解決、MREC と MRSC の整合性モード、RPO、99.999% の SLA。
上級読了 7 分
DynamoDB のバックアップと Point-in-Time Recovery ガイド
DynamoDBのバックアップとポイントインタイムリカバリ:オンデマンドのスナップショットと継続的なPITR、1〜35日のウィンドウ、リストアのコマンド、そしてリストア後に再適用すべきもの。
中級読了 7 分
理解度チェッククイズに挑戦
このセクションで学んだ内容を確認しましょう。

オンデマンドの書き込みリクエストユニットは 1 KB ごとに切り上げられる。そのため 1.1 KB の監査イベントは書き込みごとに 1 WRU ではなく 2 WRU が請求される。

毎秒 100 件の 1 KB 書き込みが持続すると、us-east-1 のオンデマンド定価(1 か月 730 時間)で書き込みだけで月約 $164.25 になる。GSI やストリームを加える前の数字だ。料金計算機で、自分のテナント数とイベントレートを見積もれる。

TTL による削除は、アイテムが期限切れになったリージョンでは書き込みキャパシティを消費しない。グローバルテーブルでは、レプリケートされた削除がほかの各リージョンで書き込みとして課金される。また削除は非同期で、通常は期限切れから数日以内に行われる。

削除を期限どおりに実行し、それを証明しなければならない場合は、期限の時点で DeleteItem(または BatchWriteItem)で自分で削除してログに残し、TTL はバックストップにする。

期限切れのアイテムが消えるまでは、読み取り時に TTL 属性で除外する。

定常的な監査の追記は料金計算機で見積もる。バーストについては、オンデマンドは直前のピークの 2 倍までを即座に吸収する。それより大きいものは事前ウォームする(オンデマンドのスループット)。

DynoTable で見る

DynoTable をダウンロードし、読み進めながら監査テーブルを調べよう。テーブルのツールバーにある 設定 ボタンでテーブル設定ダイアログが開く。その「概要」には、キー構造、GSI、DynamoDB によるサイズとアイテム数の見積もりが表示される。

TTL コンバーターは、カレンダーの日付を TTL 属性用の epoch 秒に変換する(TTL が期待するのはミリ秒ではなく秒)。

同じダイアログで、キャパシティモードの切り替え、RCU/WCU の編集、TTL の設定、ポイントインタイムリカバリのオン/オフ、グローバルテーブルのレプリカの追加と削除ができる。

バックアップ、復元、Streams の設定は AWS コンソールか Infrastructure as Code に留まる。