В чем разница между ORM и ODM?

Я пытаюсь выяснить, какая разница между ORM и ODM, насколько я понимаю концепцию, ORM (Object Relational Mapper) сопоставляет отношения между данными, где ODM (Object Document Mapper) имеет дело с документами. Правильно ли я полагаю, что mySQL является примером ORM, а MongoDB является примером ODM?

Как я уверен, вы можете видеть, я не слишком хорошо знаком с теорией концепции. Может кто-то прояснить различия между ними?

Ответ 1

MySQL является примером реляционной базы данных - вы использовали бы ORM для перевода между вашими объектами в коде и реляционным представлением данных.

Примерами ORM являются nHibernate, Entity Framework, Dapper и другие...

MongoDB - это пример базы данных документов - вы бы использовали ODM для перевода между вашими объектами в коде и представлением данных в документе (при необходимости).

Mandango является примером ODM для MongoDB.

Ответ 2

ORM-карты между объектной моделью и реляционной базой данных. ODM-карты между объектной моделью и базой данных документа. MySQL не является ORM, это реляционная база данных, в частности база данных SQL. MongoDB не является ODM, это база данных документов.

Ответ 3

В сущности ORM использует драйвер базы данных SQL, такой как ODBC, JDBC или OLEDB, чтобы перевести нотацию объекта в реляционную нотацию, а ODM использует JSON или JSONB api для преобразования нотации Object в нотацию документа.

Существуют различные варианты реализаций под капотом.

PS: JSONB - это текстовая документация JSON, хранящаяся в двоичном формате, используемом MongoDB.

Ответ 4

Mongoose является хорошим примером ODM (Object Data Model) для MongoDB, в котором вы можете напрямую выполнять операции с объектами, и который переводится в соответствующий запрос и схему. Это можно найти здесь на https://mongoosejs.com/

Ответ 5

Когда вы впервые узнаете, как работать с базой данных, все сводится к двум типам настроек базы данных: ORM (сопоставление отношений объектов) и ODM (сопоставление документов объектов)

ORM, который предназначен для сопоставления объекта с реляционным миром, он в основном преобразует данные между несовместимыми типами в объектно-ориентированных языках программирования. ORM оборачивает детали реализации драйверов хранилища в API (интерфейс прикладной программы) и отображает реляционные поля в члены объекта. Например, если у меня есть таблица сотрудников, она сопоставляется одному объекту для всех сотрудников с различными методами, связанными с ней.

ODM, с другой стороны, представляет собой Object Document Mapper, который отображает объекты в базе данных документов, такой как MongoDB.

Основное отличие состоит в том, что ORM предназначен для баз данных MySQL, а ODM выполняет сопоставление для представления данных в документе. лучший способ запомнить, что делает ORM, - это представить его как электронную таблицу Excel со строками и столбцами. При использовании этой настройки вы хотите быть уверенным в том, что у вас есть отличный план того, как вы хотите работать с текущим приложением, так как он не допускает столько изменений, как ODM. С помощью ODM мы можем легко добавлять новые поля и свойства, но с помощью ORM при добавлении нового поля вы должны иметь в виду, что ничто не остается пустым, поэтому ему нужно значение по умолчанию, если вы не хотите входить в каждое и изменять его.