データ モデルを最終処理する

完了

データベースの再モデル化はほぼ完了しています。 9 つのリレーショナル データベース テーブルを、NoSQL データベースの 4 つのコンテナーに変換しました。 顧客コンテナーには、顧客データと販売注文データが格納されています。 製品コンテナーには、製品と多対多の製品タグが含まれています。 そして、残りの 2 つは、productTag と productCategory のコンテナーです。

ほぼ最終的なデータベース設計を示す図。

最後の 1 つの最適化

最後にもう 1 つ行うことができる最適化があります。 productCategory コンテナーと productTag コンテナーが同じパーティション キーを共有していることにお気づきでしょうか。 お察しのとおり、このキーを共有しているので、両方のエンティティを同じコンテナーに格納し、productMeta のようなより汎用的な名前を付けることができます。

これで、先ほど学んだようなクエリを使用して、すべての製品タグと製品カテゴリを取得できるようになります。 このパターンは、維持する必要がある任意の種類のマスター データまたは参照データに対して機能します。 このデータはすべて同じコンテナー内にあるため、変更フィードに 1 つのホストを使用して、個々のコンテナーではなく、データベース全体の参照整合性を維持できます。 任意のエンティティの変更フィードに対する変更は、新しいデータが変更フィードによって読み取られるときに type プロパティを調べることによって、対応する関数にルーティングできます。 これにより、変更フィード用のコンピューティングのより効率的な使用と、データの効率的なストレージが実現されます。

productMeta という名前の 1 つのコンテナーに結合された productCategory と productTag のコンテナーが示されている図。

最終的な設計

これで最終的な設計が完成しました。 製品カテゴリとタグをマージすることで、9 つのリレーショナル テーブルがわずか 3 つのコンテナーになりました。 それぞれ、eコマース アプリケーションを効率的に提供し、必要なサイズにスケーリングできるように最適化されています。

3 つのコンテナーの最終的な設計を示す図: 顧客と販売注文データが含まれる顧客コンテナー、製品コンテナー、および製品カテゴリと製品タグが含まれる製品メタ コンテナー。