MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak utworzyć kanał plików od osób, które obserwuje użytkownik?

To jest problem rozproszenia i rozproszenia. Proponuję wypróbować fan-out:

Zachowaj feed kolekcja dla Twoich użytkowników. Gdy użytkownik prześle dokument, wstaw nowy element kanału do każdej kolekcji elementów kanału jej znajomych. Kolekcja może wyglądać tak:

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

Użyj indeksu złożonego {UserId, Timestamp} .

Takie podejście jest trudne do pisania:jeśli Jane ma setki przyjaciół, te setki wstawek zajmą im czas. Z drugiej strony przesłanie pliku i tak zajmuje zazwyczaj dużo czasu, więc obciążenie jest znikome, a odczyty będą śmiesznie proste.

Oczywiście można to dalszą optymalizację z większym wysiłkiem, ale powinno wystarczyć przy sporym natężeniu ruchu.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak znaleźć po id za pomocą sterownika MongoDB Node?

  2. Jak uzyskać rozmiar w bajtach dokumentów bson

  3. Jak utworzyć indeks MongoDB MultiKey na atrybucie elementów w tablicy .NET Driver

  4. Dlaczego mongodump nie tworzy kopii zapasowych indeksów?

  5. zapytanie do pobrania wielu obiektów w tablicy w mongodb