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

Relacje MongoDB dla obiektów

To zależy.

Zależy to od tego, ile każdego z tych typów obiektów spodziewasz się mieć. Czy możesz zmieścić je wszystkie w jednym dokumencie MongoDB dla danego użytkownika? Prawdopodobnie nie.

To zależy od relacji – czy użytkownik-konto to relacja jeden-do-wielu czy wiele-do-wielu? Jeśli jest jeden do wielu, a liczba kont jest niewielka, możesz umieścić je na liście IList w dokumencie użytkownika.

Nadal możesz modelować relacje w MongoDB z oddzielnymi kolekcjami, ALE w bazie danych nie ma sprzężeń, więc musisz to zrobić w kodzie. Ładowanie użytkownika, a następnie wczytywanie jego kont może być w porządku z perspektywy wydajności.

Możesz indeksować tablice INTO w dokumentach. Nie myśl o indeksie jako o indeksie prostego pola w dokumencie (takim jak SQL). Możesz użyć, powiedzmy, kolekcji tagów w dokumencie i zaindeksować do tagów. (Patrz http://www.mongodb.org/display/DOCS/Indexes #Indexes-Arrays )

Kiedy pobierasz lub zapisujesz dane, możesz wykonać częściowy odczyt i częściowy zapis dowolnego dokumentu. (patrz http://www.mongodb.org/display /DOCS/Pobieranie+a+podzbioru+pól )

I wreszcie, gdy nie możesz zobaczyć, jak uzyskać to, co chcesz, korzystając z kolekcji i indeksów, możesz to osiągnąć za pomocą funkcji map Reduce. Na przykład, aby znaleźć wszystkie aktualnie używane tagi posortowane według częstotliwości ich używania, należy mapować każdy dokument emituje użyte w nim znaczniki, a następnie zredukować ten zestaw, aby uzyskać pożądany rezultat. Możesz następnie zapisać wynik tej mapy na stałe i aktualizować ją tylko wtedy, gdy zajdzie taka potrzeba.

Jeszcze jedna sprawa:wspominasz o obliczaniu sum według tagów. Jeśli zależy Ci na spójności transakcyjnej o jakości księgowej, MongoDB może nie być dla Ciebie właściwym wyborem. „Ewentualna spójność” to nazwa gry dla magazynów danych NoSQL i generalnie nie nadają się one do transakcji finansowych. Na przykład nie ma znaczenia, czy jeden użytkownik zobaczy post na blogu z 3 komentarzami, a inny 4, ponieważ trafili na różne kopie, które nie są jeszcze zsynchronizowane, ale w przypadku raportu finansowego ten rodzaj spójności ma znaczenie – raport może się nie sumować!




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bazy danych dokumentów:nadmiarowe dane, referencje itp. (w szczególności MongoDB)

  2. Połączenie zostało przerwane po aktualizacji MongoDB.Driver z wersji 2.7.0 do 2.7.1

  3. MongoDB zlicza liczbę nowych dokumentów na minutę na podstawie _id

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

  5. Jak działa sortowanie w nowym rozszerzeniu mongodb PECL?