Apa perbedaan antara ORM dan ODM?

158

Saya mencoba mencari tahu apa perbedaan antara ORM dan ODM, sejauh yang saya mengerti konsepnya, ORM (Object Relational Mapper) memetakan hubungan antara data, di mana seperti ODM (Object Document Mapper) berurusan dengan dokumen. Apakah saya benar dengan menganggap bahwa mySQL adalah contoh ORM dan MongoDB adalah contoh dari ODM?

Seperti yang saya yakin bisa Anda lihat, saya tidak terlalu akrab dengan teori konsep. Bisakah seseorang menjelaskan perbedaan antara keduanya?

Odyss3us
sumber

Jawaban:

173

MySQL adalah contoh dari database relasional - Anda akan menggunakan ORM untuk menerjemahkan antara objek Anda dalam kode dan representasi relasional data.

Contoh ORM adalah nHibernate , Entity Framework , Dapper , dan lainnya ...

MongoDB adalah contoh database dokumen - Anda akan menggunakan ODM untuk menerjemahkan antara objek Anda dalam kode dan representasi dokumen dari data (jika diperlukan).

Mandango adalah contoh ODM untuk MongoDB.

Oded
sumber
8
Anda dapat memiliki kerangka kerja ORM / ODM hybrid, seperti mORMot untuk Delphi , Doctrine untuk PHP atau Hibernate OGM untuk Java . Dan beberapa database SQL memiliki dukungan kuat untuk dokumen, misalnya PostgresSQL yang hebat yang menampilkan tipe data JSON atau JSONB sehingga Anda dapat mencampur RDBMS dan penyimpanan berorientasi dokumen dalam tabel yang sama, termasuk indeks dan permintaan lanjutan!
Arnaud Bouchez
Jadi maksudmu dokumen itu dokumen ... itu masuk akal!
HashRocketSyntax
luwak adalah ODM atau ORM?
YL
1
luwak, luwak semua ODM. Saya kira untuk noSQL kita hanya bisa memiliki ODMs.
Luna Lovegood
29

ORM memetakan antara Model Objek dan Database Relasional. Peta ODM antara Model Obyek dan Database Dokumen. MySQL bukan ORM, ini adalah Database Relasional, lebih khusus lagi, Database SQL. MongoDB bukan ODM, ini adalah Database Dokumen.

Jörg W Mittag
sumber
Penjelasan hebat! Saya masih belum jelas apakah ODM / ORM adalah lapisan abstraksi yang disediakan oleh database yang mendasarinya atau oleh pustaka driver, atau apakah mereka merupakan lapisan terpisah antara driver dan DB? Bisakah ada driver ORM untuk Database Dokumen dan sebaliknya?
pooya13
10

Pada dasarnya, ORM menggunakan pengandar basis data SQL seperti ODBC, JDBC atau OLEDB untuk menerjemahkan notasi objek ke notasi relasional dan ODM menggunakan api JSON atau JSONB untuk menerjemahkan notasi objek ke notasi dokumen.

Ada berbagai jenis implementasi di bawah tenda.

PS: JSONB adalah notasi dokumen teks JSON yang disimpan dalam format biner seperti yang digunakan oleh MongoDB.

Fernando Santucci
sumber
1
Secara teknis, ODBC dan JDBC adalah Spesifikasi API yang diimplementasikan oleh driver.
asgs
2
Postgres juga mendukung JSONB
Luna Lovegood
3

Ketika Anda pertama kali belajar cara bekerja dengan database, semuanya bermuara pada dua jenis pengaturan basis data yaitu ORM (object Relation Mapping) dan ODM (Object Document Mapping)

ORM yang memetakan objek dengan dunia relasional, pada dasarnya mengubah data antara jenis yang tidak kompatibel dalam bahasa pemrograman berorientasi objek. ORM membungkus implementasi spesifik dari driver penyimpanan dalam API (antarmuka program aplikasi), dan memetakan bidang relasional ke anggota objek. Misalnya jika saya memiliki tabel karyawan, ini dipetakan ke objek tunggal untuk semua karyawan, dengan berbagai metode yang terkait dengannya.

ODM di sisi lain adalah Object Document Mapper, yang memetakan objek dengan Database Dokumen seperti MongoDB.

Perbedaan utama adalah bahwa ORM adalah untuk database MySQL, sedangkan ODM melakukan pemetaan untuk representasi data dokumen. Cara terbaik untuk mengingat apa yang dilakukan ORM adalah menganggapnya sebagai lembar spread excel, dengan baris dan kolom. Saat menggunakan pengaturan ini, Anda ingin memastikan Anda memiliki rencana hebat tentang bagaimana Anda ingin menangani aplikasi saat ini, itu tidak memungkinkan banyak modifikasi seperti ODM. Dengan ODM kami dapat menambahkan bidang dan properti baru dengan mudah tetapi dengan ORM saat menambahkan bidang baru Anda perlu diingat bahwa tidak ada yang tetap kosong sehingga perlu nilai sebagai default kecuali Anda ingin masuk ke masing-masing dan memodifikasi.

sajjad jafari bojd
sumber
2

Mongoose adalah contoh yang baik untuk ODM (Object Data Model) untuk MongoDB di mana Anda dapat langsung melakukan operasi dengan objek dan yang akan diterjemahkan ke dalam kueri dan skema yang sesuai. Itu dapat ditemukan di sini di https://mongoosejs.com/

Arjun Agarwal
sumber