次の方法で共有


Azure Cosmos DB における複数リージョン書き込みについて

適用対象: NoSQL MongoDB Cassandra Gremlin Table

読み取りの一貫性を保証する必要がない部分的または全面的な停止シナリオでほぼゼロのダウンタイムを実現する最善の方法は、複数リージョンの書き込み用にアカウントを構成することです。 この記事では、複数リージョン書き込みのアカウントを構成するときに注意する必要がある主な概念について説明します。

ハブ リージョン

複数のリージョンを持つ複数リージョン書き込みデータベース アカウントでは、アカウントが作成された最初のリージョンを "ハブ" リージョンと呼びます。 その後アカウントに追加されるその他のすべてのリージョンは、"サテライト" リージョンと呼ばれます。 ハブ リージョンがアカウントから削除されると、追加された順序で次のリージョンがハブ リージョンとして自動的に選択されます。

サテライト リージョンに到着するすべての書き込みは、ローカル リージョンでクォーラム コミットされ、競合解決のために後でハブ リージョンに非同期で送信されます。 書き込みがハブ リージョンに送信され、競合が解決されると、"確認済み" の書き込みになります。 それまでは、"仮" の書き込みまたは "未確認" の書き込みと呼ばれます。 ハブ リージョンから提供された書き込みはすべて、すぐに確認済みの書き込みになります。

タイムスタンプについて

複数リージョン書き込みアカウントの主な違いの 1 つは、各エンティティに関連付けられた 2 つのサーバー タイムスタンプ値の存在です。 最初のタイムスタンプ値は、エンティティがそのリージョンに書き込まれたサーバー エポック時間です。 このタイムスタンプは、単一リージョン書き込みと複数リージョン書き込みの両方のアカウントで使用できます。 2 番目のサーバー タイムスタンプ値は、競合がないことが確認されたか、ハブ リージョンで競合が解決されたエポック時間に関連付けられます。 確認済みまたは競合解決済みの書き込みには、競合解決タイムスタンプ (crts) が割り当てられますが、未確認または仮の書き込みには crts がありません。 Cosmos DB には、サーバーによって設定される 2 つのタイムスタンプがあります。 主な違いは、アカウントのリージョン構成が単一書き込みであるか、複数書き込みであるかです。

タイムスタンプ 意味 公開される時点
_ts エンティティが書き込まれたサーバー エポック時間。 すべての読み取り API とクエリ API によって常に公開されます。
crts 複数書き込みの競合が解決されたか、競合がないことが確認されたエポック時間。 複数書き込みリージョン構成の場合、このタイムスタンプは、変更フィードの変更の順序を定義します。

  • 変更フィード要求の開始時刻を見つけるために使用されます
  • 変更フィード応答で並べ替え順序として使用されます。
変更フィード要求に応答して、要求によって "新しいワイヤ モデル" が有効になっている場合にのみ公開されます。 これは、すべてのバージョンと削除の変更フィード モードの既定値です。

次のステップ

次に、次の記事をお読みください。