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

ユーザーがフォローしているユーザーからファイルのフィードを作成するにはどうすればよいですか?

    これはファンインとファンアウトの問題です。ファンアウトを試してみることをお勧めします:

    feedを保持する ユーザーのためのコレクション。ユーザーがドキュメントをアップロードしたら、友達の各フィードアイテムコレクションに新しいフィードアイテムを挿入します。コレクションは次のようになります:

    {
        "_id": (some id)
        "UserId": (id of the user who 'owns', i.e. reads this feed)
        "FriendId": (if of the friend who posted the file)
        "FriendName": "John Doe" (name of the fried, denormalized)
        "Timestamp": ...
    }
    

    複合インデックスを使用する{UserId, Timestamp}

    このアプローチは書き込みが多くなります。ジェーンに数百人の友人がいる場合、これらの数百の挿入には時間がかかります。一方、ファイルのアップロードには通常、時間がかかるため、オーバーヘッドはごくわずかであり、読み取りは途方もなく簡単になります。

    もちろん、これはさらに最適化 することができます。 より多くの努力が必要ですが、かなりの量のトラフィックに対しては問題なく機能するはずです。




    1. サブドキュメントのMongoDBネストされたドキュメント検証

    2. GoogleComputeEngineのsafe_format_mountの問題-ファイルシステムタイプのエラーを指定してください

    3. リモートノードからのmongodump-メカニズムSCRAM-SHA-256を使用して認証できません

    4. MongoDBとDjangoで使用するPythonAPI