Warum werden objektorientierte Datenbanken nicht so häufig verwendet wie relationale Datenbanken? [geschlossen]

18

Ich bin auf viele relationale Datenbankverwaltungssysteme (RDBMS) gestoßen. Aber kürzlich habe ich den Ruhezustand verwendet, wodurch ich mich gefragt habe, warum objektorientierte Datenbanken nicht beliebter sind.

Wenn objektorientierte Sprachen wie Java oder C # so beliebt sind, warum sind dann auch objektorientierte Datenbankverwaltungssysteme (OODBMS) nicht beliebter?

Rachel
quelle
1
"NoSQL" -Ansatz ist jetzt sehr beliebt. RDBMS sind begrenzt und einschränkend, und glücklicherweise verlieren sie jetzt schnell ihren Boden.
SK-logic
Was nennst du oodb? Der Ruhezustand ist nur ein Framework für die Kommunikation mit rdbms mit einer oo-Schnittstelle.
Simon Bergot
2
Eine ähnliche Frage wurde 2009 auf SO gestellt, siehe stackoverflow.com/questions/1350044/… IMHO ist fast jede dort angegebene Antwort noch heute gültig.
Doc Brown
@ Simon von oodb, ich meine objektorientierte Datenbanken
1
@Simon: Versant ist ein oodb (ich habe in der Produktion in zwei verschiedenen Firmen gesehen).
Giorgio

Antworten:

11

Dafür gibt es mehrere Gründe.

  1. Viele Entwickler haben nur Erfahrung mit relationaler Datenmodellierung. Um OO-Datenbanken zu verwenden, müssten sie eine völlig andere Art des Modellierens und Denkens von Daten erlernen. Das ist entweder sehr schwer oder ziemlich zeitaufwändig.
  2. Relationale DBs hatten viel Zeit zum Reifen. Sogar freie relationale DBs verfügen über fortschrittliche Optimierungs- und Indizierungstechniken. Relationale Daten lassen sich einfach speichern und indizieren. Über OO-Datenbanken lässt sich nicht dasselbe sagen.
  3. Als sich relationale und OO-Modelle herauskristallisierten. Relational hatte den großen Vorteil, dass es mathematisch "korrekt" war und den Standard für das Speichern und Abfragen von Daten hatte. OO hatte nichts dergleichen.
  4. [Spekulation] Viele Big Player verwenden viele Ressourcen, um ihre relationalen DBs zu erstellen. Es wäre kontraproduktiv, stattdessen OO-DBs zu unterstützen. Viele von ihnen investierten stattdessen in die Integration von OO-Prinzipien in relationale Modelle und machten die meisten aktuellen DBs zu so genannten objektrelationalen Datenbanken. IMO sind diese Modelle schlimmer als reine relationale oder reine OO.
  5. [rant] Das Letzte, was zu beachten ist, ist, dass viele Entwickler die OO-Methode zum Modellieren von Daten nicht wirklich verstehen. Dies führt normalerweise zu suboptimalen, anämischen Modellen. So viele Entwicklungsunternehmen, die sich auf billige und unerfahrene Entwickler verlassen, würden lieber ein einfaches relationales Modell wählen, das an allen CS-Colleges gelehrt wird, als einen harten und unbewiesenen Ansatz zu wählen. [/ Rant]
Euphorisch
quelle
5
Ich stimme allen Ihren Punkten mit Ausnahme der letzten zu. Ich denke, es ist für Entwickler einfacher, relationale Datenbanken durcheinander zu bringen als Objektdatenbanken. Zusammengesetzte Schlüssel und zerbrochene Beziehungen sind sehr häufig, aber es scheint mir zumindest ein bisschen schwieriger, eine Klassenhierarchie durcheinander zu bringen.
Tjaart
@Tjaart Klassenhierarchien durcheinander zu bringen, scheint die Norm für die meisten Entwickler in OO zu sein.
Bent
10

Als die Datenbanken zum ersten Mal erschienen, war OOP noch nicht die richtige Art zu programmieren. Relationale Datenbanken haben dagegen viel Zugkraft gewonnen. Und SQL, das in den 80er Jahren von IBM eingeführt wurde, wurde schnell zur Verkehrssprache aller Datenbanken.

Als OOP populär wurde, gab es einige Versuche, aber es gibt einige Probleme. Erstens ist echtes OODBMS wirklich schwer zu implementieren. Im Fall einer relationalen Datenbank sind eine Tabelle und zugehörige Indizes relativ einfache Strukturen (z. B. B-Bäume). Ein weiterer Grund ist, dass hinter dem relationalen Modell eine Menge Theorie steckt, die direkt von der mathematischen Mengenlehre abgeleitet ist. Es gibt bekannte Wege, eine relationale Datenbank korrekt zu entwerfen (denken Sie an Normalisierung usw.). Und zu guter Letzt haben sich die Leute schon viel an SQL gewöhnt.

Moderne NoSQL-Lösungen sind in den meisten Fällen kein wirklicher Schritt in Richtung OODBMS. Viele von ihnen sind immer noch relational, nur ausgezogen JOINs. Nur wenige von ihnen sind tatsächlich Objektspeicher, aber keine echten OODBMS, da sie die Beziehungen zwischen den Objekten nicht kennen.

Ein weiterer Grund, warum OODBMS nicht so stark vorangetrieben wird, ist, dass es eine OODBMS-Lösung für Arme gibt - ORMs. Dies hat eine enorme Popularität erlangt, da sie von bekannten, stabilen und getesteten DB-Engines unterstützt werden und dennoch die Zuordnung zu Objekten ermöglichen. Natürlich sind dies keine echten OODBs.

vartec
quelle
"Ein weiterer Grund, warum es für OODBMS keinen so starken Schub gibt, ist, dass es eine" OODBMS "-Lösung für Arme gibt - ORMs.": Sehr guter Punkt! +1.
Giorgio
Das ist nicht wahr. MUMPS wurde 1966 entwickelt und erst 1974 startete IBM das erste Forschungsprojekt zur Entwicklung von System R, dem weltweit ersten RDBMS. Oracle hat seine weltweit ersten kommerziellen RDBMs erst 1979 auf den Markt gebracht, im selben Jahr, als InterSystems M auf den Markt kam. Die Frage ist, was danach passiert ist. Die Antwort ist wahrscheinlich, dass ODBMS nicht für die Berichterstellung optimiert wurden, während die meisten Anwendungsfälle von LOB-Anwendungen ein starkes Lese-Schreib-Ungleichgewicht gegenüber Lesevorgängen aufweisen.
Alexey Zimarev
-2

OODBMS können komplexe Daten gut speichern. In den meisten Fällen sind die benötigten Daten jedoch relativ einfach, selbst wenn OO-Sprachen verwendet werden. Daher sind herkömmliche RDBMS besser geeignet.

Pieter B
quelle
2
Daten sind fast nie einfach, und ich glaube, Sie können nicht erklären, warum OODB nicht beliebter ist, weil ORM schließlich sehr gut abschneidet.
Tjaart