Sind dokumentenorientierte Datenbanken mehr geeignet als relationale diejenigen für Objekte persistierenden?

StackOverflow https://stackoverflow.com/questions/2336182

Frage

In Bezug auf der Datenbanknutzung, war das letzte Jahrzehnt das Alter des ORM mit Hunderten im Wettbewerb zu unseren Objektgraphen in plain old-fashioned RMDBS bestehen bleiben. Jetzt scheinen wir das Erwachsenwerden von dokumentenorientierte Datenbanken zu erleben. Dieses Datenbanken für Schema freie Dokumente hoch optimiert werden, sondern sind auch sehr attraktiv für ihre Fähigkeit, einen Cluster parallel zu skalieren und abgefragt werden.

dokumentenorientierte Datenbanken hält auch ein paar Vorteile gegenüber RDBMS für Datenmodelle in der objektorientierten Design persistierenden. Da die Tabellen-Schema frei sind, kann man Objekte speichern, um verschiedene Klassen in einer Vererbungshierarchie gehören, Seite an Seite. Auch, wie das Domain-Modell ändert, solange der Code kann mit immer wieder Objekten von einer alten Version der Domain-Klassen fertig zu werden, kann man vermeiden, dass die gesamte Datenbank bei jedem Wechsel zu migrieren.

Auf der anderen Seite, die Leistungsvorteile von dokumentenorientierte Datenbanken in erster Linie erscheinen zu kommen, wenn tiefere Dokumente zu speichern. In der objektorientierten Begriffen, Klassen, die aus anderen Klassen zusammengesetzt sind, beispielsweise eine Blog-Post und seine Kommentare. In den meisten der Beispiele dafür ich mit oben kommen kann, obwohl, wie das Blog ein, in mit der Verstärkung in dem Lesezugriff erscheint durch die Strafe ausgeglichen werden würde den gesamten Blog-Eintrag „Dokument“ jedes Mal, wenn ein neuer Kommentar schreiben hinzugefügt.

Es scheint mir, als ob dokumentenorientierte Datenbanken erhebliche Vorteile für die objektorientierte Systeme bringen kann, wenn man extreme Sorgfalt auf die Objekte in tiefen Graphen zu organisieren für die Art und Weise optimiert werden die Daten gelesen werden und geschrieben, aber dies bedeutet, zu wissen, die Anwendungsfälle vorne. In der realen Welt, wir oft nicht wissen, bis wir tatsächlich eine Live-Implementierung haben wir Profil können.

So ist der Fall von relationalen vs. dokumentenorientierte Datenbanken eines von Schaukeln und Karussells? Ich habe Interesse an Menschen Meinungen und Beratung, insbesondere wenn jemand irgendwelche signifikanten Anwendungen auf einer dokumentenorientierte Datenbank aufgebaut hat.

War es hilfreich?

Lösung

Nun, es hängt, wie Ihre Daten strukturiert und auf die Datenzugriffsmuster.

Dokument Datenbanken speichern und Abrufen von Dokumenten und Grundatom gespeichert Einheit ist ein Dokument. Wie Sie gesagt haben, müssen Sie Ihre Datenzugriffsmuster / Anwendungsfälle denken, ein Smart-Dokument-Modell zu erstellen. Wenn Ihr Domänenmodell geteilt werden kann und über einige Dokumente aufgeteilt, arbeitet ein Dokument-Datenbank wie ein Zauber. Zum Beispiel für eine Blog-Software, ein CMS oder ein Wiki-Software eines Dokument-db funktioniert sehr gut. Solange Sie eine gute Möglichkeit, Ihre Daten in ein Dokument zu quetschen finden Sie Probleme nicht haben. Aber versuchen Sie nicht, ein relationales-Modell in eine Dokument-Datenbank passen.  Sobald Sie Datenzugriffsmuster eine Menge ‚Schifffahrt‘ verwenden, um auf die Beziehungen, Grafik oder Objekt-Datenbanken sind eine natürliche Wahl.

Eine andere Sache ist über Lese- / Schreibleistung Kompromisse. Zum Beispiel einer Blog-Software. In einer Übergangs RDBMS Datenmodell werden die Daten normalisiert. Dies bedeutet, dass das Lesen von Daten ist teuer, weil aus verschiedenen Tabellen zu lesen, berechnen Beziehungen mit Verknüpfungen usw. ein Blog-Post zu lesen. Im Gegenzug ist einen Tag zu ändern preiswert. Im Gegensatz dazu in einer Dokument-Datenbank eine Blog-Post zu lesen ist billig, weil Sie nur das Post-Dokument laden. Allerdings Aktualisierung ist wahrscheinlich teurer, weil Sie das gesamte Dokument speichern müssen. Oder schlimmer noch, geht durch eine Menge von Dokumenten zu ändern etwas (umbenennen ein Tag-Szenario). In den meisten Systemen Lesen ist viel wichtiger als Schreiben. So ist es wirklich sinnvoll, die renormierte Datenspeicher zu verwenden.

Ich denke, dass auf große Datenbanken das Schema freies Design seine Vorteile haben kann. In RDBMS müssen Sie Sie das Schema aktualisieren, die ein wirklich schmerzhafter Prozess ist. Vor allem die bestehenden Daten in das neue Schema zu konvertieren. In einem Schema freie Datenbank, Sie Anwendungsanforderungen damit umgehen, die mehr Flexibilität. Zum Beispiel können Sie das Schema on the fly aktualisieren, wenn ein altes Dokument zugänglich ist. Auf diese Weise können Sie Ihre riesige Datenbank und läuft halten, während die Anwendung Griffe ältere Versionen im Fluge.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top