Azure Cosmos DB の整合性レベルについて正しい説明を 2 つ選択してください。
- A. 有界整合性制約(Bounded Staleness)は複数リージョン間でリアルタイム同期を保証し、書き込みが即座に全リージョンに反映される
- B. セッション(Session)整合性は Cosmos DB のデフォルト整合性であり、単一クライアントセッション内での単調読み取り・単調書き込み・自身の書き込みを読む(Read Your Writes)を保証する
- C. 厳密(Strong)整合性は、コミットされた最新の書き込みが常にどのリージョンの読み取りでも反映されることを保証するが、マルチリージョン書き込みではリージョン間のラウンドトリップレイテンシが加算される
- D. 最終的(Eventual)整合性はコミットされていないデータも読み取る可能性があり、ダーティリードが発生する
- E. 整合性レベルはアカウントレベルでのみ設定可能であり、リクエストごとに動的に変更することはできない
解答と解説を見る
正解: B, C
厳密整合性は線形化可能性(linearizability)を保証し、どのリージョンの読み取りでも最新のコミット済み書き込みが必ず反映される。しかしマルチリージョン書き込みでは、書き込みが全レプリカにコミットされるまでリージョン間のラウンドトリップが発生するため書き込みレイテンシが増加する。セッション整合性は Azure Cosmos DB のデフォルト整合性レベルであり、同一クライアントセッション内で Read Your Writes(自分の書き込みは必ず読み取れる)・単調読み取り(時間的に前の値より古い値を返さない)・単調書き込みを保証する。ほとんどのユースケースで適切なバランスを提供する。選択肢 D は誤りで、最終的整合性はコミットされていないデータ(ダーティリード)は読み取らない。読み取るのは最新でない可能性があるコミット済みデータであり、ダーティリードとは区別される。選択肢 A は誤りで、有界整合性制約は K 操作または T 時間以内の遅延を「許容する」ものであり、リアルタイム同期を保証するものではない。選択肢 E は誤りで、Cosmos DB はリクエストレベルでより弱い整合性レベルに変更できる(アカウント設定より緩い方向にのみ上書き可能)。
📚 関連サービスの解説: Azure Cosmos DB