2012-01-19 4 views
0

私はコメントがあるニュースフィードを持っています。私はMongoDBにコメントを保存しています。将来的にニュースフィードが非常に大きくなる可能性がありますので、の高いの速度が必要です。あなたが見ることができるようにMongoDB - ユーザー名(変更可能)をコメントに埋め込む - 埋め込みと参照の比較

comments: [ 
    {user_id: 34, user_name: "John", text: "..."} 
] 

、私もモンゴのドキュメントが言うので、ユーザーに関する情報を格納している「あなたはスピードを必要とするとき、使用が埋め込み」。

しかし、ユーザーはいつでも自分の名前を変更できます。 この場合、ニュースフィードの彼のコメントの下にあるユーザーの名前は間違っています。

埋め込みの代わりに_idの「ユーザー」コレクションに参照(DBref)を使用する必要がありますか?それはどれくらい遅くなりますか?その減速はそれについて心配するのに十分な大きさですか?

私は、大きなソーシャルネットワークがどうしているのだろうと思っています。ユーザーの名前を変更すると、ニュースフィード内のすべての投稿が即座に更新されます。

答えて

2

DBRefを保存しても、単純なユーザーIDを格納する場合に比べて利点はありません。基本的に同じIDで、コレクション名のみです。

すばやく効率的な読み取り - 埋め込みが必要な場合は、

ユーザーが自分の名前を変更すると、この事実を書き留めて、すべてのコメントでキャッシュされた名前を更新する夜間ジョブを実行できます。

瞬時に名前を更新する場合は、参照する必要があります。しかし、この場合は、より複雑なコードとより多くのクエリをデータベースに費やしています。

+0

あなたのコメントの下で更新されたユーザーの名前を確認したい場合はどうすればよいですか? – oyatek

+0

あなたはどれくらい早くそれを起こしたいですか?また、私の答えを読んでください。私はちょうどそれを更新しました:-) –

+0

あなたの答えをありがとう、今それはもっと明確です:) – oyatek

関連する問題