MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

MongoDB-Normalisierung, Fremdschlüssel und Beitritt

MongoDB unterstützt keine serverseitigen Fremdschlüsselbeziehungen, Normalisierung wird ebenfalls nicht empfohlen. Sie sollten Ihr untergeordnetes Objekt nach Möglichkeit in übergeordnete Objekte einbetten, dies erhöht die Leistung und macht Fremdschlüssel völlig überflüssig. Dies ist jedoch nicht immer möglich, daher gibt es ein spezielles Konstrukt namens DBRef, mit dem Objekte in einer anderen Sammlung referenziert werden können. Dies ist dann möglicherweise nicht so schnell, da DB zusätzliche Abfragen zum Lesen von Objekten durchführen muss, aber eine Art Fremdschlüsselreferenz zulässt.

Dennoch müssen Sie Ihre Referenzen manuell bearbeiten. Nur wenn Sie Ihre DBRef nachschlagen, werden Sie sehen, ob sie existiert, die DB wird nicht alle Dokumente durchsuchen, um nach den Referenzen zu suchen und sie zu entfernen, wenn das Ziel der Referenz nicht mehr existiert. Aber ich denke, das Entfernen aller Referenzen nach dem Löschen des Buches würde eine einzige Abfrage pro Sammlung erfordern, nicht mehr, also wirklich nicht so schwierig.

Wenn Ihr Schema komplexer ist, sollten Sie wahrscheinlich eine relationale Datenbank und nicht nosql wählen.

Es gibt auch ein Buch über das Entwerfen von MongoDB-Datenbanken:Document Design for MongoDB

AKTUALISIEREN Das obige Buch ist nicht mehr erhältlich, aber aufgrund der Popularität von MongoDB gibt es noch viele andere. Ich werde sie nicht alle verlinken, da sich solche Links wahrscheinlich ändern werden, eine einfache Suche auf Amazon zeigt mehrere Seiten, also sollte es kein Problem sein, einige zu finden.

Weitere Einzelheiten und Beispiele finden Sie auf der Handbuchseite von MongoDB für „Manuelle Referenzen“ und DBRefs.