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

MongoDB:Czy nadal należy podawać identyfikatory łączące z innymi kolekcjami, czy tylko uwzględniać kolekcje?

To zależy.

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

To zależy od relacji – czy masz relacje jeden-do-wielu czy wiele-do-wielu? Jeśli jest to jeden do wielu, a liczba powiązanych jednostek jest niewielka, możesz umieścić je w IList w dokumencie. Jeśli jest wiele do wielu, możesz wybrać bardziej tradycyjną relację lub osadzić obie strony jako IListy.

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. Załadowanie tematu, a następnie załadowanie komentarzy może być w porządku z perspektywy wydajności.

Inne wskazówki:

Dzięki MongoDB możesz indeksować tablice INTO na dokumentach. Nie myśl więc o indeksie jako o indeksie prostego pola w dokumencie (takim jak SQL). Możesz użyć, powiedzmy, kolekcji tagów w temacie 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 znaczniki posortowane według częstotliwości ich używania, należy zmapować każdy temat emitujący użyte w nim znaczniki, a następnie zredukować ten zestaw, aby uzyskać pożądany wynik. Możesz wtedy zapisać wynik tej mapy na stałe i aktualizować ją tylko wtedy, gdy zajdzie taka potrzeba.

Jest to dość znacząca zmiana myślenia w stosunku do myślenia relacyjnego, ale jest tego warta, jeśli potrzebujesz skalowalności i elastyczności, jaką zapewnia podejście NOSQL.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. odczytywanie danych z określonych węzłów w zestawie replik mongo

  2. Napraw „nazwa indeksu musi być ciągiem” podczas upuszczania wielu indeksów w MongoDB

  3. Co to jest polecenie db.collection.stats() w manguście?

  4. Uwierzytelnianie strategii lokalnej Passport wydaje się działać tylko na hoście lokalnym ze współdzieloną instancją MongoDB

  5. Jak przekazać zmienną środowiskową do skryptu mongo?