次の方法で共有


Azure Cosmos DB を使用するアプリケーションで複数リージョンの書き込みを構成する

適用対象: NoSQL

複数リージョンの書き込みシナリオでは、アプリケーション インスタンスに近いリージョンにのみ書き込むことで、パフォーマンス上の利点を得ることができます。 Azure Cosmos DB では、バックグラウンドでレプリケーションを処理します。

複数の書き込みリージョンに対してアカウントを有効にした後、アプリケーションで ConnectionPolicy に対して 2 つの変更を行う必要があります。 ConnectionPolicy の中で UseMultipleWriteLocationstrue に設定し、アプリケーションのデプロイ先となるリージョンの名前を ApplicationRegion に渡します。 このアクションにより、渡された場所との地理的な近接性に基づいて PreferredLocations プロパティが設定されます。 後で新しいリージョンがアカウントに追加された場合でも、アプリケーションの更新や再デプロイを行う必要はありません。 地域イベントが発生した場合、最も近いリージョンを自動的に検出し、そのリージョンに自動的に狙いを定めます。

最初に単一の書き込みリージョンで構成された Azure Cosmos DB アカウントは、ダウンタイムがゼロの複数の書き込みリージョンに構成できます。 詳細については、「 複数の書き込みリージョンを構成する」を参照してください。

Azure portal

マルチリージョン書き込みを使用するには、Azure portal を使用して、複数のリージョンに対して Azure Cosmos DB アカウントを有効にします。 アプリケーションが書き込むことができるリージョンを指定します。

  1. Azure portal にサインインします。

  2. Azure Cosmos DB アカウントに移動します。 メニューから、[ データをグローバルにレプリケート ] ウィンドウを開きます。

  3. 複数リージョン書き込みのオプションで、 [有効] を選択します。 読み取りと書き込みリージョンに、既存のリージョンが自動的に追加されます。

  4. リージョンをさらに追加するには、マップ上のアイコンを選択するか、[リージョンの追加] ボタンを選択します。 追加するすべてのリージョンで、読み取りと書き込みの両方が有効になります。

  5. リージョンの一覧を更新したら、[保存] を選択して変更を適用します。

    Azure portal を使用して複数リージョンの書き込みを有効にする方法を示すスクリーンショット。

.NET SDK v2

アプリケーションで複数リージョン書き込みを有効にするには、UseMultipleWriteLocationstrue に設定します。 また、SetCurrentLocation は、アプリケーションがデプロイされ、Azure Cosmos DB がレプリケートされているリージョンに設定します。

ConnectionPolicy policy = new ConnectionPolicy
    {
        ConnectionMode = ConnectionMode.Direct,
        ConnectionProtocol = Protocol.Tcp,
        UseMultipleWriteLocations = true
    };
policy.SetCurrentLocation("West US 2");

.NET SDK v3

アプリケーションで複数リージョン書き込みを有効にするには、ApplicationRegion を、アプリケーションがデプロイされ、Azure Cosmos DB がレプリケートされているリージョンに設定します。

CosmosClient cosmosClient = new CosmosClient(
    "<connection-string-from-portal>", 
    new CosmosClientOptions()
    {
        ApplicationRegion = Regions.WestUS2,
    });

必要な場合は、CosmosClientBuilderWithApplicationRegion を使用して同じ結果を得ることもできます。

CosmosClientBuilder cosmosClientBuilder = new CosmosClientBuilder("<connection-string-from-portal>")
            .WithApplicationRegion(Regions.WestUS2);
CosmosClient client = cosmosClientBuilder.Build();

Java V4 SDK

アプリケーションで複数リージョンの書き込みを有効にするには、クライアント ビルダーで .multipleWriteRegionsEnabled(true).preferredRegions(preferredRegions) を呼び出します。 preferredRegions は、データが優先順にレプリケートされるリージョンの List です。 最も短い距離または最適な待機時間のリージョンが最初に一覧表示されるのが理想的です。

Java SDK V4 (Maven com.azure::azure-cosmos) 非同期 API:


ArrayList<String> preferredRegions = new ArrayList<String>();
preferredRegions.add(region);

CosmosAsyncClient client =
        new CosmosClientBuilder()
                .endpoint(HOST)
                .key(MASTER_KEY)
                .multipleWriteRegionsEnabled(true)
                .preferredRegions(preferredRegions)
                .buildAsyncClient();

Async Java V2 SDK

Java V2 SDK は Maven com.microsoft.azure::azure-cosmosdb を使用します。 アプリケーションで複数リージョンの書き込みを有効にするには、policy.setUsingMultipleWriteLocations(true)を設定し、データが優先順にレプリケートされるリージョンのListpolicy.setPreferredLocationsを設定します。 最も短い距離または最適な待機時間のリージョンが最初に一覧表示されるのが理想的です。

ConnectionPolicy policy = new ConnectionPolicy();
policy.setUsingMultipleWriteLocations(true);
policy.setPreferredLocations(Collections.singletonList(region));

AsyncDocumentClient client =
    new AsyncDocumentClient.Builder()
        .withMasterKeyOrResourceToken(this.accountKey)
        .withServiceEndpoint(this.accountEndpoint)
        .withConsistencyLevel(ConsistencyLevel.Eventual)
        .withConnectionPolicy(policy).build();

Node.js、JavaScript、および TypeScript SDK

アプリケーションで複数リージョン書き込みを有効にするには、connectionPolicy.UseMultipleWriteLocationstrue に設定します。 また、データが優先順にレプリケートされるリージョンに connectionPolicy.PreferredLocations を設定します。 最も短い距離または最適な待機時間のリージョンが最初に一覧表示されるのが理想的です。

const connectionPolicy: ConnectionPolicy = new ConnectionPolicy();
connectionPolicy.UseMultipleWriteLocations = true;
connectionPolicy.PreferredLocations = [region];

const client = new CosmosClient({
  endpoint: config.endpoint,
  auth: { masterKey: config.key },
  connectionPolicy,
  consistencyLevel: ConsistencyLevel.Eventual
});

Python SDK

アプリケーションで複数リージョン書き込みを有効にするには、connection_policy.UseMultipleWriteLocationstrue に設定します。 また、データが優先順にレプリケートされるリージョンに connection_policy.PreferredLocations を設定します。 最も短い距離または最適な待機時間のリージョンが最初に一覧表示されるのが理想的です。

connection_policy = documents.ConnectionPolicy()
connection_policy.UseMultipleWriteLocations = True
connection_policy.PreferredLocations = [region]

client = cosmos_client.CosmosClient(self.account_endpoint, {
                                    'masterKey': self.account_key}, connection_policy, documents.ConsistencyLevel.Session)

Go SDK (ソフトウェア開発キット)

アプリケーションでマルチリージョンを有効にするには、PreferredRegionsを使用します。

client, err := azcosmos.NewClient(endpoint, token, &azcosmos.ClientOptions{
	PreferredRegions: []string{"West US", "Central US"},
})

次のステップ