編集:
回答 が見つかりました ブレンダン・マカダムスの10genの男で、明らかに私よりもはるかに権威があり、ドキュメントを埋め込むことをお勧めします。
古いテキスト:
1つ目は、所属するユーザーのObjectIDを各コメントに手動で含めることです。
comment: { text : "...",
date: "...",
user: ObjectId("4b866f08234ae01d21d89604"),
votes: 7 }
2つ目は、DBRefを使用する という賢い方法です。
ディスクにI/Oを追加すると、パフォーマンスが低下しますよね? (これが内部でどのように機能するかはわかりません)したがって、可能であればリンクを避ける必要がありますよね?
はい-もう1つのクエリがありますが、ドライバがそれを行います-これは一種のシンタックスシュガーと考えることができます。パフォーマンスに影響しますか?実際、それも状況によって異なります:) Mongoが非常に速くおかしくなりそうな理由の1つは、メモリマップトファイル
そしてmongoは、すべてのワーキングセット(およびインデックス)をRAMに直接保持するように最善を尽くしています。そして、60秒ごとに(デフォルトで)RAMスナップショットをディスクベースのファイルと同期します。
私がワーキングセットと言っているとき 、私はあなたが取り組んでいることを意味します:あなたは3つのコレクションを持つことができます- foo 、バー 、バズ 、ただし、現在fooとbarのみを使用している場合は、bazがディスク上に留まっている間、それらをramにロードする必要があります。さらに、メモリマップトファイルでは、コレクションの一部のみをロードできます。したがって、engadgetやtechcrunchのようなものを構築している場合、ワーキングセットが過去数日間のコメントであり、古いページが復活する頻度がはるかに低くなる可能性が高いため(コメントはオンデマンドでメモリに生成されます)、そうではありません。パフォーマンスに大きく影響します。
要約すると、メモリ内でワーキングセットを維持している限り(読み取り/書き込みキャッシュだと思うかもしれません)、それらのフェッチは超高速であり、もう1つのクエリは問題になりません。メモリに収まらないデータのスライスを操作する場合は、速度が速くなります劣化 、しかし私は今あなたの状況を理解していません-それは許容できるかもしれないので、どちらの場合も私は使用するを選択する傾向があります リンクしています。