2012-03-30 13 views

Odpowiedz

8

hiya zobaczyć: MongoDB normalization, foreign key and joining & & dalej http://shop.oreilly.com/product/0636920018391.do ===>http://books.google.com/books/about/Document_Design_for_MongoDB.html?id=TbIHkgEACAAJ&redir_esc=y

MongoDB nie obsługuje po stronie serwera klucz obcy relacji, normalizacja jest również zniechęcać. Powinieneś osadzić obiekt podrzędny w obiektach nadrzędnych, jeśli to możliwe, zwiększy to wydajność i sprawić, że klucze obce będą zupełnie niepotrzebne. Powiedział, że nie zawsze jest to możliwe, więc istnieje specjalna konstrukcja o nazwie DBRef, która pozwala obiektom referencyjnym w innej kolekcji. To może nie być tak szybkie, ponieważ DB musi wykonać dodatkowe zapytania do odczytu obiektów, ale zezwala na rodzaj odwołania do klucza obcego.

Nadal będziesz musiał obsługiwać swoje referencje ręcznie. Tylko podczas gdy szukając DBRef, zobaczysz, czy istnieje, DB nie przejdzie przez wszystkie dokumenty, aby wyszukać referencje i je usunąć , jeśli cel odniesienia już nie istnieje. Ale myślę, że usunięcie wszystkich odnośników po usunięciu książki wymagałoby pojedynczego zapytania na kolekcję, nie więcej, więc nie jest to takie trudne.

Edycja aktualizacja

http://levycarneiro.com/tag/mongodb/

levycarneiro.com/tag/mongodb [quote] Więc utworzyć 4 kolekcje: klientów, dostawców, pracowników i kontaktów. Łączymy je wszystkie za pomocą referencji db. Działa to jak klucz obcy. Ale nie jest to metoda mongoDB do robienia rzeczy. Wydajność zostanie ukarana. [brak zainteresowania]

+1

Interesujące. Co to znaczy "osadzić obiekty podrzędne w obiekcie nadrzędnym"? Czy to oznacza, że ​​jeśli masz relację zamówienie/element zamówienia, to czy obiekty pozycji wiersza będą miały właściwości w dokumencie zamówienia? – McGarnagle

+1

Hiya, Rzeczywiście, myślę; ciekawy artykuł tutaj - http://levycarneiro.com/tag/mongodb/ [quote] Tworzysz 4 kolekcje: klienci, dostawcy, pracownicy i kontakty. Łączymy je wszystkie za pomocą referencji db. Działa to jak klucz obcy. Ale nie jest to metoda mongoDB do robienia rzeczy. Wydajność zostanie ukarana. [brak tytułu] - :) okrzyki –

+0

Świetnie, to naprawdę pomocne Tats. W rzeczywistości Mongo DB nie jest zbyt efektywne w implementowaniu odniesień między obiektami, co zrozumiałem. –