変更要約: DP-420 第4章を新規作成(ドメイン4: クエリ最適化とインデックス(インデックスポリシー included/excluded path・書き込み多 vs 読み取り多・複合インデックス・range/spatial・統合キャッシュ integrated cache 専用ゲートウェイ・RU コスト request charge/クエリメトリクス)、変更フィード(Azure Functions トリガー/SDK change feed processor・lease/変更フィードエスティメーター backlog/非正規化更新・参照強制・集計永続化・アーカイブ))。
4.1クエリ最適化とインデックス
インデックス調整、クエリの RU コスト計算/取得、統合キャッシュ、読み取り多 vs 書き込み多のインデックス戦略、複合インデックス、カスタムインデックスポリシーを理解します。
Cosmos DB は既定で全プロパティをインデックスします。インデックスポリシー をワークロードに合わせて調整することが、クエリ性能と RU コストの最適化の核心です。
4.1.1インデックス戦略と複合インデックス
カスタムインデックスポリシーでは included path(インデックスする) と excluded path(除外する) を指定する。書き込み多のワークロード は不要なパスを除外してインデックス更新の RU を下げる(インデックスが少ないほど書き込みは安い)。読み取り多 はクエリの絞り込みに使うパスをインデックスする。複合インデックス(composite index) は、複数プロパティでの ORDER BY や複数フィルタを効率化する(単一インデックスでは賄えないクエリ向け)。空間データには spatial インデックス、範囲/等価には range インデックス を用途で選ぶ。
4.1.2RU コストの把握と統合キャッシュ
クエリやポイント操作の RU 消費 は応答ヘッダー(x-ms-request-charge)や クエリメトリクス で取得し、コストの高いクエリを特定して最適化する。読み取りが非常に多くデータがあまり変わらないワークロードでは Cosmos DB 統合キャッシュ(integrated cache) を使い、専用ゲートウェイ(dedicated gateway) 経由でポイント読み取りやクエリ結果をキャッシュして RU を大幅に削減する(結果整合の許容が前提)。「読み取り多で RU を下げたい」=統合キャッシュ、「クエリのコストを知りたい」=request charge/クエリメトリクス、が定石。

