Kann objektorientierte Datenbanken als eine relationale Datenbank mit einer ORM eine bessere Option?

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

Frage

Denken Sie einfach, dass eine relationale db mit einem ORM ist in vielerlei Hinsicht sehr ähnlich zu einer objektorientierten Datenbank. Meine Erfahrung liegt allein bei RDMS mit einem Hauch von ORM, so ist es, dass die objektorientierten Datenbanken mir scheint, sind sehr ähnlich, aber ohne Erfahrung kann ich nicht sicher sagen.

Wenn Sie verwendet haben, objektorientierte Datenbanken und ORMs können Sie sie vergleichen? Was sind die Schwachstellen associcated mit objektorientierten Datenbanken im Vergleich zu RBMS + ORM?

War es hilfreich?

Lösung

Was sind die Schwachstellen im Zusammenhang mit objektorientierten Datenbanken im Vergleich zu RBMS + ORM?

Die größte Schwäche ist die Standardisierung fehlen : kein Standard-API, keine Standard-Abfragesprache (der OQL Versuch ein großer Fehlschlag war) und damit der Mangel an Portabilität und Interoperabilität Tools (für Backup, Archivierung, Migration, etc.). Sie wollen nicht, dass, wenn es darum geht, Daten.

Diese IMO erklärt, warum OODBMS ein Fehler von einer Annahme Sicht ist und warum RDBMS für eine Weile bleiben um, unabhängig von der NoSQL-Bewegung (ich habe das Gefühl, dass OODBMS Anbieter die NoSQL-Bewegung als Chance für eine kommen zurück nach einiger Rebranding ihrer Produkte).

Andere Tipps

Meine Erfahrung:

  • RDBMS:
    • Ehrlich gesagt, ich weiß nicht wie mit SQL arbeiten, eine 15 Jahre alte Sprache, aber die Realität ist, dass Sie gezwungen, wenn Sie wollen etwas verwendbar, wie Substanz- Einsätze (die LINQ-to-Entity ORM-Framework nicht Bulk-Einsätze unterstützen, so dass es 30 Sekunden für einen 20.000 Rekordeinsatz nimmt, im Vergleich zu 500 ms für einen Masseneinsatz in SQL). Sie am Ende zu für Datenbank Einfügungen Verwendung ADO.NET mit.
    • Es gibt einige Vorteile einen RDBMS über eine Objektdatenbank, nämlich die Daten unabhängig von der anrufenden Anwendung (dies ist jedoch auch eine Schwäche, da die Abbildungsschicht langsamer alles macht, komplexe und spröder).
    • Fazit: Sie verbrachten 6 Wochen mit dem LINQ-to-Entity ORM-Framework und Microsoft SQL Server 2008 R2. Vernünftigerweise steile Lernkurve.
  • Objektdatenbanken: eine Objektdatenbank versucht, nämlich die kostenlose Open-Source db4o .
    • entdeckt, dass ich meine Objekte mit einer Zeile Code bestehen könnte.
    • Keine Schema-Änderungen zu behandeln, es funktioniert einfach.
    • Instant Support für POCO (Plain Old Class Objects). Erstellen Sie Ihre Klasse in Code, bleiben sie dann. Es ist möglich, das gleiche mit dem Entity Framework zu tun, aber es ist ein Los die Arbeit mit manueller Ausblendung und es bricht sehr einfach.
    • Einschalten transparente Persistenz, und es verfügt über eine automatische verzögertes Laden im Hintergrund -. Nicht mehr für Objekte überprüft, die wegen verzögertes Laden im Rahmen Entity nicht geladen werden
    • Die Leistung von Objektdatenbanken ist ebenfalls beeindruckend: Wenn Sie 10 Millionen Zeilen in einer Objektdatenbank haben, und Indizierung eingeschaltet, dessen 16ms für eine dreispaltige wählen. Das ist in Ordnung.
    • Fazit: Nach 1 Woche hatte ich die gleiche Lösung als RDBMS für die Persistenz verwendet, aber es war viel sauberer, viel weniger Code und mehr wartbar - und wenn ich wirklich wollte, könnte ich einen Dienst verwenden, verwenden Sie die db4o Datenbank mit MSSQL zu synchronisieren.

Für wirklich große Systeme im Unternehmen weltweit, bestehend aus etwa 250 Millionen Zeilen in einer Tabelle, die Dinge wie sharding und Optionen wie gruppierten Indizierung vs . nicht-gruppierten Indizierung für die Leistung wichtig geworden. In diesem Fall db4o nicht funktionieren würde, kann es etwas mehr enterprisey erfordern. Wenn Sie jedoch ein trivialer einfache Methode, Objekte von persistierenden, dann wird eine Objektdatenbank passen die Rechnung. Die ganze Arbeit SQL das Lernen, die Zuordnung in den ORM Einrichtung, die sie mit der Installation von MSSQL, Ihre eigenen Bulkbeladung der Implementierung von Verfahren, usw. verschwindet nur, Sie mit sauberem, elegantem 100% verwaltetem Code zu verlassen.

ich vermute, dass einer der Gründe dafür, dass die Hersteller nicht Objektdatenbanken umfaßt, wie sie, dass der Datenbank-Markt im Wert von $ 3 Milliarden pro Jahr, und es gibt keinen Grund, den Cash-Cow zu töten nur noch.

Disclaimer: Ich habe keine Verbindung mit jedem Microsoft oder db4o .

Chris Datum stimmt zu:

... 'Object / Relational' System würde sein nicht mehr und nicht weniger als ein echter relationales System ... Ein richtiges Object / Relational-System ist nur ein relational System mit der richtigen Art Unterstützung ..., das es ist eine gerade bedeutet, richtiges relationales System, nicht mehr und nicht weniger.

SQL und relationale Theorie: Wie schreibt man genauen SQL-Code, S. 36

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