Azure Cosmos DB 分析ストアでの変更データ キャプチャ

適用対象: NoSQL MongoDB

Azure Cosmos DB 分析ストア の変更データ キャプチャ (CDC) を使用すると、分析ストアから変更 (挿入、更新、削除) されたデータの継続的および増分フィードを効率的に使用できます。 Azure Synapse および Azure Data Factory とシームレスに統合されており、大量のデータに対してスケーラブルなノーコード エクスペリエンスを提供します。 変更データ キャプチャフィーチャーは分析ストアに基づいているため、 プロビジョニングされた RU は使用されません。トランザクション ワークロードには影響せず、待機時間が短く、TCO も低くなります。

Azure Cosmos DB 分析ストアの変更データ キャプチャ機能では、Azure Synapse または Azure Data Factory データ フローを使用して、さまざまなシンクに書き込むことができます。

Azure Cosmos DB の分析ストアの図と、変更データ キャプチャを使用して、さまざまなファースト パーティおよびサードパーティのターゲット サービスに書き込む方法。

マッピング データ フローでサポートされているシンクの種類の詳細については、データ フローでサポートされるシンクの種類に関する記事を参照してください。

分析ストアから多様なターゲットへの増分データ フィードを提供するだけでなく、変更データ キャプチャでは次の機能がサポートされます:

  • 削除と中間更新のキャプチャをサポート
  • 特定の種類の操作に対して変更フィードをフィルター処理する機能 (挿入 | 更新 | 削除 | TTL)
  • ソース クエリを使用した変更フィードへのフィルター、プロジェクション、変換の適用をサポート
  • 同じコンテナー上の複数の変更フィードを同時に使用できます
  • コンテナーの各変更は変更データ キャプチャ フィードに 1 回だけ表示され、チェックポイントは自動で内部的に管理されます
  • 変更は、"最初から"、"特定のタイムスタンプから"、または "今から" 同期できます
  • 変更を利用できるデータ保持期間に関しては制限はありません

内部管理されたチェックポイントを使用した効率的な増分データ キャプチャ

Cosmos DB コンテナーの各変更は CDC フィードに 1 回だけ表示され、チェックポイントは自動で内部的に管理されます。 これは、"_ts" 値に基づいてカスタム チェックポイントを使用する一般的なパターンにおける次の欠点に対処するのに役立ちます。

  • "_ts" フィルターはデータ ファイルに対して適用され、常に最小限のデータ スキャンが保証されるとは限りません。 新しい CDC 機能の内部管理された GLSN ベースのチェックポイントにより、メタデータに基づいて増分データ識別が確実に行われるので、各ストリームでの最小限のデータ スキャンが保証されます。

  • 分析ストア同期プロセスでは、"_ts" ベースの順序付けが保証されません。つまり、増分レコードの "_ts" が最後にチェックポイントされた "_ts" よりも小さい場合があり、増分ストリームで見逃される可能性があります。 新しい CDC では、増分レコードを識別するための "_ts" は考慮されないため、どの増分レコードも見逃されないことが保証されます。

特徴

Azure Cosmos DB 分析ストアの変更データ キャプチャでは、次の主要なフィーチャーがサポートされています。

最初から変更をキャプチャする

このStart from beginningオプションが選択されている場合、最初の読み込みには最初の実行時のコンテナー データの完全なスナップショットが含まれ、以降の実行では変更されたデータまたは増分データがキャプチャされます。 これはanalytical TTLプロパティによって制限され、分析ストアから TTL で削除されたドキュメントは変更フィードに含まれません。 たとえば、analytical TTL が 31536000 秒 (1 年に相当) に設定されているコンテナーがあるとします。 このコンテナーの CDC プロセスを作成すると、最初の読み込みには 1 年前より新しいドキュメントのみが含まれます。

指定されたタイムスタンプからの変更のキャプチャ

このStart from timestampオプションが選択されている場合、最初の読み込みでは指定されたタイムスタンプからのデータが処理され、以降の実行では増分データまたは変更されたデータがキャプチャされます。 このプロセスは、analytical TTLプロパティによっても制限されます。

現時点からの変更のキャプチャ

このStart from timestampオプションが選択されている場合、コンテナーの過去のすべての操作がキャプチャされる訳ではありません。

削除、中間更新、TTLのキャプチャ

分析ストアの変更データ キャプチャ機能は、削除、中間更新、TTL 操作をキャプチャします。 キャプチャされた削除と更新は、削除操作と更新操作をサポートするシンクに適用できます。 {_rid} 値はレコードを一意に識別するため、シンク側のキー列として {_rid} を指定すると、更新操作と削除操作がシンクに反映されます。

TTL 操作は削除と見なされることに注意してください。 ソース設定セクションをチェックして、モードの詳細と、シンクでの中間更新と削除のサポートを確認します。

特定の型の操作について、変更フィードをフィルター処理します

特定の型の操作について、変更フィードをフィルター処理することはできます。 たとえば、挿入操作と更新操作のみを選択的にキャプチャできるため、ユーザー削除操作と TTL 削除操作は無視されます。

ソース クエリを使用した変更フィードへのフィルター、プロジェクション、および変換の適用

必要に応じて、ソース クエリを使用してフィルター、プロジェクション、変換を指定できます。これらはすべて、列分析ストアにプッシュダウンされます。 フィルター Category = 'Urban'を使用して増分レコードのみをキャプチャするソース クエリの例を次に示します。 このサンプル クエリでは、5 つのフィールドのみをプロジェクトし、単純な変換を適用します:

SELECT ProductId, Product, Segment, concat(Manufacturer, '-', Category) as ManufacturerCategory
FROM c 
WHERE Category = 'Urban'

複数の CDC プロセス

分析ストアで CDC を使用する複数のプロセスを作成できます。 このアプローチにより、さまざまなシナリオと要件を柔軟にサポートできるようになります。 あるプロセスはデータ変換なしで複数のシンクを含み、別のものはデータのフラット化と 1 つのシンクを含むといったことが可能です。 また、それらは並列に実行できます。

スループットの分離、待機時間の短縮、TCO の削減

Cosmos DB 分析ストアに対する操作では、プロビジョニングされた RU は使用されないため、トランザクション ワークロードには影響しません。 分析ストアを使用した変更データ キャプチャの待機時間も短く、TCO も低くなります。 待ち時間が短くなるのは、分析ストアがデータ処理の並列処理を向上させ、TCO 全体を削減し、急速にシフトする経済状況でコスト効率を高めるのに起因します。

シナリオ

変更データ キャプチャと分析ストアを使用できる一般的なシナリオを次に示します。

Cosmos DB からの増分データの使用

分析ストアの変更データ キャプチャは、現在使用している場合、または使用することを計画している場合に使用できます:

  • Azure Data Factory データ フローまたはCopy アクティビティを使用した増分データ キャプチャ。
  • Azure Data Factoryを使用した 1 回限りのバッチ処理。
  • Azure Cosmos DB データへのストリーミング
    • 分析ストアには、トランザクション ストア データを同期するための最大 2 分の待機時間があります。 データ フローのスケジュールは、1 分ごとにAzure Data Factoryでできます。
    • 上記の待機時間なしでストリーミングする必要がある場合は、トランザクション ストアの変更フィードフィーチャーを使用することをお勧めします。
  • 削除のキャプチャ、増分変更、Cosmos DB データへのフィルターの適用。
    • Azure Functions トリガーまたはその他のオプションを変更フィードと共に使用していて、削除、増分変更、変換の適用などをキャプチャする場合は、分析ストアに対する変更データ キャプチャをお勧めします。

任意の分析プラットフォームへの増分フィード

変更データ キャプチャ機能を使用すると、エンドツーエンドの分析ソリューションを実現して、サポートされている任意のシンクの種類で Azure Cosmos DB データを柔軟に使用できます。 サポートされているシンクの種類の詳細については、データ フローでサポートされるシンクの種類に関する記事を参照してください。 変更データ キャプチャでは、Azure Cosmos DB データを一元化されたデータ レイクに取り込み、そのデータを他の多様なソースのデータと結合することもできます。 データをフラット化し、分割して、Azure Synapse Analytics または Azure Data Factory でさらに多くの変換を適用できます。

Azure Cosmos DB for MongoDB コンテナーでの変更データ キャプチャ

MongoDB 用 API のリンクされたサービス インターフェイスは、Azure Data Factoryデータ フロー内ではまだ使用できません。 Mongo のリンクされたサービスが直接サポートされるまで、Azure Cosmos DB for NoSQL のリンクされたサービス インターフェイスを使用して、MongoDB のアカウント エンドポイント用 API を使用できます。

新しい NoSQL のリンクされたサービスのインターフェイスで、手動で入力 を選択して Azure Cosmos DB アカウント情報を指定します。 ここでは、Mongo DB エンドポイント (例: mongodb://<account-name>.mongo.cosmos.azure.com:10255/ ) ではなく、アカウントの NoSQL ドキュメント エンドポイント (例: https://<account-name>.documents.azure.com:443/) を使用します

次のステップ