2012-03-30 11 views

Antwort

8

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

MongoDB nicht Server-Seite Fremdschlüsselbeziehungen nicht unterstützt, wird Normalisierung auch abgeraten. Sie sollten Ihr Kindobjekt wenn möglich in Elternobjekte einbetten, dies wird die Leistung erhöhen und Fremdschlüssel völlig überflüssig machen. Das heißt, es ist nicht immer möglich, so dass es ein spezielles Konstrukt namens DBRef gibt, das Referenzobjekte in einer anderen Sammlung ermöglicht. Dies kann dann nicht so sein speedy, weil die DB zusätzliche Abfragen zum Lesen von Objekten machen muss, aber ermöglicht für eine Art von Fremdschlüssel Referenz.

Noch müssen Sie Ihre Referenzen manuell behandeln. Nur während Ihre DBRef nachschlagen, werden Sie sehen, ob es existiert, wird die DB nicht durch alle Dokumente gehen, um nach den Referenzen zu suchen und sie zu entfernen , wenn das Ziel der Referenz nicht mehr existiert. Aber ich denke, entfernen alle Referenzen nach dem Löschen des Buches würde eine einzelne Abfrage pro Sammlung, nicht mehr, so nicht wirklich schwierig.

bearbeiten Update

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

levycarneiro.com/tag/mongodb [quote] So erstellen Sie 4 Kollektionen: Kunden, Lieferanten, Mitarbeiter und Kontakte. Sie verbinden sie alle zusammen über eine Db-Referenz. Dies wirkt wie ein Fremdschlüssel. Aber das ist nicht der mongoDB Weg Dinge zu tun. Die Leistung wird bestraft. [unquote]

+1

Interessant. Was bedeutet es, "untergeordnete Objekte in das übergeordnete Objekt einzubetten"? Bedeutet das, dass Sie, wenn Sie eine Beziehung zu einer Bestellung/einer Werbebuchung haben, Werbebuchungsobjekte als Eigenschaften im Auftragsdokument hinzufügen würden? – McGarnagle

+1

Hiya, In der Tat, denke ich; interessanter Artikel hier - http://levycarneiro.com/tag/mongodb/ [Zitat] Sie erstellen also 4 Sammlungen: Kunden, Lieferanten, Mitarbeiter und Kontakte. Sie verbinden sie alle zusammen über eine Db-Referenz. Dies wirkt wie ein Fremdschlüssel. Aber das ist nicht der mongoDB Weg Dinge zu tun. Die Leistung wird bestraft. [unquote] - :) cheers –

+0

Großartig, es ist wirklich hilfreich Tats. Tatsächlich ist Mongo DB nicht so effizient, um Referenzen zwischen Objekten zu implementieren, so wie ich es verstanden habe. –