2012-02-21 5 views
0

私の質問はかなり簡単です。私はmongodbで最初のアプリケーションを構築しています。これまで、私はいつもsqlを使用してきました。私は、ドキュメントを埋め込んだドキュメントとリンクしたドキュメントに関する多くの情報を読んできました。 MongoDBのベテランにMongodb-embedded vsインデックス

私の質問は:私が埋め込まれたドキュメントに並置インデックス付きリンク/クエリを使用した場合の速度/性能に大きな違いはありますか?大きな違いがある場合は、理由を説明してください。ありがとうございました。

は再び、私はMongoDBのために新しいですし、ちょうど間違って徒歩で下車する必要はありません。ありがとうございました。

答えて

0

はい、参照と埋め込みドキュメントとの間の大きな違いがあります。

のドキュメント内に残りのドキュメントのフィールドと同じドキュメントが格納されているため、追加のネットワークラウンドトリップやディスクを探すときに埋め込みドキュメントを取得する必要はありません全体。

DBREFSは、他の一方で、単に別のコレクション内のドキュメントの_idです。それは追加の往復と追加のディスクが "リンクされた"ドキュメントを取得するためにシークします。ここDBREFSの仕様を参照してください:

http://www.mongodb.org/display/DOCS/Database+References#DatabaseReferences-DBRef

あなたは、単一のドキュメントでそのクエリを満たすために必要なすべての情報を含めることによって、あなたの最も一般的なクエリを最適化しようとする必要があります。

+0

埋め込みドキュメントには独自のサイズ制限がありますか、それとも親ドキュメントのサイズに追加されますか?すべてのドキュメントが埋め込まれている場合、親ドキュメントがサイズ制限に達する可能性があることを心配していますか?これは可能ですか、それとも私が心配する必要がないものですか?ありがとう。 – user982853

+0

たとえば、連絡先リストを作成していたとします。ユーザーと呼ばれる親ドキュメントがあり、そのユーザードキュメントには「連絡先」というドキュメントが埋め込まれていました。ユーザーが50,000人の連絡先を持っていた場合は問題ですか?これはサイズの問題を引き起こすでしょうか?あるいは、ユーザーが「連絡先」、「取引」、「日付」などをすべてユーザー文書に埋め込んでいることを追跡していたとします。これにより、50,000件の連絡先、10,000件の取引、30,000件の日付/予定などがあった場合、親/ユーザーのドキュメントが大きくなる可能性があります。助言してください。ありがとう。 – user982853

+0

別の問題は、物事が埋め込まれている場合、レコード間でレポートを実行できないことです。たとえば、各親レコードにトランザクションのレコードが埋め込まれていて、会社内のすべてのトランザクション(ユーザー固有ではない)に対してレポートを実行するとします。これは埋め込まれていれば簡単にはできません。正しい? – user982853