Docs Menu
Docs Home
/
MongoDBマニュアル
/ /

設計パターンの適用

項目一覧

  • このタスクについて
  • 映画コレクション
  • 映画館コレクション
  • 詳細

スキーマ設計パターン は、アプリケーションのアクセス パターンに合わせてデータモデルを最適化する方法です。 アプリケーションのパフォーマンスが向上し、スキーマの複雑さが軽減されます。 スキーマ設計パターンは、データの保存方法とアプリケーションに返されるデータに影響します。

スキーマ設計パターンと例のリストについては、 「 パターンを使用した構築 (0})」MongoDB Blog シリーズを参照してください。

スキーマ設計パターンを実装する前に、解決しようとしている問題を検討してください。 各スキーマ設計パターンには、データの一貫性、パフォーマンス、複雑さのユースケースとトレードオフが異なります。 たとえば、一部のスキーマ設計パターンでは書込みパフォーマンスが向上し、他のスキーマ設計パターンでは読み取りパフォーマンスが向上します。

アプリケーションとそれに必要なデータを理解しずにパターンを実装すると、アプリケーションのパフォーマンスが低下し、スキーマ設計に不要な複雑さが生じる可能性があります。

映画館のフラグメントで使用される次のサンプルパターンについて考えてみましょう。

  • スキーマには、 movieコレクションとtheaterコレクションが含まれています。 スキーマはサブセット パターンを使用して、 theaterコレクション内のmovieコレクションから情報のサブセットを複製します。 サブセット パターンにより、アプリケーションに返されるドキュメントのサイズが縮小され、読み取りパフォーマンスが向上します。

  • movieコレクションにはtotal_views フィールドが含まれています。このフィールドでは、 の計算パターンを使用して、映画が公開されているすべての映画館でカスタマーが映画を閲覧する回数の実行中合計を計算します。

db.movie.insertOne(
{
_id: 1,
title: "Titanic",
year: 1997,
director: "James Cameron",
runtime: 194,
distributor: "Paramount Pictures",
languages: [ "English" ],
total_views: 3500
}
)
db.theater.insertMany(
[
{
name: "Downtown Cinemas",
address: {
street: "2212 Taylor Street",
state: "NY"
},
movies: [
{
movie_id: 1,
title: "Titanic",
runtime: 194,
views: 1500
}
]
},
{
name: "Midtown Theater",
address: {
street: "1232 5th Street",
state: "NY"
},
movies: [
{
movie_id: 1,
title: "Titanic",
runtime: 194,
views: 2000
}
]
}
]
)

戻る

マップの関係