0

私は既存の PostgreSQL データベースを持っています。これには約 500,000 のエントリが含まれており、それぞれが基本的にカテゴリの巨大なツリーのカテゴリです (各カテゴリには要素のスキーマが異なります)。

また、約 100,000 のドキュメントを含む MySQL データベースもあります。各ドキュメントは、1 つまたは複数のカテゴリのカテゴリになる可能性があります。

ドキュメントがリンクされているカテゴリに設定されている属性フィルターに一致するドキュメントを検索できる必要があります。

私が理解しているように、ドキュメントがリンクしているすべてのカテゴリに関連するすべてのデータを、各ドキュメントでmongoに保存する必要があり、それは正気ではないようです。どうすればこれを機能させることができますか?

例として、1964 年に製造された赤い車を表すカテゴリと、その赤い車について 1990 年に書かれたドキュメントを想像してください。1964 を検索して、車と車自体に関する文書を精査できるようにする必要があります。

4

1 に答える 1

1

MongoDB の n:m 関係は、データベース参照 (DBRef) の配列またはオブジェクト ID の配列で表現できます。

したがって、各ドキュメントには、それが属するカテゴリの ID またはデータベース参照を含む配列を持つ「カテゴリ」フィールドがあります。

詳細については、この記事を参照してください: http://docs.mongodb.org/manual/applications/database-references/

カテゴリの名前を表示するためだけに複数のデータベース クエリを実行することを回避する別の方法は、ID の代わりにその配列にカテゴリ名を配置することです。次に、ルックアップを高速化するために、カテゴリ コレクションの名前フィールドに (ensureIndex 関数を使用して) インデックスを追加する必要があります (カテゴリ名の重複を避けるために、このフィールドに一意のインデックスを作成することをお勧めします)。

あるカテゴリに属しているためにオブジェクトが持つデータについては、たとえば自動車にはメーカーがあり、ドキュメントにはドキュメントで言及されている他のオブジェクトのリストがあります。このデータは、オブジェクトのドキュメントに直接配置する必要があります。ドキュメント指向データベースの利点は、すべてのエンティティが同じフィールドを持つ必要がないことです。

于 2012-09-05T11:15:46.100 に答える