sql >> Database >  >> NoSQL >> MongoDB

Hoe maak je een feed met bestanden van mensen die een gebruiker volgt?

Dit is het fan-in vs. fan-out probleem. Ik raad je aan om fan-out te proberen:

Bewaar een feed collectie voor uw gebruikers. Wanneer een gebruiker een document uploadt, voegt u een nieuw feeditem toe aan elke feeditemverzameling van haar vrienden. De collectie kan er als volgt uitzien:

{
    "_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": ...
}

Gebruik een samengestelde index {UserId, Timestamp} .

Deze aanpak is schrijfintensief:als Jane honderden vrienden heeft, zullen deze honderden bijlagen hun tijd vergen. Aan de andere kant kost het uploaden van een bestand over het algemeen toch veel tijd, dus de overhead is te verwaarlozen en je leest belachelijk eenvoudig.

Dit kan natuurlijk verder geoptimaliseerd met meer moeite, maar het zou goed moeten werken voor nogal wat verkeer.




  1. Spring data mongodb, hoe SSL instellen?

  2. mongo db (mongodb.service) mislukt, status 14

  3. Solr Mongo/DocDB Delta Import Query werkt niet

  4. Mongoose-query om hoofddocument en subdocument op bepaald veld te sorteren