変更要約: DP-420 第1章を新規作成(ドメイン1前半: 非リレーショナルモデリング(embed vs reference/非正規化/id・パーティションキー・一意キー/既定 TTL/バージョニング)、パーティション設計(キー選定/ホットパーティション・429/クロスパーティションコスト/データ・スループット分散/合成キー/階層パーティションキー/同一論理パーティション内トランザクション)、サイジングとスケーリング(RU/s/サーバーレス vs プロビジョニング vs Free/オートスケール/データベースレベルスループット/グローバル分散コスト))。
1.3サイジングとスケーリング
スループット/ストレージ要件の評価、リクエストユニット(RU/s)、サーバーレス・プロビジョニング・Free 層、オートスケール、データベースレベルスループット、グローバル分散コストを理解します。
Cosmos DB のコストと性能は リクエストユニット(RU) で測る。読み取り/書き込み/クエリはそれぞれ RU を消費し、課金とスループットの単位になる。要件に合うスループットモデルの選択が設計の要点です。
1.3.1サーバーレス・プロビジョニング・Free 層
サーバーレス は消費した RU だけ課金で、断続的/予測不能/低トラフィックの開発・小規模に向く。プロビジョニングスループット は RU/s を確保し、安定/高トラフィックの本番に向く。プロビジョニングは 手動(固定 RU/s) と オートスケール(上限内で 10%〜100% を自動変動) があり、変動の大きいワークロードはオートスケールでピークに追従しつつアイドルコストを抑える。Free 層 はアカウントごとに一定の RU/s とストレージを無償提供する。
1.3.2スループットの粒度とグローバル分散コスト
スループットは コンテナレベル(そのコンテナ専用)か データベースレベル(DB 内の複数コンテナで共有)で構成する。多数の小さなコンテナをまとめて低コストに回したいときは データベースレベルプロビジョニング が有効。グローバル分散では リージョンを追加するごとに、そのリージョン分のプロビジョニング RU/s がコストとして加算される(マルチリージョン書き込みではさらに増える)ため、可用性/遅延の要件とコストを天秤にかける。
決め手:「断続的/予測不能/低トラフィック」=サーバーレス。「安定/高トラフィック本番」=プロビジョニング(手動)。「変動が大きい」=オートスケール。「多数の小コンテナを共有」=データベースレベルスループット。「リージョン追加=RU/s 分のコスト増」。RU は読み書きクエリの課金/スループット単位。
混同に注意:
①サーバーレス(消費課金・単一リージョン中心)とプロビジョニング(RU/s 確保)の使い分け。
②オートスケールは上限の 10%〜100% で変動=常時最大ではない。
③データベースレベル共有は均等配分の癖があり、ホットなコンテナには専用スループットが要ることがある。
④RU が不足すると 429(レート制限)→SDK のリトライで対処。
1.3.3この節のまとめ
- RU/s が課金/スループットの単位=サーバーレス(消費)・プロビジョニング(確保)・オートスケール(変動)を要件で選ぶ
- スループットはコンテナレベル or データベースレベル(複数コンテナ共有)で構成
- リージョン追加ごとに RU/s 分のコストが増える=可用性/遅延とコストを天秤に
進捗の記録にはログインが必要です。
理解度チェック
(軽い確認用)Q1. トラフィックが断続的で予測しづらい開発用の小規模 Cosmos DB を、使った分だけ課金で運用したい。最適なのはどれですか?
Q2. トラフィックの変動が大きい本番ワークロードで、ピークに追従しつつアイドル時のコストを抑えたい。最適なのはどれですか?
Q3. 多数の小さなコンテナをまとめてコスト効率よくスループットを共有したい。最適なのはどれですか?
Q4. Cosmos DB でリージョンを追加してグローバル分散する際のコストへの影響として正しいのはどれですか?
Q5. プロビジョニング RU/s が不足したときに Cosmos DB が返すものとして正しいのはどれですか?

