Mengapa database Berorientasi Objek tidak digunakan sebanyak Database Relasional? [Tutup]

18

Saya telah menemukan banyak sistem manajemen basis data relasional (RDBMS). Tetapi baru-baru ini saya menggunakan hibernate yang membuat saya mulai bertanya-tanya mengapa database Object Oriented tidak lebih populer.

Jika bahasa berorientasi objek seperti Java atau C # sangat populer, lalu mengapa sistem manajemen database berorientasi objek (OODBMS) juga tidak lebih populer?

Rachel
sumber
1
Pendekatan "NoSQL" sangat populer sekarang. RDBMS terbatas dan membatasi, dan, untungnya, mereka kehilangan posisi sekarang dengan cepat.
SK-logic
Apa yang Anda sebut sebagai oodb? hibernate hanyalah kerangka kerja untuk berkomunikasi dengan rdbms dengan antarmuka oo.
Simon Bergot
2
Pertanyaan serupa ditanyakan pada 2009 pada SO, lihat stackoverflow.com/questions/1350044/... IMHO hampir setiap jawaban yang diberikan masih berlaku hingga hari ini.
Doc Brown
@Simon oleh oodb, maksud saya database berorientasi objek
1
@Simon: Versant adalah oodb (saya telah melihat produksi di dua perusahaan yang berbeda).
Giorgio

Jawaban:

11

Ada beberapa alasan.

  1. Banyak pengembang hanya berpengalaman dalam pemodelan data relasional. Untuk menggunakan basis data OO, mereka perlu mempelajari cara yang sangat berbeda untuk memodelkan dan memikirkan data. Ini sangat sulit atau cukup memakan waktu.
  2. DB relasional memiliki banyak waktu untuk menjadi dewasa. Bahkan DB relasional gratis memiliki teknik optimasi dan pengindeksan canggih. Juga, data relasional mudah disimpan dan diindeks. Hal yang sama tidak dapat dikatakan tentang database OO.
  3. Ketika model relasional dan OO mulai muncul. Relasional memiliki keunggulan besar yang secara matematis "benar" dan memiliki standar untuk menyimpan dan menanyakan data. OO tidak memiliki semacam itu.
  4. [spekulasi] Banyak pemain besar menggunakan banyak sumber daya untuk membuat DB relasional mereka. Akan lebih kontraproduktif untuk mendukung OO DBs. Begitu banyak dari mereka yang berinvestasi dalam mengintegrasikan prinsip-prinsip OO ke dalam model relasional, membuat kebanyakan DB saat ini disebut objek-relasional. IMO model ini lebih buruk daripada OO relasional murni atau murni. [/ Spekulasi]
  5. [kata-kata kasar] Hal terakhir yang perlu diperhatikan adalah bahwa banyak pengembang tidak benar-benar memahami cara OO untuk memodelkan data. Ini biasanya menghasilkan model anemia suboptimal. Begitu banyak perusahaan pengembangan, yang bergantung pada pengembang yang murah dan tidak berpengalaman, lebih memilih model relasional yang sederhana, yang diajarkan di semua perguruan tinggi CS daripada memilih pendekatan OO yang sulit dan tidak terbukti. [/ Rant]
Euforia
sumber
5
Saya setuju dengan semua poin Anda kecuali yang terakhir. Saya pikir cara ini lebih mudah bagi pengembang untuk mengacaukan basis data relasional daripada basis data objek. Kunci komposit dan hubungan yang terputus sangat umum, tetapi menurut saya setidaknya sedikit lebih sulit untuk mengacaukan hierarki kelas.
Tjaart
@ Tuart mengacaukan hirarki kelas tampaknya menjadi norma bagi sebagian besar pengembang di OO.
Bent
10

Ketika database pertama kali muncul, OOP masih bukan cara untuk memprogram. Database relasional, di sisi lain, mendapatkan banyak daya tarik. Dan SQL yang diperkenalkan pada tahun 80-an oleh IBM dengan cepat menjadi lingua franca dari semua basis data.

Ketika OOP menjadi populer ada beberapa upaya, tetapi ada beberapa masalah. Pertama, OODBMS sejati sangat sulit untuk diterapkan. Dalam kasus database relasional, tabel dan indeks terkait adalah struktur yang cukup sederhana (mis. B-tree). Alasan lain adalah bahwa ada banyak teori di balik model relasional, itu langsung berasal dari teori himpunan matematika. Ada beberapa cara yang diketahui untuk merancang database relasional dengan benar (pikirkan normalisasi dll). Dan yang tak kalah pentingnya, orang sudah terbiasa dengan SQL.

Solusi NoSQL modern saat ini dalam banyak kasus sebenarnya bukan langkah menuju OODBMS. Banyak dari mereka masih relasional, hanya dilucuti JOINs. Beberapa dari mereka sebenarnya menyimpan objek tetapi tidak benar-benar OODBMS, karena mereka tidak menyadari hubungan antara objek.

Namun alasan lain mengapa tidak ada dorongan kuat untuk OODBMS adalah bahwa ada solusi "OODBMS orang miskin" - ORM. Ini telah memperoleh popularitas besar, karena mereka didukung oleh mesin DB yang terkenal, stabil dan teruji, namun mereka menyediakan pemetaan untuk objek. Tentu saja, ini bukan OODB yang benar.

vartec
sumber
"Namun alasan lain mengapa tidak ada dorongan kuat untuk OODBMS adalah bahwa ada" OODBMS "solusi orang miskin - ORM.": Poin yang sangat bagus! +1.
Giorgio
Itu tidak benar. MUMPS dirancang pada tahun 1966 dan hanya pada tahun 1974, proyek penelitian pertama dimulai oleh IBM untuk mengembangkan System R, RDBMS pertama di dunia. Oracle hanya merilis RDBM kelas komersial pertama di dunia pada tahun 1979, tahun yang sama ketika InterSystems M terungkap. Pertanyaannya adalah apa yang terjadi setelah itu. Jawabannya mungkin bahwa ODBMS tidak dioptimalkan untuk pelaporan, sementara sebagian besar kasus penggunaan dari aplikasi LOB memiliki ketidakseimbangan baca-tulis yang berat terhadap pembacaan.
Alexey Zimarev
-2

OODBMS pandai menyimpan data yang kompleks. Namun, sebagian besar waktu, bahkan ketika menggunakan bahasa OO, data yang dibutuhkan relatif sederhana. Jadi RDBMS tradisional lebih cocok.

Pieter B
sumber
2
Data hampir tidak pernah sederhana, dan saya pikir Anda gagal menjelaskan mengapa OODB tidak lebih populer karena bagaimanapun ORM bekerja dengan sangat baik.
Tjaart