Allgemeine Verwendungen
Wenn Sie Datenstrukturen haben, die zum Zeitpunkt der Erstellung des Systems nicht eindeutig definiert sind. Ich neige dazu, Benutzereinstellungen in nosql zu behalten, zum Beispiel. Ein weiteres Beispiel war ein System, bei dem die Benutzer zur Laufzeit Felder hinzufügen mussten - sehr schmerzhaft in einem RDBMS und ein Kinderspiel in NoSQL.
Wenn sich Ihre Modellstruktur weitgehend um ein oder wenige Modellobjekte dreht und die meisten Beziehungen tatsächlich untergeordnete Objekte der Hauptmodellobjekte sind. In diesem Fall werden Sie feststellen, dass Sie kaum tatsächliche Verknüpfungen benötigen. Ich habe festgestellt, dass das Kontaktverwaltungssystem zum Beispiel sehr gut in nosql implementiert werden kann. Eine Person kann mehrere Adressen, Telefone und E-Mails haben. Anstatt sie jeweils in einer separaten Tabelle abzulegen, werden sie alle Teil desselben Modells, und Sie haben ein einziges Personenobjekt.
Wenn Sie vom Clustering Ihrer Daten über mehrere Server hinweg profitieren möchten, anstatt über einen einzigen monolithischen Server zu verfügen, der normalerweise von RDBMS benötigt wird.
Caching. Auch wenn Sie sich an ein RDBMS als Hauptdatenbank halten möchten, kann es nützlich sein, eine NoSQL-Datenbank zum Zwischenspeichern von Abfrageergebnissen oder zum Speichern von Daten wie Leistungsindikatoren zu verwenden.
Dokumente speichern. Wenn Sie zusammenhängende Dokumente speichern möchten, sind einige der NoSQL-Datenbanken (z. B. MongoDB) in einer Datenbank darauf spezialisiert, diese zu speichern.
Was ist mit Joins?
Ehrlich gesagt, das No-Join-Ding klang am Anfang auch für mich ziemlich beängstigend. Der Trick ist jedoch, nicht mehr an SQL zu denken. Sie müssen tatsächlich mit dem Objekt denken, das Sie im Speicher haben, wenn Sie Ihre Anwendung ausführen. Diese sollten mehr oder weniger einfach in der NoSQL-Datenbank gespeichert werden.
Da Sie Ihr vollständiges Objektdiagramm mit untergeordneten Objekten speichern können, ist der größte Teil der Verknüpfungen nicht mehr erforderlich. Und wenn Sie feststellen, dass Sie eines benötigen, müssen Sie in die Kugel beißen und beide Objekte holen und Ihren Anwendungscode eingeben.
Glücklicherweise können die meisten Treiber die Verbindung für Sie herstellen, wenn Sie Ihr Schema richtig eingerichtet haben.
Zum weiterlesen empfehle ich eigentlich Martin Fowler .
In einigen Fällen benötigen Sie keine Fremdschlüssel. Zum Beispiel:
kann so einfach sein wie das Laden des
comments
Teils eines Dokuments, der einem Benutzer entspricht. Dies wird als Denormalisierung bezeichnet : Anstatt zwei Sätze mit einem Join zu haben, haben Sie ein Dokument und alles, was Sie brauchen, befindet sich im Dokument. Eine Abfrage, keine Verknüpfungen, bessere Leistung .In einigen Fällen kann dies jedoch zu einer Duplizierung der Daten führen , sodass eine Verknüpfung von einem Dokument zu einem anderen geeignet sein kann. In diesem Fall sind Sie möglicherweise an der MongoDB-Normalisierung, dem Fremdschlüssel und dem Beitritt , der Seite " Datenbankreferenzen " und insbesondere an der DBRefs-Funktion interessiert.
quelle