web-dev-qa-db-ger.com

Was ist der Unterschied zwischen einem ORM und einem ODM?

Ich versuche herauszufinden, was der Unterschied zwischen ORM und ODM ist. Soweit ich das Konzept verstehe, bildet ORM (Object Relational Mapper) die Beziehungen zwischen Daten ab, während ODM (Object Document Mapper) Dokumente behandelt. Bin ich zu Recht in der Annahme, dass mySQL ein Beispiel für ORM ist und MongoDB ein Beispiel für ODM ist?

Wie Sie sicher sehen können, ist mir die Theorie des Konzepts nicht allzu vertraut. Könnte jemand bitte die Unterschiede zwischen den beiden erklären?

120
Odyss3us

MySQL ist ein Beispiel für eine relationale Datenbank. Sie würden ein ORM verwenden, um zwischen Ihren Objekten im Code und der relationalen Darstellung der Daten zu übersetzen.

Beispiele für ORMs sind nHibernate , Entity Framework , Dapper und mehr ...

MongoDB ist ein Beispiel für eine Dokumentendatenbank. Sie würden ein ODM verwenden, um zwischen Ihren Objekten im Code und der Dokumentendarstellung der Daten (falls erforderlich) zu übersetzen.

Mandango ist ein Beispiel eines ODM für MongoDB.

142
Oded

Ein ORM bildet zwischen einem Objektmodell und einer relationalen Datenbank ab. Eine ODM-Zuordnung zwischen einem Objektmodell und einer Dokumentendatenbank. MySQL ist kein ORM, es ist eine relationale Datenbank, genauer eine SQL-Datenbank. MongoDB ist kein ODM, sondern eine Dokumentendatenbank.

22
Jörg W Mittag

Im Wesentlichen verwendet ein ORM einen SQL-Datenbanktreiber wie ODBC, JDBC oder OLEDB, um die Objektnotation in relationale Notation zu übersetzen, und ein ODM verwendet eine JSON- oder JSONB-API, um die Objektnotation in Dokumentnotation zu übersetzen.

Es gibt verschiedene Arten von Implementierungen unter der Haube.

PS: JSONB ist eine JSON-Textdokumentnotation, die in einem Binärformat gespeichert wird, wie es von MongoDB verwendet wird.

8

Wenn Sie zum ersten Mal lernen, wie man mit Datenbanken arbeitet, müssen Sie zwei Arten von Datenbank-Setups durchführen: ORM (Object Relation Mapping) und ODM (Object Document Mapping).

ORM, das ein Objekt mit einer relationalen Welt abbilden soll, konvertiert im Grunde genommen Daten zwischen inkompatiblen Typen in objektorientierten Programmiersprachen. ORM fasst die implementierungsspezifischen Details von Speichertreibern in einer API (Anwendungsprogrammschnittstelle) zusammen und ordnet die relationalen Felder einem Objektmitglied zu. Wenn ich beispielsweise eine Tabelle mit Mitarbeitern habe, wird diese für alle Mitarbeiter mit verschiedenen Methoden auf ein einzelnes Objekt abgebildet.

ODM hingegen ist ein Object Document Mapper, der Objekte mit einer Document Database wie MongoDB abbildet.

Der Hauptunterschied besteht darin, dass ORM für MySQL-Datenbanken vorgesehen ist, während ODM die Zuordnung für die Dokumentendarstellung von Daten vornimmt. Der beste Weg, sich daran zu erinnern, was ORM tut, besteht darin, es sich als Excel-Tabelle mit Zeilen und Spalten vorzustellen. Wenn Sie dieses Setup verwenden, möchten Sie sicher sein, dass Sie einen guten Plan haben, wie Sie die aktuelle Anwendung angehen möchten. Es sind nicht so viele Änderungen wie bei ODM möglich. Mit ODM können neue Felder und Eigenschaften problemlos hinzugefügt werden. Mit ORM müssen Sie beim Hinzufügen eines neuen Felds jedoch berücksichtigen, dass nichts leer bleibt. Daher muss ein Wert als Standardwert festgelegt werden, es sei denn, Sie möchten in die einzelnen Felder wechseln und Änderungen vornehmen.

0

Mongoose ist ein gutes Beispiel für ODM (Object Data Model) für MongoDB, in dem Sie Operationen mit Objekten direkt ausführen können und das in die entsprechende Abfrage und das entsprechende Schema .. _ übersetzt wird. Sie finden es hier unter https: // mongoosejs .com/

0
Arjun Agarwal