Azure非リレーショナル応用
あるグローバルECサイトがCosmos DBのマルチリージョン読み取り構成(プライマリリージョン:米国東部、セカンダリリージョン:ヨーロッパ西部・東アジア)を使用しています。ヨーロッパのユーザーが商品を注文した直後、その注文データを読み取ろうとしたとき、「データがまだ到着していない」というエラーが発生しました。原因として最も可能性の高いものはどれか?
A.ヨーロッパリージョンの可用性が一時的に低下しており、読み取りリクエストがタイムアウトしている。別リージョンへの自動フェイルオーバーを待つ必要がある
✗ リージョンの完全な停止なら自動フェイルオーバーが発生しますが、部分的な遅延レプリケーションの場合は、フェイルオーバーは発動しません。一時的なレイテンシが原因です。
B.整合性レベルが「強い一貫性」に設定されており、プライマリ(米国東部)からセカンダリ(ヨーロッパ西部)へのレプリケーション完了を待つ間にタイムアウトが発生した。整合性レベルを「セッション一貫性」に変更すべき
✗ 強い一貫性は確かにレプリケーション待機を要求しますが、セッション一貫性に変更しても、地理的距離による物理的レプリケーションレイテンシは改善できません。根本的な解決ではない。
C.書き込みはプライマリリージョン(米国東部)で行われ、セカンダリリージョン(ヨーロッパ西部)へのレプリケーションには数百ms~数秒のレイテンシが存在する。ユーザーがセカンダリから読み取ろうとしたため、書き込みされたばかりのデータを読み取れない可能性がある← 正解
✓ 正解です。マルチリージョン環境では、プライマリへの書き込み後、セカンダリへのレプリケーションには数百ms~数秒のレイテンシがあります。ユーザーが書き込み直後にセカンダリから読み取ると、「読み取りスキュー」が発生します。
D.パーティションキーの設計が不適切で、書き込みと読み取りが異なるパーティションを参照している。リージョン別のパーティション戦略を導入すべき
✗ パーティションキーは各リージョンで同じロジックで機能するため、リージョン別の物理的レプリケーション遅延は別問題です。パーティション設計では解決できません。
この問題のポイント
マルチリージョン環境では、プライマリへの書き込み後、セカンダリへのレプリケーションには数百ms~数秒のレイテンシがあります。ユーザーが書き込み直後にセカンダリから読み取ると、「読み取りスキュー」が発生します。
「Azure非リレーショナル」の他の問題
あるSNS企業がユーザー同士の「フォロー」「フレンド」関係を管理するDBを設計しています。主な操作は「友達の友達を3ホッ…あるIoT企業が10,000台のスマートホームデバイスから温度・湿度・電力消費量を毎秒収集・保存しています。「デバイスI…あるECサイトがAzure Table Storageで商品カタログ(5億件)を管理しています。「クエリレイテンシが増加…あるスタートアップがオンプレミスのMongoDBアプリケーションをAzureに移行します。「既存のMongoDBドライバ…あるゲーム会社が1億人のプレイヤープロファイルを管理するDBを設計しています。「プレイヤーごとに所持アイテムが異なる(ス…Cosmos DB(Core SQL API)でコンテナを設計する際、「パーティションキーの選択」として最も適切なのはど…
IT・クラウド の関連資格
AWS Certified Cloud Practitioner(CLF-C02)
AWSクラウドの入門資格。クラウドの概念・AWSのコアサービス・セキュリティ・料金モデルを問う。
AWS Certified Solutions Architect - Associate(SAA-C03)
AWSでのシステム設計能力を問うアソシエイト資格。高可用性・セキュリティ・コスト最適化の設計が中心。
AZ-900:Microsoft Azure Fundamentals
クラウドとAzureの基礎を問うMicrosoft認定資格。クラウドの概念、Azureの主要サービス、セキュリティ・コンプライアンス・料金を扱う。