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

Normalizacja MongoDB, klucz obcy i łączenie

MongoDB nie obsługuje relacji kluczy obcych po stronie serwera, odradza się również normalizację. Jeśli to możliwe, powinieneś osadzić swój obiekt podrzędny w obiektach nadrzędnych, zwiększy to wydajność i sprawi, że klucze obce będą całkowicie niepotrzebne. To powiedziawszy, nie zawsze jest to możliwe, więc istnieje specjalna konstrukcja o nazwie DBRef, która umożliwia odwoływanie się do obiektów w innej kolekcji. Może to nie być tak szybkie, ponieważ DB musi wykonać dodatkowe zapytania, aby odczytać obiekty, ale pozwala na rodzaj odniesienia do klucza obcego.

Nadal będziesz musiał ręcznie obsługiwać swoje referencje. Dopiero podczas wyszukiwania swojego DBRef zobaczysz, czy istnieje, DB nie przejdzie przez wszystkie dokumenty w poszukiwaniu referencji i usunie je, jeśli cel referencji już nie istnieje. Ale myślę, że usunięcie wszystkich odniesień po usunięciu książki wymagałoby jednego zapytania na kolekcję, nie więcej, więc nie jest to takie trudne.

Jeśli Twój schemat jest bardziej złożony, prawdopodobnie powinieneś wybrać relacyjną bazę danych, a nie nosql.

Istnieje również książka o projektowaniu baz danych MongoDB:Projektowanie dokumentów dla MongoDB

AKTUALIZUJ Powyższa książka nie jest już dostępna, jednak ze względu na popularność MongoDB jest ich całkiem sporo. Nie będę łączył ich wszystkich, ponieważ takie linki prawdopodobnie się zmienią, proste wyszukiwanie w Amazon pokazuje wiele stron, więc znalezienie niektórych nie powinno stanowić problemu.

Więcej szczegółów i przykładów można znaleźć na stronie podręcznika MongoDB, gdzie znajdują się „Odniesienia ręczne” i DBRefs



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Najlepsze praktyki dotyczące tworzenia kopii zapasowych baz danych

  2. Wskazówki dotyczące zarządzania kopiami zapasowymi MongoDB dla klastrów podzielonych na fragmenty

  3. Jak wykonać zapytanie NOT IN w Mongo?

  4. $arrayElemAt . MongoDB

  5. $addFields, gdy nie znaleziono $dopasowania