Baru-baru ini saya ditanya:
Mengapa NoSQL lebih cepat dari SQL?
Saya tidak setuju dengan premis dari pertanyaan ... itu hanya omong kosong bagi saya pribadi. Saya tidak bisa melihat peningkatan kinerja dengan menggunakan NoSQL, bukan SQL. Mungkin SQL lebih dari NoSQL, ya tapi tidak dengan cara itu.
Apakah saya kehilangan sesuatu tentang NoSQL?
performance
nosql
cnd
sumber
sumber
Jawaban:
Ada banyak solusi NoSQL, masing-masing dengan kekuatan dan kelemahannya sendiri, jadi yang berikut harus diambil dengan sebutir garam.
Tetapi pada dasarnya, apa yang dilakukan oleh banyak basis data NoSQL adalah mengandalkan proses denormalisasi dan mencoba mengoptimalkan untuk kasus yang dinormalisasi. Misalnya, Anda membaca posting blog bersama dengan komentarnya dalam database berorientasi dokumen. Seringkali, komentar akan disimpan bersama dengan pos itu sendiri. Ini berarti bahwa akan lebih cepat untuk mengambil semuanya bersama-sama, karena mereka disimpan di tempat yang sama dan Anda tidak harus melakukan join.
Tentu saja, Anda dapat melakukan hal yang sama dalam SQL, dan denormalisasi adalah praktik yang umum ketika seseorang membutuhkan kinerja. Hanya saja banyak solusi NoSQL yang direkayasa sejak awal untuk selalu digunakan dengan cara ini. Anda kemudian mendapatkan tradeoffs biasa: misalnya, menambahkan komentar pada contoh di atas akan lebih lambat karena Anda harus menyimpan seluruh dokumen dengan itu. Dan begitu Anda telah mendenormalisasi, Anda harus menjaga integritas data dalam aplikasi Anda.
Selain itu, dalam banyak solusi NoSQL, tidak mungkin untuk melakukan penggabungan sewenang-wenang, karena itu permintaan sewenang-wenang. Beberapa database, seperti CouchDB, mengharuskan Anda untuk memikirkan terlebih dahulu pertanyaan yang Anda perlukan dan menyiapkannya di dalam DB.
Semua dalam semua, itu bermuara pada mengharapkan skema denormalized dan mengoptimalkan membaca untuk situasi itu, dan ini bekerja dengan baik untuk data yang tidak sangat relasional dan yang membutuhkan lebih banyak membaca daripada menulis.
sumber
Hal yang Anda lewatkan tentang NoSQL adalah bahwa NoSQl tidak dapat dibandingkan dengan SQL dengan cara apa pun. NoSQL adalah nama dari semua teknologi persistensi yang bukan SQL. DB dokumen, DB nilai kunci, DB acara semuanya adalah NoSQL. Mereka semua berbeda di hampir semua aspek, baik itu struktur data yang disimpan, permintaan, kinerja dan alat yang tersedia.
Jadi, jika seseorang mengajukan pertanyaan seperti itu pada Anda saat wawancara, ini harus menjadi jawabannya.
sumber
Basis data 'NoSQL' (atau lebih tepatnya: non-relasional) melepaskan beberapa fitur dari basis data tradisional untuk kecepatan, tetapi yang lebih penting untuk skalabilitas horizontal.
Fitur yang hilang tergantung pada produk beton, secara umum sifat ACID penuh atau bahkan operasi gabungan tidak didukung. Itulah harga untuk peningkatan kinerja.
sumber
Anda benar, tidak masuk akal untuk menyatakannya dalam pernyataan selimut. Yang mungkin intinya; alih-alih jawaban tunggal, pewawancara mungkin mengharapkan Anda untuk menjawab dengan pertanyaan untuk membantu Anda mengetahui apa konteks masalahnya (data seperti apa, berapa banyak, di lingkungan operasi apa dll), solusi NoSQL tertentu . Mereka akan mencoba mencari tahu bagaimana Anda menganalisis masalah dan sepanjang jalan mendapatkan ide seberapa banyak Anda tahu tentang berbagai solusi yang ada di luar sana.
sumber
Database NoSQL biasanya hanya masuk akal jika Anda mendesain data Anda di sekitarnya.
Jika Anda hanya ingin menggunakannya sebagai pengganti RDBMS, maka Anda mungkin mendapatkan kinerja yang lebih sedikit daripada lebih banyak, terutama jika Anda tidak memiliki anggaran yang cukup untuk membayar server dengan jumlah RAM yang tinggi.
Lihatlah artikel ini yang membandingkan penggunaan ruang disk MySQL dengan MongoDB: http://blog.trackerbird.com/content/mysql-vs-mongodb-disk-space-usage
sumber
Basis data NoSQL yang mana? Database SQL yang mana? Jika seseorang memberi tahu Anda bahwa NoSQL lebih cepat dari SQL, maka Anda harus pergi. Atau lebih baik lagi tonton video ini:
http://www.youtube.com/watch?v=b2F-DItXtZs
Saya tidak akan mengatakan setengah hal yang diklaim tentang NoSQL salah, tetapi saya akan mengatakan bahwa ada banyak fanboyisme NoSQL di luar sana dari orang-orang yang benar-benar tidak memahaminya dengan baik.
SQL memiliki batasnya (tentu saja) tetapi juga merupakan teknologi yang sangat matang, yang dipahami dengan baik, dan memiliki banyak pengembang yang memahami cara menggunakannya dengan baik. Saya tidak bisa mengatakan hal yang sama untuk semua bentuk NoSQL.
sumber
NoSql didukung oleh database berorientasi kolom di mana RDBMS adalah database berorientasi baris ... Dan katakan misalnya kita memiliki tabel Karyawan dengan Nama, Usia, Salery, Alamat, EmployeeId dll ... kita meletakkan tabel yang sama di MySql (dukungan RDBMS) dan HBase (Dukungan NoSQL). Jika pelanggan / klien menulis kueri untuk mendapatkan rincian Usia atau Salery rata-rata dari catatan karyawan 1Lakh ... apa yang terjadi?
Dalam RDBMS akan mengelilingi setiap baris dan mengumpulkan nilai dan menjumlahkan & membagi untuk hasil. Ketika datang ke database Columnar tidak perlu khawatir tentang semua iterasi baris lakh. Tetapi berurusan dengan hanya satu Baris yang lebih cepat untuk dihitung. Jadi cara ini kadang-kadang NoSQL lebih cepat dari SQL. Kasus ini NoSQL tidak peduli dengan keluhan ACID yang layak!
sumber
Lupakan teori di sekitar basis data .... intinya setelah Anda memahami pertanyaan Anda, Anda dapat menyimpan data dalam basis data nosql dengan cara yang tepat di mana mereka sebenarnya digunakan dalam aplikasi Anda ....
Misalnya, ambil contoh ini, Anda memiliki model pelanggan dengan banyak pesanan dan banyak item yang terkait dengan setiap pesanan, maka mereka juga memiliki banyak item tersimpan untuk pembelian selanjutnya ... jika Anda adalah toko e-niaga besar dengan katakanlah 10 juta pelanggan dan 50 juta pesanan. Dan pelanggan itu masuk ke dasbor mereka yang menampilkan data yang tepat ini, berapa banyak pekerjaan yang harus dilakukan oleh database sql untuk menemukan pelanggan, bergabung dengan pesanan dan setiap item baris dan item yang disimpan. Dalam database sql, semua data ini mungkin perlu digabungkan dengan beberapa cara ... atau Anda dapat membuat koleksi dalam database Anda yang disebut usercache dan menyimpan data ini persis seperti yang Anda gunakan dalam kehidupan nyata. Jadi ini benar-benar bisa menjadi satu permintaan pada satu bidang [id] untuk mendapatkan semua data ini kembali. Selain itu, database nosql tidak
Jadi bisakah sql db meminta bidang ID tunggal secepat jika tidak lebih cepat dari nosql? Ya tapi bisakah database sql mengembalikan semua data yang Anda butuhkan dengan menanyakan satu tabel dan satu bidang? Tidak, kecuali jika Anda melakukan sesuatu seperti menyimpan data di Json di dalam bidang teks besar. Tetapi sekarang data tersebut tidak dapat digunakan untuk potensi penggunaan di masa depan.
sumber