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:
- ketika peralihan dari basis data relasional ke dokumen memberikan peningkatan
- 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
nosql
relational-database
Johan Buret
sumber
sumber
Jawaban:
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.
sumber
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 Anda perlu mempertahankan data tekstual terstruktur secara hierarkis, Xml-Database dapat menjadi peningkatan besar dalam hal rawatan dan mungkin juga skalabilitas.
Misalnya, ketika data sebagian besar dalam bentuk seperti tabel dengan hubungan yang jelas dan Anda perlu menjamin integritas.
sumber
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.
sumber