変更フィードを使用して参照整合性を管理する

完了

前のユニットでは、eコマース アプリケーションで必要なデータを 1 つの要求で提供することにより、データを非正規化するとパフォーマンスが大幅に向上し、RU コストが減る可能性があることを見ました。 ただし、このようにデータを非正規化した場合は、productCategory コンテナーおよび productTag コンテナー内のマスター データと、製品コンテナーの間で、参照整合性を維持する方法が必要です。

Diagram showing how data from a product category and product tag is denormalized and stored in the product container.

幸いなことに、Azure Cosmos DB には参照整合性を管理できる "変更フィード" という機能があります。 変更フィードは、すべての Azure Cosmos DB コンテナー内に存在する API です。 Azure Cosmos DB にデータを挿入または更新するたびに、変更フィード機能によって、これらの変更が、リッスンできる API にストリーミングされます。 イベントがトリガーされると、変更フィードを使用して、変更されたデータに対応するコードを実行することができます。

この eコマース アプリケーションでは、変更フィードを使用して productCategory をリッスンし、変更を製品コンテナーに伝達します。 その後、2 つ目の変更フィードを使用して productTag コンテナーをリッスンし、同じことを行います。

Diagram of change feed responding to changes in the productCategory and productTag containers and copying them to the product container to keep it in sync.