Mengapa basis data relasional tidak memenuhi skala Big Data?

17

Sering diulang bahwa masalah Big Data adalah bahwa database relasional tidak dapat skala untuk memproses volume besar data yang sekarang sedang dibuat.

Tapi apa batasan skalabilitas yang tidak terikat oleh solusi Big Data seperti Hadoop? Mengapa Oracle RAC atau MySQL sharding atau MPP RDBMS seperti Teradata (dll) tidak dapat mencapai hal ini?

Saya tertarik pada batasan teknis - Saya sadar bahwa biaya finansial pengelompokan RDBMS dapat menjadi penghalang.

Jeremy Beard
sumber

Jawaban:

15

MS baru saja berbicara teknologi di Belanda di mana mereka membahas beberapa hal ini. Dimulai perlahan, tetapi masuk ke daging Hadoop sekitar 20 menit.

Intinya adalah bahwa "itu tergantung". Jika Anda memiliki pengaturan yang masuk akal, (setidaknya agak) mudah mempartisi set data yang (setidaknya agak) homogen, itu harus cukup mudah untuk skala ke volume data tinggi dengan RDBMS, tergantung pada apa yang Anda lakukan .

Hadoop dan MR tampaknya lebih diarahkan pada situasi di mana Anda dipaksa untuk memindai data terdistribusi besar, terutama ketika data tersebut tidak selalu homogen atau terstruktur seperti yang kami temukan di dunia RDBMS.

Batasan apa yang tidak terikat dengan solusi Big Data? Bagi saya, batasan terbesar yang mereka tidak terikat adalah harus membuat skema yang kaku sebelumnya. Dengan solusi Big Data, Anda memasukkan sejumlah besar data ke dalam "kotak" sekarang, dan menambahkan logika ke pertanyaan Anda nanti untuk menangani kurangnya homogenitas data. Dari sudut pandang pengembang, tradeoff adalah kemudahan implementasi dan fleksibilitas di ujung depan proyek, dibandingkan kompleksitas dalam kueri dan konsistensi data yang kurang langsung.

Dave Markle
sumber
Terima kasih Dave, Anda membuat saya lebih dekat dengan apa yang saya coba cari tahu. Anda mengatakan Hadoop diarahkan untuk situasi dengan pindaian terdistribusi besar - jika beberapa / banyak RDBMS 'memiliki solusi berkerumun (RAC, pecahan, MPP, dll), mengapa mereka tidak dapat melakukan itu juga? Apa yang membuatnya tidak mungkin bagi RDBMS untuk menyortir 10 triliun catatan dalam 16 jam seperti sebuah cluster Hadoop yang sangat besar? lihat di sini
Jeremy Beard
2
Tidak ada yang membuatnya tidak layak untuk cluster RDBMS untuk melakukan pekerjaan semacam ini, dan Anda dapat mengonfigurasi RDBMS untuk meningkatkan skala untuk melakukan hal semacam ini. Masalah dengan RDBMS adalah bahwa untuk melakukan ini, Anda harus benar-benar berhati-hati tentang bagaimana Anda menyusun skema dan partisi Anda agar bisa berfungsi. Arsitektur Big Data menang ketika data Anda tidak cukup terstruktur untuk dipartisi dan dioptimalkan dengan mudah atau efektif dalam RDBMS.
Dave Markle
1
Desainer db yang tidak kompeten menyulitkan basis data relasional. Terlalu banyak perusahaan yang berpikir bahwa pengembang aplikasi dapat mendesain database (atau lebih buruk menggunakan ORMS untuk melakukan desain) ketika mereka perlu mempekerjakan pengembang database yang kompeten sejak awal. Orang kedua yang Anda pekerjakan untuk proyek yang melibatkan data harus menjadi pengembang basis data.
HLGEM
3
@HLGEM: Tanggapan saya untuk ini adalah, "meh". Pengembang yang paling efektif adalah mereka yang memahami kedua sisi tumpukan - gagasan bahwa ada "pengembang aplikasi" yang baik yang bekerja dengan RDBMS sepanjang waktu tanpa mengetahui cara kerjanya adalah kekeliruan. . Demikian juga, gagasan bahwa ada yang namanya "pengembang basis data" yang baik yang tidak memahami ORM atau sisi penerapannya juga, IMO, salah.
Dave Markle
6

Perintis dan peneliti basis data Michael Stonebraker ikut menulis makalah yang membahas keterbatasan arsitektur basis data tradisional. Secara umum, mereka ditingkatkan dengan perangkat keras yang lebih mahal, tetapi mengalami kesulitan meningkatkan dengan perangkat keras komoditas yang lebih banyak secara paralel, dan dibatasi oleh arsitektur perangkat lunak lama yang dirancang untuk era yang lebih tua. Dia berpendapat bahwa era BigData membutuhkan beberapa arsitektur basis data baru yang memanfaatkan infrastruktur modern dan mengoptimalkan untuk beban kerja tertentu. Contohnya adalah proyek C-store, yang mengarah ke database komersial Vertica Systems, dan proyek H-store yang mengarah ke VoltDB, database SQL OLTP dalam-memori yang dirancang untuk beban kerja BigData berkecepatan tinggi. (Pengungkapan penuh, saya bekerja untuk VoltDB).

Anda mungkin menemukan webinar ini menarik pada topik ini. Ini menanggapi beberapa mitos yang muncul dengan keberhasilan database NoSQL. Pada dasarnya, ia berpendapat bahwa SQL bukan masalah, tidak perlu menyerah fitur database tradisional seperti konsistensi untuk mendapatkan kinerja.

BenjaminBallard
sumber
6
Agar memenuhi syarat sebagai pengungkapan penuh, Anda mungkin juga harus menyebutkan bahwa co-founder Anda dan CTO Michael Stonebraker juga adalah co-arsitek dari semua contoh Anda. Dan dukungan SQL VoltDB adalah bagian kecil yang memalukan .
Daniel Lyons
5

Tidak sepenuhnya benar bahwa RDBMS tidak dapat mengukur. Namun, kebenaran parsial dalam pernyataan itu tergantung pada arsitektur. Dalam daftar yang Anda berikan, Oracle RAC berbeda dari yang lain (MySQL Sharded dan Teradata). Perbedaan utama adalah arsitektur disk bersama vs apa-apa.

Arsitektur disk bersama seperti Oracle RAC mengalami penskalaan karena pada titik tertentu semua mesin yang berjalan harus melakukan sinkronisasi pada beberapa bagian data. Untuk mis global palungan kunci adalah pembunuh. Anda dapat terus menyesuaikannya sampai batas tertentu, tetapi pada akhirnya Anda akan menabrak dinding. Jika Anda tidak dapat dengan mudah menambahkan mesin, Anda harus memiliki lebih sedikit tetapi mesin yang sangat kuat yang dapat membakar saku Anda. Dalam hal arsitektur apa-apa yang dibagikan (atau data yang dibagikan), setiap mesin memiliki kepemilikan atas beberapa data. Itu tidak perlu disinkronkan dengan mahcines lain jika ingin memperbarui beberapa data.

Kemudian muncul jenis database NoSQL. Saya akan memperlakukan mereka sebagai bagian dari basis data RDBMS tradisional. Tidak semua aplikasi di dunia ini membutuhkan semua fungsionalitas yang ditawarkan oleh RDBMS. Jika saya ingin menggunakan database sebagai cache, saya tidak akan peduli tentang daya tahan. Mungkin dalam beberapa kasus saya juga tidak akan peduli dengan konsistensi. Jika semua pencarian data saya didasarkan pada kunci, saya tidak perlu dukungan untuk kueri rentang. Saya mungkin tidak perlu indeks sekunder. Saya tidak memerlukan seluruh pemrosesan kueri / optimisasi lapisan yang dimiliki semua database tradisional.

sunil
sumber