sql >> Database teknologi >  >> NoSQL >> MongoDB

Hvordan opretter man et feed med filer fra personer, som en bruger følger?

Dette er fan-in vs. fan-out-problemet. Jeg vil foreslå, at du prøver fan-out:

Hold et feed indsamling til dine brugere. Når en bruger uploader et dokument, skal du indsætte et nyt feedelement i hver af hendes venners feedelementsamling. Samlingen kunne se sådan ud:

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

Brug et sammensat indeks {UserId, Timestamp} .

Denne tilgang er skrivetung:Hvis Jane har hundredvis af venner, vil disse hundredevis af indlæg tage deres tid. På den anden side tager det generelt meget tid at uploade en fil, så overhead er ubetydeligt, og dine læsninger vil være latterligt enkle.

Dette kan selvfølgelig optimeres yderligere med mere indsats, men det burde fungere fint til en del trafik.




  1. MongoDB, Flask, aggregeret med $unwind-forespørgsel

  2. Kan ikke oprette forbindelse fra JAVA til Mongo SSL Replica Set

  3. Konfiguration af QueryDSL til Spring Data og MongoDB med Gradle

  4. Funktion til at bytte værdier i NodeJS m/ mongo+mongoose