DP-900:Microsoft Azure Data Fundamentals Azure の非リレーショナルデータ 問8
Azure の非リレーショナルデータ/Azure Cosmos DB の機能あるチームは、複数リージョンに分散した Azure Cosmos DB アカウント上でグローバルに利用される予約管理アプリケーションを開発しています。同一ユーザーが自分自身で書き込んだ変更については、その後の読み取りで必ず反映された状態(自分の書き込みを読める状態)を見えるようにしつつ、最終的な整合性と同程度の低い書き込みレイテンシと高い可用性・読み取りスループットを維持したいと考えています。採用すべき整合性レベルはどれか。
当サイトのオリジナル問題(DP-900:Microsoft Azure Data Fundamentalsの出題範囲「Azure の非リレーショナルデータ」に対応。実際の試験問題ではありません)
- A強い整合性
- B有界整合性制約
- C最終的な整合性
- Dセッション整合性
正解:D
解説
正解はセッション整合性です。セッション整合性は、単一のクライアントセッション内での読み取りについて、自分が行った書き込みを読み取れること(自己書き込みの読み取り)と、書き込み後の読み取りの順序が保たれること(読み取り後の書き込みの優先)を保証します。そのうえで、書き込みレイテンシ・可用性・読み取りスループットは最終的な整合性と同程度であり、単一リージョンおよびグローバルに分散したアプリケーションの双方で最も広く使われている整合性レベルです。強い整合性は最新のコミット済みデータを常に返しますが、複数の書き込みリージョンを持つ構成では利用できず、書き込みレイテンシもリージョン間のラウンドトリップ時間の影響を受けて大きくなります。有界整合性制約はリージョン間のデータの遅延を一定の範囲(バージョン数や時間)に収める整合性レベルで、複数書き込みリージョン構成ではアンチパターンとされています。最終的な整合性は4つのレプリカのいずれかから読み取るため、自分自身の書き込みを直後に読み取れるとは限りません。
選択肢ごとの解説
- A誤り。強い整合性は最新のコミット済みデータを常に返す最も強いレベルですが、複数の書き込みリージョンを持つ構成では利用できず、書き込みレイテンシもリージョン間のラウンドトリップ時間の影響を受けて大きくなります。
- B誤り。有界整合性制約はリージョン間のデータの遅延を一定のバージョン数または時間内に収めるレベルですが、複数の書き込みリージョン構成ではアンチパターンとされ、単一ユーザーの自己書き込みの読み取りを目的とした仕組みではありません。
- C誤り。最終的な整合性は4つのレプリカのいずれかから読み取るため、クライアントが自分自身で行った書き込みを直後に読み取れるとは限りません。
- D正しい。セッション整合性は単一のクライアントセッション内で自己書き込みの読み取りと読み取り後の書き込みの優先を保証しつつ、書き込みレイテンシ・可用性・読み取りスループットは最終的な整合性と同程度であり、単一リージョン・グローバル分散の両方で最も広く使われています。