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?

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.


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.


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.


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.


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/

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.