私は、フォロワーのコレクションを次の場所に埋め込むべきかどうかに関する基本的な質問をmongo dbに持っています。ユーザーオブジェクトに次の組み込みコレクションを組み込むのは理にかなっていますが、逆のフォロワーコレクションも組み込むことも意味がありますか?それは私が更新し、両方のプロファイル記録に埋め込む必要がありますを意味します:フォロイーの組み込みリストフォロワー 以下のmongo dbデザインとフィード、どこに埋め込むべきですか?
I」をすることができます私が何らかの理由でトランザクションを保持したり、状況をどこかで更新しない限り、それに対するアトミック性は保証されません。それは両方のエンティティに埋め込む価値がありますか?私はフォロワーのプロファイルに次の埋め込みを埋め込み、#1を更新して、それにインデックスを付けてすべてのプロファイルにわたって逆のフォロワーを照会することができますか?パフォーマンスがあまりにも高すぎますか?
これは埋め込まれてはならないコレクションの候補ですか?私はfolloweridとfollowsbyIdで独自のコレクションに次のように保存する辺のコレクションを持っているだけでしょうか?
私は両方のユーザーにフィードを更新する必要がある場合は、それをフォローしたりフォローしたりするときに、どうすればいいですか?
ユースケースとして、ユーザーは自分のフィードを見るときに従う人物を見ることになります。これは非常に頻繁に起こります。また、誰かのプロフィールの詳細を見るとプロフィールのフォロワーも見られます第1の場合ほどはない。どちらの場合も、すべてのプロファイルページでフォローしているフォロワーとフォロワーの合計数が表示されます。
一般に
本質的に非常にリレーショナルであるにもかかわらず、私はあなたの解釈に完全に同意します。これは関係が完璧な意味を持つ場所の1つであり、あなたはこのようにパフォーマンスペナルティに終わることはありません。 –
これは「好き」にも適用されますか? mongoウェブサイトの投票の例では、ドキュメントにそのようなものが埋め込まれていますが、同様の理由だけでなく推論の行も同じように見えます。 – MonkeyBonkey
@MonkeyBonkey - このアプローチは「好き」にも使用される可能性がありますが、おそらくインデックスのうちの1つしか必要としません。 "likes"シナリオに埋め込む利点は、$ inc演算子を使って "likers"の正確な数を維持できることです。また、これはサイトにも依存しますが、1つのポストを好む人の数は、トラフィックの多いユーザーのフォロワーと同じレベルに達する可能性は低いので、最悪の場合のパフォーマンスはそれほど重要ではありません。 – mpobrien