sql >> データベース >  >> NoSQL >> MongoDB

mongodbを使用しながら人間関係に対処する方法

    編集:

    回答 が見つかりました ブレンダン・マカダムスの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つのクエリは問題になりません。メモリに収まらないデータのスライスを操作する場合は、速度が速くなります劣化 、しかし私は今あなたの状況を理解していません-それは許容できるかもしれないので、どちらの場合も私は使用するを選択する傾向があります リンクしています。




    1. db.stats()はMongoDBのブロッキング呼び出しですか?

    2. 存在する場合は更新する方法、そうでない場合は新しいドキュメントを挿入しますか?

    3. MySQLレプリケーション(およびその他)のフェイルオーバー-自動化する必要がありますか?

    4. MongoDBからの読み方