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

Gdzie powinienem umieścić oś czasu działań w mongodb, osadzonym w użytkowniku lub osobno?

Oba te artykuły mają rację i oba są błędne.

Osadzić czy nie osadzić? To jest zawsze kluczowe pytanie, które sprowadza się do Twoich potrzeb, zapytań i przechowywania, a nawet zestawu roboczego.

Na koniec dnia możemy dać tylko wskazówki, których w rzeczywistości nie możesz powiedzieć, które są najlepsze.

Jednak biorąc pod uwagę rozmiar kanału aktywności, osobiście nie osadziłbym go, ponieważ mógłby łatwo przekroczyć 16 megabajtów (na użytkownika), jednak ze względu na szybkość i moc zapytań można zagregować, powiedzmy, ostatnie 20 aktywności użytkownika, a następnie osadzić w wierszu użytkowników (ponieważ ostatnie 20 to zwykle najczęściej zadawane pytania).

Ale wtedy osadzanie agregatu zależy, sharding może zająć się wykonywaniem zapytań w ogromnych kolekcjach skalowanych poziomo, a używanie właściwych zapytań oznacza, że ​​nie czerpiesz żadnych rzeczywistych korzyści z osadzania i może potencjalnie utrudnić ci życie, ponieważ musisz utrzymywać indeksy, przechowywanie i zapytania wymagane do utrzymania tego poddokumentu.

Co do osadzania aż do śmierci. Wiele zapytań MongoDB w tej chwili opiera się głównie na jedno- lub dwupoziomowym osadzeniu, dlatego może być trudno utrzymać powiedzmy 12 zagnieżdżonych tabel, w którym to momencie zaczynasz widzieć pytania tutaj i grupę Google, jak utrzymać takie ogromny dokument (odpowiedź jest po stronie klienta, jeśli naprawdę chcesz).

Biorąc to pod uwagę, umieściłbym agregat na użytkowniku, co oznacza, że ​​użytkownik może zobaczyć aktywność własną lub innych użytkowników pojedynczo podczas jednej podróży w obie strony.

Jednak biorąc pod uwagę, że nauczyciel musiałby najprawdopodobniej mieć wyniki stron od wszystkich użytkowników, umieściłbym dla nich osobną kolekcję działań i zapytanie o to. Stronicowanie agregatu poddokumentów wymaga kilku zapytań i w tym przypadku lepiej byłoby zrobić to w ten sposób.

Mam nadzieję, że to powinno Cię zacząć.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak napisać pustą tablicę asocjacyjną ({}) do MongoDB z PHP

  2. Sortuj klucze w obiekcie odpowiedzi z Mongoose w ExpressJS i NodeJS

  3. MongoDB:Nie można kanonizować zapytania:Projekcja BadValue nie może zawierać kombinacji włączania i wykluczania

  4. aktualizacja przez id nie działa w manguście

  5. MongoDB:Jak wyszukiwać i sortować tekst według daty