Co próbowałeś jest co każde ciało myśleć najpierw jednak to naprawdę nie jest łatwo skalować ... Zawsze można dodać więcej serwerów lub użyj sharding etc ... Jeśli masz milion użytkowników i osób którzy podążają za wieloma ludźmi, rozwiązanie to byłoby naprawdę trudne do wykonania.
Istnieje inne rozwiązanie, które polega po prostu na agregowaniu, gdy ktoś wysyła status. Facebook korzysta z tego pomysłu i może być łatwiejsze skalowanie, a jeśli ktoś śledzi 25 000 osób, szybko zobaczy swoją listę statusową, a serwer nie będzie musiał "walczyć", aby szybko odzyskać dane.
Będziesz mieć kolekcję użytkowników, każdy użytkownik będzie miał tablicę statusów. Powiedzmy, że masz user1 i user2, a ten użytkownik1 wykonaj user2. Kiedy user2 wciśnie status, jego status zostanie zapisany w tablicy user1 statusów AND w tablicy user2 statusów. Użyjesz więcej pamięci, co przy mongoDB oznacza więcej pamięci ... Na Facebooku używają Hadoop z HBase do przechowywania głównego, a następnie mają ogromne tablice serwerów z dużą ilością pamięci.
Niewygodne jest to, że jeśli usuniesz jeden status, musisz go usunąć wszędzie ... Główna zaleta tego rozwiązania, każdy użytkownik będzie miał już uporządkowany status! W poprzednim rozwiązaniu, jeśli podążysz za 3 użytkownikami, musisz pobrać wszystkie swoje pliki, a następnie posortować je, a następnie renderować ...
[Edytuj] Jak wskazuje Shekhar w komentarzu, Mongo ma limit dokumentu.Musisz utworzyć kolekcję statusu i zapisz status dwa razy, raz dla użytkownika2 i raz dla użytkownika1 i musisz mieć identyfikator, identyfikator, status i czas.
Biorąc pod uwagę, że rozmiar dokumentu w MongoDB nie może być większy niż 16 MB . Czy nie osiągnąłbyś limitu i ostatecznie musisz stworzyć nową kolekcję? – Shekhar
Tak naprawdę to dlatego, że mój przykład pochodzi z Facebooka, które używają HBase, dla MongoDb można utworzyć kolekcję statusu, gdy user2 popchnie stan, który zapiszesz dwukrotnie, raz dla użytkownika 2 i drugi raz dla użytkownika 1, twój dokument statusu będzie zawierał identyfikator fromId , toid, czas i sam status ... – zzarbi