Próbuję dowiedzieć się, jaka jest różnica między ORM i ODM, o ile rozumiem tę koncepcję, ORM (Object Relational Mapper) mapuje relacje między danymi, podczas gdy ODM (Object Document Mapper) zajmuje się dokumentami. Czy mam rację zakładając, że mySQL jest przykładem ORM, a MongoDB jest przykładem ODM?
Jak na pewno widzisz, nie jestem zbyt zaznajomiony z teorią tego pojęcia. Czy mógłby ktoś wyjaśnić różnice między nimi?
Mapa ORM między modelem obiektowym a relacyjną bazą danych. Odwzorowanie ODM między modelem obiektowym a bazą danych dokumentów. MySQL to nie ORM, to relacyjna baza danych, a dokładniej baza danych SQL. MongoDB to nie ODM, to baza danych dokumentów.
źródło
Zasadniczo ORM używa sterownika bazy danych SQL, takiego jak ODBC, JDBC lub OLEDB, do tłumaczenia notacji obiektowej na notację relacyjną, a ODM używa JSON lub JSONB API do tłumaczenia notacji Object na notację dokumentu.
Pod maską są różnego rodzaju realizacje.
PS: JSONB to notacja dokumentu tekstowego JSON przechowywana w formacie binarnym używanym przez MongoDB.
źródło
Kiedy po raz pierwszy nauczysz się pracy z bazą danych, wszystko sprowadza się do dwóch typów konfiguracji bazy danych, którymi są ORM (mapowanie relacji obiektów) i ODM (mapowanie dokumentu obiektowego)
ORM, który ma mapować obiekt ze światem relacyjnym, w zasadzie konwertuje dane między niekompatybilnymi typami w obiektowych językach programowania. ORM opakowuje specyficzne dla implementacji szczegóły sterowników pamięci masowej w API (interfejs aplikacji) i mapuje pola relacyjne na elementy składowe obiektów. Na przykład, jeśli mam tabelę pracowników, jest ona przypisana do pojedynczego obiektu dla wszystkich pracowników, z różnymi metodami z nim związanymi.
Z drugiej strony ODM to Object Document Mapper, który mapuje obiekty za pomocą bazy danych dokumentów, takiej jak MongoDB.
Główna różnica polega na tym, że ORM jest przeznaczony dla baz danych MySQL, podczas gdy ODM wykonuje mapowanie dla reprezentacji danych w dokumencie. Najlepszym sposobem na zapamiętanie tego, co robi ORM, byłoby myślenie o nim jako o arkuszu kalkulacyjnym programu Excel z wierszami i kolumnami. Korzystając z tej konfiguracji, chcesz mieć pewność, że masz świetny plan, w jaki sposób chcesz poradzić sobie z bieżącą aplikacją, nie pozwala ona na tak wiele modyfikacji, jak robi to ODM. Dzięki ODM możemy łatwo dodawać nowe pola i właściwości, ale z ORM podczas dodawania nowego pola należy pamiętać, że nic nie pozostaje puste, więc musi mieć wartość domyślną, chyba że chcesz wejść do każdego i zmodyfikować.
źródło
Mongoose jest dobrym przykładem ODM (Object Data Model) dla MongoDB, w którym można bezpośrednio wykonywać operacje na obiektach i który jest tłumaczony na odpowiednie zapytanie i schemat. Można go znaleźć tutaj na https://mongoosejs.com/
źródło