Frage

Es gibt eine Menge an Informationen da draußen auf objektrelationalen Mapper und wie man am besten Impedance Mismatch zu vermeiden, von denen alle scheinen strittige Punkte zu sein, wenn man eine Objekt-Datenbank verwenden waren. Meine Frage ist, warum ist das nicht häufiger verwendet? Ist es wegen der Performance-Gründen oder weil Objektdatenbanken Ihre Daten führen zu Ihrer Anwendung proprietärer zu werden oder ist es wegen etwas anderes?

War es hilfreich?

Lösung

    .
  • Die Vertrautheit Die Administratoren von Datenbanken kennen relationale Konzepte; Objekt diejenigen, nicht so sehr.
  • Performance. haben Relationale Datenbanken nachgewiesen worden, weit besser skalieren.
  • Maturity. SQL ist eine leistungsstarke, lang entwickelte Sprache.
  • Vendor-Support. Sie können Werkzeuge zwischen vielen mehr Erstanbietern (SQL Server) und von Drittanbietern (administrativen Schnittstellen, Mappings und anderen Arten der Integration) wählen, als dies der Fall bei OODBMSs.

Natürlich ist das objektorientierte Modell ist mehr vertraut die Entwickler , und, wie Sie darauf hinweisen, von ORM wuerden. Aber so weit, das relationale Modell hat sich als praktikable Option.

Siehe auch die letzte Frage, Objekt Orientierte vs Relationale Datenbanken .

Andere Tipps

Ich habe mit db4o die ein OODB ist und es löst die meisten der Nachteile aufgelistet:

  • Kenntnisse - Programmierer kennen ihre Sprache besser als SQL (siehe Native Queries)
  • Performance - diese ist sehr subjektiv, aber Sie einen Blick auf Poleposition
  • nehmen
  • Vendor Support und Reif - kann im Laufe der Zeit ändern
  • Kann nicht von Programmen verwendet werden, die auch nicht den gleichen Rahmen verwenden - Es gibt OODB Standards und Sie können eine href verwenden <= „http://developer.db4o.com/forums/thread/51254.aspx“ rel = "noreferrer"> verschiedene Frameworks
  • Versioning ist wahrscheinlich ein bisschen eine Hündin - Versionierung ist eigentlich einfacher !

Die Profis ich interessiert bin, sind:

  • Native Abfragen - Db4o können Sie Abfragen in Ihrer statischen typisierten Sprache schreiben, so dass Sie einen String über Tippfehler und die Suche nach fehlenden Daten zur Laufzeit keine Sorgen,
  • Einfache Bedienung - Definition buissiness Logik in der Domänenschicht, Persistenz-Schicht (Mapping) und schließlich ist die SQL-Datenbank sicher Verletzung von DRY. Mit OODB definieren Sie Ihre Domain, wo es hingehört.

Ich bin damit einverstanden - OODB haben einen langen Weg zu gehen, aber sie gehen. Und es gibt Domain Probleme gibt, die besser durch OODB gelöst sind,

Ein Einwand Datenbanken einzuwenden ist, dass es eine enge Kopplung zwischen den Daten und Ihrem Code erstellt. Für bestimmte Anwendungen kann dies in Ordnung sein, aber nicht für andere. Eine nette Sache, die eine relationale Datenbank gibt Ihnen die Möglichkeit, viele Ansichten auf Ihren Daten zu setzen.

Ted Neward erklärt viel besser als dies und noch viel mehr über OODBMSs.

Es hat nichts mit Leistung zu tun. Das heißt, im Grunde alle Anwendungen mit einem OODB besser durchführen würden. Aber das würde auch viele DBA aus der Arbeit setzen / mit einer neuen Technologie zu lernen. Auch würden mehr Menschen ohne Arbeit sein, Fehler in den Daten zu korrigieren. Das ist unwahrscheinlich, dass OODBs beliebt bei etablierten Unternehmen zu machen. Gavin scheint völlig ahnungslos zu sein, eine bessere Verknüpfung wäre Kirk

Nachteile:

  • Kann nicht von Programmen verwendet werden, die Verwenden Sie nicht auch den gleichen Rahmen den Datenspeicher für den Zugriff, so dass es schwieriger, über die verwenden Unternehmen.

  • Weniger Ressourcen online zur Verfügung     nicht SQL-basierte Datenbank

  • Keine Kompatibilität über Datenbank     Typen (kann nicht auf einen anderen db tauschen     Anbieter ohne Änderung alle     Code)

  • Die Versionierung ist wahrscheinlich ein bisschen ein     Schlampe. Ich würde vermuten, ein neues Hinzufügen     Eigenschaft auf ein Objekt ist nicht ganz so     einfach wie eine neue Spalte ein Hinzufügen     Tabelle.

Sören

All die Gründe, die Sie angegeben sind gültig, aber ich sehe das Problem mit OODBMS das logische Datenmodell ist. Das Objekt-Modell (oder besser gesagt das Netzwerkmodell der 70er Jahre) ist nicht so einfach wie das relationale ein und ist daher schlechter.

jodonnel, nicht i‘sehen, wie die Verwendung von Objektdatenbanken auf die Daten Paare Anwendungscode. Sie können immer noch abstrakt Ihre Anwendung aus dem OODB durch ein Repository-Muster mit und mit einer ORM unterstützt SQL-Datenbank ersetzen, wenn Sie die Dinge richtig entwerfen.

Für eine OO-Anwendung wird eine OO-Datenbank eine natürliche Ergänzung für Objekte persistierenden bieten.

Was ist wohl wahr, dass Sie Ihre Daten auf Ihr Domain-Modell binden, dann aber das ist der springende Punkt!

Wäre es nicht gut sein, einen einzigen Weg, um an beiden Betrachtungs Daten, Geschäftsregeln und Prozesse einen Domain-zentrierte Sicht mit?

So ist ein großer Profi, dass ein OODB paßt, wie die meist moderne Unternehmen objektorientierte Software-Anwendungen konzipiert sind, gibt es keinen zusätzlichen Aufwand eine Datenschicht zu entwerfen, ein anderes (relational) Design. Billiger zu bauen und zu pflegen, und in vielen Fällen allgemein eine höhere Leistung.

Cons, nur allgemeiner Mangel an Reife und Annahme i rechnen ...

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