Bagaimana RDBMS dianggap sebagai mode?

11

Menyelesaikan Computing A-level saya pada tahun 2003 dan mendapatkan gelar dalam Computing pada tahun 2007, dan mempelajari perdagangan saya di sebuah perusahaan dengan banyak penggunaan SQL, saya dibesarkan dengan gagasan tentang Relational Database yang digunakan untuk penyimpanan.

Jadi, meskipun relatif baru untuk pengembangan, saya terkejut membaca komentar (di /software//q/89994/12436 ) yang mengatakan:

[Beberapa devs] membenci [SQL] dan berpikir bahwa itu dan RDBMS adalah mode

Jelas, pengembang yang kompeten akan menggunakan alat yang tepat untuk pekerjaan yang tepat dan tidak akan membuat database relasional ketika misalnya file datar atau solusi lain untuk penyimpanan yang tepat, tetapi RDBM berguna dalam sejumlah besar keadaan, jadi bagaimana mereka bisa dianggap mode?

StuperUser
sumber
1
Berikan konteks - di mana Anda membaca komentar itu?
Eran Galperin
8
Apa pun dan segala sesuatu dianggap sebagai iseng oleh seseorang di suatu tempat.
Péter Török
Péter yang sangat benar, hanya ingin tahu mengapa?
StuperUser
5
Orang-orang seperti itu biasanya memiliki paradigma lain yang ingin mereka promosikan, yang bertentangan dengan gagasan tentang basis data relasional. Oleh karena itu database relasional buruk, dan harus pergi. Lihatlah database berorientasi objek, yang belum mencapai massa kritis.

Jawaban:

28

Kuncinya adalah dalam R dalam RDBMS, yang merupakan singkatan untuk relasional. Bertentangan dengan kepercayaan populer itu tidak berarti hubungan antara tabel, tetapi lebih pada kenyataan, bahwa setiap tabel adalah hubungan dalam arti matematika kata .

Model relasional memiliki implikasi yang cukup signifikan. Anda harus memodelkan data Anda agar sesuai dengan hubungan dan menormalkan model itu . Jika aplikasi Anda dirancang sebagai model berorientasi objek, model relasional tidak cocok. Ini secara luas dikenal sebagai ketidakcocokan impedansi objek-relasional .

Salah satu pendekatan untuk ketidakcocokan ini adalah ORM (object-relation mappers), yang telah mendapatkan banyak popularitas. Tapi mereka bukan solusi yang benar, mereka lebih suka mengatasi masalah. Mereka masih belum benar-benar menyelesaikan masalah pemetaan warisan kelas ke model relasional.

Solusi sebenarnya untuk ketidakcocokan objek-relasional adalah OODBMSes , yang sayangnya tidak mendapatkan banyak daya tarik. Mesin populer yang mendukung OOBD secara asli adalah PostgreSQL, yang merupakan hybrid OO / RDBMS. OODBMS lain adalah Zope Object DB , yang dibangun dengan Python dan dalam pengaturan tipikal menggunakan RDBMS sebagai mesin yang mendasarinya.

Pendekatan alternatif adalah memiliki lebih banyak logika yang diimplementasikan dalam aplikasi atau tingkat peralatan menengah dan menggunakan solusi NoSQL untuk penyimpanan yang mendasarinya.

Baik OODBMS maupun NoSQL adalah "hanya file-datar".

vartec
sumber
2
@Aniel: dia tentu tidak mengatakan bahwa model relasional adalah masalah yang membutuhkan solusi; dia mengatakan apa yang Anda katakan - jika Anda berkomitmen untuk memodelkan perangkat lunak Anda pada paradigma berorientasi objek, maka model relasional adalah masalah.
Carson63000
1
@Carson: Permintaan maaf saya, tapi bukan itu yang saya baca jawabannya. @vartec mengatakan: "Solusi sebenarnya adalah OODBMS (yang sayangnya tidak mendapatkan banyak daya tarik)." Saya dengan hormat tidak setuju: Saya akan mengatakan solusi yang sebenarnya adalah memahami model relasional dan menggunakannya secara efektif. OODBMS adalah solusi orang miskin ketika Anda harus menggunakan prinsip OO untuk model data Anda, yang tentu saja bukan kasus universal.
Daniel Pryden
1
@Aniel: Saya pikir maksudnya OODBMS adalah solusi yang benar, sekali lagi, jika Anda berkomitmen untuk memodelkan perangkat lunak Anda pada paradigma berorientasi objek. Bukan berarti model relasional merupakan masalah di dalam dan dari dirinya sendiri, dan bahwa OODBMS adalah solusi untuk itu. Tapi bagaimanapun, tidak banyak gunanya memperdebatkan siapa di antara kita yang memahami Vartec dengan benar, saya akan mundur dan membiarkannya menjelaskan jika dia mau. :-)
Carson63000
1
@ Daniel: Konteksnya adalah penting. Saya mengatakan, bahwa model relasional adalah masalah dalam konteks OOP. Sekarang, seberapa universal atau tidaknya OOP, itu di luar cakupan jawaban ini. Dan btw. OODBMS bukan "solusi orang miskin", melainkan ORM.
vartec
1
@artec: Oke, saya tarik kembali downvote saya. (Saya tidak dapat menghapusnya kecuali posnya diedit.) Saya pikir akan lebih baik untuk mengklarifikasi bahwa ada solusi yang tidak melibatkan OO. Dan ya, saya setuju bahwa ORM lebih buruk daripada OODBMS.
Daniel Pryden
13

Saya membuat pernyataan yang Anda kutip dalam pertanyaan di atas. Jika Anda ingin kutipan untuk memverifikasi asumsi saya tentang pengembang di situs ini, maka baca jawaban saya untuk pertanyaan berikut dan tinjau balasan reaksi dan downvotes yang saya terima untuk apa yang saya anggap sebagai jawaban yang dapat diterima.

Haruskah programmer berpengalaman mengetahui permintaan basis data?

Saya membuat pernyataan bahwa jika database RDBMS digunakan meskipun Linq atau ORM, seorang pengembang harus memiliki pengetahuan SQL yang canggih.

Ini adalah pernyataan yang sangat tidak populer tampaknya karena perbedaan pendapat yang terhormat tentang pentingnya SQL, dengan pola pikir yang kurang terhormat bahwa RDBMS secara inheren lebih rendah daripada database NoSQL seperti MongoDB.

EDIT: Untuk menambah klaim saya lebih lanjut, saya akan mengutip SK-logika pengguna:

hanya ingat bahwa semua kegemaran RDBMS ini adalah tren yang relatif baru. Sebelumnya kami memiliki berbagai pendekatan. Anda tampaknya bekerja di perusahaan muda, bersama dengan pengembang seusia Anda, dan dengan demikian Anda tidak punya kesempatan untuk terpapar dengan pendekatan penyimpanan yang lebih lama dan lebih solid. Untungnya, tren baru-baru ini sudah menurun, dan cara-cara lama yang baik kembali, berganti nama menjadi 'nosql'.

maple_shaft
sumber
Sepenuhnya setuju dengan Anda bahwa pengembang yang bekerja dengan DB harus memahami SQL untuk dapat membuat konsep permintaan dalam hal hubungan dengan benar. Namun, mudah-mudahan, Linq / ORM tidak mengoptimalkan kueri pada abstraksi dengan cara yang memengaruhi kueri yang ditulis dengan datastore.
StuperUser
Satu-satunya alasan siapa pun akan mengatakan "kegilaan RDBMS ini adalah tren yang relatif baru" adalah untuk menunjukkan betapa abu-abu janggut mereka. Saya pertama kali bekerja pada jenis aplikasi bisnis dan bisnis yang Anda gambarkan pada tahun 1995 - basis data relasional mendominasi waktu itu, mereka mendominasi sekarang, mereka mendominasi di mana saja saya telah bekerja selama 16 tahun intervensi. Sekarang jelas saya tidak setua beberapa, tetapi ketika saya mengatakan "relatif baru", saya tidak bermaksud "dalam dua puluh tahun terakhir".
Carson63000
Masalahnya adalah bahwa banyak pengembang salah menyamakan RDBMS dengan SQL. SQL adalah bahasa yang benar-benar mengerikan oleh standar modern. Ini adalah implementasi cacat dan tidak lengkap dari bahasa "relasional" (SQL tidak benar-benar relasional sama sekali dan itu bagian dari masalah) yang belum banyak berkembang dalam 30 tahun terakhir. Banyak orang yang menggunakan SQL hampir tidak memahami model relasional - semua yang mereka tahu adalah SQL sehingga mereka menganggap bahwa model relasional adalah penyebab frustrasi mereka.
nvogel
@dportas, Tentu SQL tidak sempurna, tapi itu sangat penting untuk setiap pekerjaan yang saya miliki sehingga saya menemukan betapa lebih mudahnya hidup ketika saya mulai BERPIKIR dalam SQL. Jika Anda memberi saya model relasional dan bertanya kepada saya dalam bahasa Inggris, maka saya bisa menulis "jawaban" dalam SQL. Anda mengatakan bahwa "semua yang mereka tahu adalah SQL dan mereka menganggap bahwa model relasional adalah penyebab frustrasi mereka", maka mereka tidak tahu SQL dengan cukup baik. Mengapa semuanya harus dipenuhi oleh demoninator umum terendah sepanjang waktu, seperti seorang programmer India yang berpenghasilan kurang dari $ 10 / jam dengan pendidikan yang buruk.
maple_shaft
@maple_shaft, jika Anda berpikir dalam SQL maka Anda memikirkan beberapa hal yang sangat salah dalam istilah relasional. Yang harus didorong adalah agar pengembang memahami konsep dasar seperti model relasional alih-alih fokus pada bahasa seperti SQL. Jika lebih banyak orang memahami konsep dasar maka mungkin SQL sudah akan digantikan oleh hal-hal yang lebih baik.
nvogel
9

mode :

suatu hal yang menjadi sangat populer dalam waktu singkat, dan kemudian dilupakan dengan kecepatan yang sama. "

RDBMS sudah ada sejak lama (setidaknya dalam istilah CS), jadi siapa pun yang mengatakan itu berarti mengatakan sesuatu yang lain atau tidak mengerti.

l0b0
sumber
2
Saya bermaksud mengatakan sesuatu yang lain, lihat jawaban saya di bawah ini.
maple_shaft
3
Mungkin lebih baik menggunakan kamus sungguhan dibandingkan dengan urbandictionary.
Aaronaught
Aaronaught - Bagaimana dengan Princeton? "Minat diikuti dengan semangat berlebihan." wordnetweb.princeton.edu/perl/…
Shauna
3

Alternatif untuk RDBMS bukan hanya flat-file. Ketika saya di sekolah, OODBMS adalah hal yang baru dan profesor saya benar ketika dia memberi label iseng. Anda harus melihat pada model yang berbeda dan perhatikan trennya. Saya telah melihat peningkatan ketergantungan pada OLAP dan akan berani bertaruh sistem multi-dimensi baru yang dapat memproses data lebih cepat hanya sekitar sudut.

Christopher Bibbs
sumber
Haruskah "bersedia menjadi yang baru" => "mau bertaruh yang baru"?
Binary Worrier
Oh tentu saja menggunakan flat file sebagai contoh. Itu tautan yang bagus ke model DB.
StuperUser
@ Biner Ya dan diedit untuk mencerminkannya.
Christopher Bibbs
3

Masalahnya adalah bahwa banyak pengembang salah menyamakan RDBMS dengan SQL. SQL adalah bahasa yang benar-benar mengerikan oleh standar modern. Ini adalah implementasi cacat dan tidak lengkap dari bahasa "relasional" (SQL tidak benar-benar relasional sama sekali dan itu bagian dari masalah) yang belum banyak berkembang dalam 30 tahun terakhir. Banyak orang yang menggunakan SQL hampir tidak memahami model relasional - semua yang mereka tahu adalah SQL sehingga mereka menganggap bahwa model relasional adalah penyebab frustrasi mereka.

nvogel
sumber
1

Tanpa konteks sulit untuk menentukan siapa / mengapa pernyataan bahwa RDBM dianggap iseng.

Dalam jangka pendek hingga menengah (5 -10 tahun) dan saya akan berpikir lebih lama lagi bahwa tidak akan hilang. RDBM menyediakan metode yang efisien dan efektif untuk menyimpan, memproses, dan mengambil data relasional yang merupakan milik sebagian besar perusahaan, baik pelanggan / pesanan, penumpang / tiket, dll.

Ada alternatif lain lain seperti NoSQL yang tampaknya tumbuh dalam popoularitas dengan proyek open source.

Karena OLAP ini benar-benar (dalam pikiran saya) database spesialis yang dirancang untuk memungkinkan bisnis memberikan informasi statistik tepat waktu dan berguna tentang perusahaan dan menjalankan skenario "bagaimana jika" pada data saat ini. Tentu saja dalam hampir semua kasus, data saat ini berasal dari RDMBs dan dimanipulasi dan kemudian dimasukkan ke dalam database OLAP.

armitage
sumber
1

Database relasional adalah iseng dalam arti yang sama bahwa komputer mikro adalah iseng.

Jeremy
sumber
1

Jawaban sederhana adalah tidak. RDBMS bukan mode. Ketika Anda membaca sesuatu di situs web untuk LinqPad, perlu diingat bahwa tujuan mereka adalah untuk menjual lisensi untuk produk mereka.

Tundey
sumber
Pertanyaannya adalah mengapa hal itu dianggap iseng, bukan apakah itu retorika promosi LinqPad. LinqPad standar gratis.
StuperUser
Pertanyaan itu datang dari dia membaca retorika promosi LinqPad. Hanya menunjukkan bahwa ia harus mengambil sebutir garam.
Tundey
Tidak bukan, itu berasal dari komentar maple_shaft di programmers.stackexchange.com/questions/89994/… . Copy LINQPad ini telah diambil dengan sejumput garam, tapi aku ingin tahu apakah devs setuju dengan baik pernyataan.
StuperUser
Yap, retorika promosi LinqPad adalah bahwa menulis SQL untuk menanyakan RDBMS adalah kuno, bukan RDBMS itu sendiri kuno. Mereka menjual cara yang lebih baik untuk menggunakan RDBMS, bukan alternatif bagi mereka.
Carson63000
@StuperUser dan Carson63000: Mengerti. Kesalahanku.
Tundey
0

Fad bukan kata yang tepat karena mereka telah lama hidup. Saya pikir Anda bisa mulai membuat argumen bahwa teknologinya sudah sangat tua dan mungkin saatnya untuk datang dengan hal berikutnya berikutnya - mungkin arsitektur NoSQL

bigtang
sumber
0

The Wiki Def. dari Fad , mendefinisikan istilah "mode" sebagai berikut: Sebuah mode adalah segala bentuk perilaku yang berkembang di antara populasi besar dan secara kolektif diikuti dengan antusiasme untuk beberapa periode, umumnya sebagai hasil dari perilaku yang dianggap sebagai novel dalam beberapa cara. Sebuah tren dikatakan "menangkap" ketika jumlah orang yang mengadopsinya mulai meningkat dengan cepat. Perilaku itu biasanya akan memudar dengan cepat begitu persepsi tentang kebaruan hilang.

Karena pengikut RDBMS tidak cepat pudar, dan tidak akan pergi dalam beberapa tahun mendatang (berkat tumpukan besar aplikasi produksi yang menggunakannya), kami tidak dapat mengatakan bahwa ini adalah sebuah tren. Sebenarnya konsep inti RDBMS tetap cukup stabil di mana begitu banyak teknologi lainnya berubah (dan masih berubah) secara dramatis.

Konsep RDBMS (dan kendaraan utamanya, SQL) mewakili langkah dalam teknologi yang, seperti banyak lainnya, dapat digantikan oleh yang lebih baik, itu saja.

Tidak mungkin
sumber