Database Dokumen versus Database Relasional: bagaimana cara memilih?

16

Saya seorang pria SQL, tapi saya tahu tidak hanya ada database SQL - sebagian besar dokumen-database. Seperti kebanyakan teknologi ada pro dan kontra untuk setiap teknologi.

Saya sudah membaca beberapa artikel, tetapi terlalu berteori. Yang saya inginkan adalah dua kasus nyata:

  1. ketika peralihan dari basis data relasional ke dokumen memberikan peningkatan
  2. ketika peralihan dari dokumen ke basis data relasional memberikan peningkatan

Peningkatan menjadi segala sesuatu yang membuat program lebih baik - kurang waktu pengembangan, skalabilitas, kinerja, apa pun yang terkait pemrograman. Ada peringatan untuk 2.: cerita seperti "kembali ke database relasional karena semua orang tahu SQL" tidak baik

Johan Buret
sumber
8
Pendekatan yang salah. Ini bukan tentang "kinerja" atau "skalabilitas". Ini tentang model mana yang cocok dengan masalah yang Anda coba selesaikan. Anda mungkin ingin memperbarui pertanyaan Anda untuk memungkinkan gagasan bahwa mungkin basis data relasional tidak cocok untuk berbagai jenis masalah.
S.Lott
2
@ S.Lott, pilihannya sering kali salah satu dari kinerja. pertimbangkan bahwa setiap DB relasional dapat digunakan sebagai dokumen DB sederhana - hanya kinerja yang akan menjadi ciri pembeda.
edA-qa mort-ora-y
Saya telah menulis ulang pertanyaan saya sehingga tidak dimuat dengan cara apa pun.
Johan Buret
2
@ edA-qa mort-ora-y: "DB relasional dapat digunakan sebagai dokumen DB sederhana". Itu pasti salah atau orang-orang tidak akan menemukan alternatif. "Hanya kinerja yang akan menjadi ciri pembeda". Hanya benar jika Anda menganggap bahwa model relasional melakukan semuanya dengan baik. Jika itu melakukan segalanya, tidak akan ada alternatif. Namun. Kami punya alternatif. Ada banyak masalah (seperti hierarki) yang tidak cocok dengan model relasional dengan baik , dan memerlukan trik pintar. Atau model data alternatif.
S.Lott
"baca beberapa artikel"? Harap berikan beberapa tautan atau judul atau referensi atau kutipan. Kami tidak tahu apa artinya "terlalu teoretis" bagi Anda.
S.Lott

Jawaban:

15

Alasan utama untuk memilih database NoSQL beberapa tahun terakhir adalah Ketersediaan . Untuk perusahaan seperti Amazon, Google dan Facebook, satu jam downtime atau lebih tidak dapat diterima. Untuk mencapai ketersediaan tinggi Anda perlu mengurangi satu-titik-kegagalan, itu berarti Anda harus menggunakan sistem terdistribusi dengan banyak komputer jika komputer crash, layanan masih tersedia.

Basis data Traditional Relatione tidak terlalu bagus dalam pengaturan multi-master terdistribusi. Itu sebabnya NoSQL sangat populer belakangan ini. Jadi, jika Anda membutuhkan ketersediaan tinggi, Anda dapat memilih basis data NoSQL seperti Riak, Cassandra, HBase, S3 atau BigTable.

Ada posting blog yang bagus tentang Amazon Dynamo yang merupakan pengantar yang bagus untuk mendistribusikan database NoSQL.

Sekarang, istilah NoSQL sangat luas sehingga ada banyak basis data NoSQL yang tidak didistribusikan. Tetapi mereka memecahkan masalah lain. Misalnya Neo4j - basis data grafik bagus untuk jenis pertanyaan yang tidak dioptimalkan untuk RDBMS tradisional. Atau seperti dalam kasus Anda basis data dokumen, di mana Anda tidak perlu mengubah skema jika Anda ingin menambahkan beberapa bidang untuk beberapa dokumen. Dengan kata lain, database dokumen bagus ketika sebagian besar posting (dokumen) memiliki bidang yang berbeda sehingga tabel relasional dengan kolom yang telah ditentukan tidak dapat digunakan.

Namun, sebagian besar basis data NoSQL tidak sefleksibel basis data RDBMS tradisional, jadi ini adalah pilihan yang baik untuk menggunakan basis data RDBMS tradisional hingga tidak dapat menyelesaikan masalah Anda lagi.

Jonas
sumber
+1, Setuju, fleksibilitas adalah harga yang harus dibayar jika Anda tidak perlu.
maple_shaft
12

Saya memiliki pendekatan sederhana untuk menentukan database yang paling cocok dengan data.

Saya hanya bertanya pada diri sendiri: Dengan asumsi saya tidak memiliki database, apakah saya lebih suka menyimpan sebagian besar dan data penting sebagai dokumen atau apakah saya akan menyimpannya dalam spreadsheet.

Ketika jawabannya adalah "Spreadsheet", ini adalah tanda yang jelas bahwa model relasional dan RDBMS tradisional paling sesuai dengan tugas sebagian besar waktu. Jika data benar-benar sederhana, seperti hanya pasangan nilai kunci atau tabel sederhana dan integritas referensial bukan topik, maka database NoSQL mungkin paling cocok untuk tugas dan mungkin meningkatkan kinerja cukup banyak!

Juga, ketika Anda tidak dapat menemukan struktur yang sama sekali, database NoSQL paling cocok untuk tugas tersebut.

Ketika data lebih seperti dokumen, misalnya data tekstual terstruktur hierarkis tanpa hubungan yang jelas, maka saya segera memikirkan XML-Database, yang dengan mudah memungkinkan Anda menyimpan dokumen terstruktur hierarkis. Namun, terkadang lebih baik menggunakan perangkat lunak manajemen dokumen.

Jadi, untuk memberikan jawaban yang konkret dan sederhana untuk kedua pertanyaan Anda: Itu tergantung pada data.

ketika peralihan dari basis data relasional ke dokumen memberikan peningkatan

Ketika Anda perlu mempertahankan data tekstual terstruktur secara hierarkis, Xml-Database dapat menjadi peningkatan besar dalam hal rawatan dan mungkin juga skalabilitas.

ketika peralihan dari dokumen ke basis data relasional memberikan peningkatan

Misalnya, ketika data sebagian besar dalam bentuk seperti tabel dengan hubungan yang jelas dan Anda perlu menjamin integritas.

Elang
sumber
2
+1 untuk analogi spreadsheet vs dokumen - bantuan besar - terima kasih.
HDave
10

Kami harus menyerah pada model relasional karena data yang kami dapatkan tidak memiliki skema statis yang sederhana, jelas, tetap.

Pengguna - dan kisah pengguna - tidak memiliki skema statis yang diperbaiki.

Kami mencoba untuk memaksakan skema RDBMS yang tetap, statis, tetapi itu adalah kesalahan.

Setiap pengiriman data pihak ketiga (dari pelanggan dan dari vendor) adalah serupa, tetapi tidak identik. Kami mencoba memetakannya ke skema relasional tetap, tetapi variabilitasnya terlalu besar. Kami juga harus menambahkan bidang dengan setiap file (beberapa setiap minggu) atau kami harus menjauh dari skema relasional statis yang diperbaiki.

Jika kami melihat setiap catatan sebagai "dokumen" dengan subset elemen yang sama dan koleksi elemen data tambahan yang unik (serta tidak terdefinisi), kami jauh lebih bahagia.

Kumpulan elemen data yang tidak jelas adalah apa yang sebenarnya dibutuhkan oleh pengguna untuk kasus penggunaannya.

Skema statis yang diperbaiki dari model relasional tidak sesuai dengan kasus penggunaan kami.

S.Lott
sumber
Saya telah melihat proyek-proyek lain gagal memenuhi persyaratan karena persis persyaratan yang telah Anda jelaskan. Inilah tujuan dari database dokumen.
maple_shaft