変更要約: DP-420 第3章を新規作成(ドメイン2+3: レプリケーション・一貫性(strong/bounded staleness/session/consistent prefix/eventual の5レベル・最新性 vs RU/遅延)・自動/手動フェイルオーバー・マルチリージョン書き込み・競合解決(LWW/カスタム)、分析統合(分析ストア analytical store/Azure Synapse Link HTAP/Microsoft Fabric ミラーリング vs Spark コネクタ/CDC/Change Feed + Azure Functions 非正規化・参照整合・集計・アーカイブ/Event Hubs/Azure AI Search))。
3.1レプリケーション・一貫性・マルチリージョン書き込み
Azure Cosmos DB のレプリケーション戦略、5 つの一貫性レベル、自動/手動フェイルオーバー、マルチリージョン書き込みとカスタム競合解決を理解します。
Cosmos DB は複数リージョンへ グローバル分散 できる。可用性と遅延を高める一方、一貫性(読み取りがどれだけ最新か)と RU コスト・性能のトレードオフを設計で選びます。
3.1.15 つの一貫性レベル
強い順に 5 段階=強力(strong)=常に最新を読むが遅延と RU が最大(マルチリージョン書き込みとは併用不可)、有界整合性制約(bounded staleness)=最大 K 操作 or T 時間の遅延を許容、セッション(session)=同一セッション内で自分の書き込みを読める・既定でバランス良、整合性のあるプレフィックス(consistent prefix)=順序は保証するが最新は保証しない、最終的(eventual)=最弱で最速・最安。要件(最新性 vs 遅延/コスト)に応じて選び、SDK のクエリ要求オプションで弱める方向にのみ上書きできる。
3.1.2フェイルオーバーとマルチリージョン書き込み
単一書き込みリージョン構成では、自動フェイルオーバーポリシー でリージョン障害時に書き込みリージョンを自動で別リージョンへ移す(優先順位を指定)。計画的な移動は 手動フェイルオーバー で行う。マルチリージョン書き込み(multi-region writes) を有効にすると全リージョンで書き込めて低遅延・高可用になるが、同一項目が同時に別リージョンで更新されると競合が起きる。競合は Last Write Wins(LWW・既定/指定プロパティの最大値) か カスタム競合解決(ストアドプロシージャ) で解決する。「全リージョンで書きたい」=マルチリージョン書き込み+競合解決設計、が定石。
決め手:「常に最新」=strong(遅延/RU 最大・MRW 不可)。「K 操作/T 時間まで遅延許容」=bounded staleness。「自分の書き込みを読む・既定」=session。「順序のみ保証」=consistent prefix。「最速最安」=eventual。「全リージョンで書く」=マルチリージョン書き込み+競合解決(LWW/カスタム)。障害時自動移動=自動フェイルオーバー。
混同に注意:
①strong はマルチリージョン書き込みと併用できない。
②一貫性は弱める方向のみ上書き可(アカウント設定より強くはできない)。
③マルチリージョン書き込みは競合解決ポリシーの設計が必須。
④自動フェイルオーバー(障害時)と手動フェイルオーバー(計画移動)を取り違えない。
3.1.3この節のまとめ
- 一貫性5段=strong/bounded staleness/session(既定)/consistent prefix/eventual・最新性とRU遅延のトレードオフ
- 自動フェイルオーバー(障害時)/手動フェイルオーバー(計画移動)で書き込みリージョンを移す
- マルチリージョン書き込み=全リージョンで書く・競合解決(LWW/カスタムストアドプロシージャ)が必須
進捗の記録にはログインが必要です。
理解度チェック
(軽い確認用)Q1. 読み取りで常に最新の書き込みを保証したい(遅延と RU コストの増加は許容)。最適な一貫性レベルはどれですか?
Q2. 同一セッション内で自分が書いた値を必ず読めればよく、バランスの良い既定を使いたい。最適な一貫性レベルはどれですか?
Q3. 最大 K 操作または T 時間までの遅延(陳腐化)を許容しつつ、強めの整合を保ちたい。最適な一貫性レベルはどれですか?
Q4. すべてのリージョンで低遅延に書き込めるようにしたい。最適なのはどれですか(競合解決の設計も必要)?
Q5. マルチリージョン書き込みで同一項目が別リージョンで同時更新された競合を、既定の方法で解決したい。最適なのはどれですか?

