Azure DocumentDB に Change Feed のサポートを導入
執筆者: Aravind Ramachandran (Program Manager, Azure DocumentDB)
このポストは、12 月 14 日に投稿された Introducing Change Feed support in Azure DocumentDB の翻訳です。
このたび、Azure DocumentDB に Change Feed (英語) のサポートが導入されました。Change Feed のサポートにより、DocumentDB コレクション内のドキュメントの一覧が更新日時順に並べ替えられて表示されます。このフィードを利用することで、コレクション内のデータに対する変更をリッスンし、以下のようなアクションを実行できます。
- ドキュメントが挿入または変更された場合に API の呼び出しをトリガーする
- 更新内容に対してリアルタイムの (ストリーム) 処理を実行する
- キャッシュ、検索エンジン、データ ウェアハウスとデータを同期する
DocumentDB の Change Feed はすべてのアカウントについて既定で有効になっており、追加料金は発生しません。なお、DocumentDB の他の操作と同様に、書き込みを実行するリージョンや Change Feed からの読み取りを実行するリージョンでは、プロビジョニングしたスループットを利用できます。
この記事では、新しい Change Feed のサポートについてご説明すると共に、Azure DocumentDB を使用して応答性とスケーラビリティに優れた堅牢なアプリケーションを作成する方法についてご紹介します。
Azure DocumentDB における Change Feed のサポート
Azure DocumentDB は、大量のトランザクション データや運用データの保存に利用される高速かつ柔軟な NoSQL データベース サービスであり、読み取り/書き込み処理を 10 ミリ秒未満の予測可能なレイテンシで実行します。このため、IoT、ゲーム、小売、操作ログといったアプリケーションに最適です。こうしたアプリケーションでは多くの場合、DocumentDB のデータに対する変更を追跡し、その変更内容に基づいて、具体化されたビューの更新、リアルタイム分析の実行、通知のトリガーなどさまざまなアクションを実行する必要があります。Change Feed のサポートにより、こうしたパターンに対応できる効率性と拡張性に優れたソリューションを構築できます。
特に IoT や小売など最新のアプリケーション アーキテクチャの多くは、ストリーミング データをリアルタイムで処理して解析計算結果を生成します。こうしたアプリケーション アーキテクチャ (「ラムダ パイプライン」) では従来、迅速なデータ取得用の書き込みに最適化されたストレージ ソリューションと、リアルタイム クエリ用の読み取りに最適化されたデータベースがそれぞれ独立していました。Change Feed のサポートにより、データ取得とクエリの両方に対応する単一のシステムとして DocumentDB を利用し、よりシンプルかつ低コストのラムダ パイプラインを構築できるようになります。詳細については、DocumentDB の TCO (英語) に関するホワイト ペーパーをご覧ください。
ストリーム処理 : データセット全体に対してクエリを実行する代わりに、ストリームベースの処理を行うことで、変更内容をスピーディに特定できます。たとえば、DocumentDB に構築されたゲームの場合、Change Feed を利用することで、クリアしたゲームのスコアを表示するリアルタイムのランキングを実装することが可能です。また、DocumentDB を使用して、さまざまなデバイス、センサー、インフラストラクチャ、アプリケーションからイベント データを受信して保存したうえで、Change Feed のサポートにより、Azure Stream Analytics、Apache Storm、Apache Spark などを利用してこうしたイベントをリアルタイムで処理できます。
トリガー/イベント コンピューティング: ドキュメントが挿入または変更された場合に API を呼び出すなど、追加のアクションを実行できるようになりました。たとえば、Web アプリやモバイル アプリで、ユーザーのプロファイル、好み、所在地に対する変更といったイベントを追跡し、Azure Functions や Azure App Service を使用してユーザーのデバイスにプッシュ通知を送信するといったアクションをトリガーできます。
データ同期 : DocumentDB に保存されているデータをキャッシュ、検索インデックス、データ レイクと常に同期する必要がある場合は、Change Feed の堅牢な API によってデータ パイプラインを構築できます。Change Feed により、データベースが更新された場合にその更新内容を複製したり、ワーカーに障害が発生したときに同期を復旧および再開したり、複数のワーカーに処理を分散させることでスケーラビリティを実現したりすることが可能です。
Change Feed API の利用
Change Feed は、REST API 2016-07-11 と SDK バージョン 1.11.0 (英語) 以降で利用できます。コードへの実装方法については、Change Feed API (英語) のドキュメントを参照してください。
Change Feed には以下の特長があります。
- 変更内容 DocumentDB 内に保持され、非同期で処理できます。
- コレクション内のドキュメントに対する変更は、Change Feed にすぐに反映されます。
- 各ドキュメントに対する変更は Change Feed に 1 回だけ反映されます。変更ログには、特定のドキュメントに対する最新の変更のみが記録されます。途中の変更は利用できない可能性があります。
- Change Feed は、パーティション キー値ごとに変更日時順に並べ替えられます。パーティション キー値が異なる場合、順序は保証されません。
- 変更の同期は任意の時点から行うことが可能です。つまり、変更内容を利用できるデータ保持期間は一定ではありません。
- 変更内容は、パーティション キーの範囲として利用できます。この機能により、複数のコンシューマーまたはサーバーが大規模なコレクションの変更を並行して処理できます。
- アプリケーションは、同じコレクションに対して複数の Change Feed を同時に要求できます。
次のステップ
この記事では、Azure DocumentDB における新しい Change Feed のサポートについてご説明しました。
- Azure DocumentDB における Change Feed のサポート (英語) の詳細を確認する
- Change Feed がサポートされている .NET SDK 1.11.0 (英語) にアップグレードする
- Azure ポータルで DocumentDB アカウントを新規作成するか、DocumentDB Emulator (英語) をダウンロードする
- Twitter アカウント (@DocumentDB) をフォローして DocumentDB に関する最新のニュースや機能を確認するか、Stack Overflow の開発者フォーラム (英語) で質問する