多形データ
MongoDBは 柔軟なデータモデルを採用しているため、単一のコレクション内のドキュメントが同じ構造を持つ必要はありません。多形データとは、ドキュメントフィールドまたはデータ型で異なる単一のコレクション内のデータです。
通常、コレクション内のドキュメントの構造は同様ですが、アプリケーションによっては若干の違いを含む場合があります。類似していないドキュメントを単一のコレクション内でグループ化するには、 多形データと継承スキーマ設計パターン を使用できます。
このようなスキーマ設計では、ドキュメントの形状に厳密に基づいてデータを保存するのではなく、クエリ アクセス パターンに基づいてデータを保存することでパフォーマンスを向上させることができます。
ユースケース
Scenario | 設計パターンアプリケーション |
---|---|
アプリケーションがさまざまなスポーツのプロスポーツが追跡する。クエリはすべてのスポーツにアクセスしますが、各プレイヤーに保存される属性はスポーツによって異なります。 | 多形パターンを使用して、単一のコレクション内のプレイヤーをグループ化します。ドキュメントの形状は異なりますが、1 回のクエリでアクセスできます。 |
アプリケーションが映画館内の書籍を追跡しているとします。書籍は、電子書籍、印刷版、レコードなど、さまざまな形式で利用できます。すべての書籍は title 、 author 、 genre のフィールドを共有していますが、形式に応じて異なるフィールドが追加されています。 | 継承パターンを使用して、書籍を単一のコレクションにグループ化します。各書籍の形式は、すべての形式で title 、 author 、 genre の共有フィールドを提供するbook の親エンティティの子エンティティです。子エンティティの異なるフィールドが追加された場合でも、親エンティティの共有フィールドにより、それらは単一のコレクションにグループ化できます。 |