NoSQL singkatan dari "Tidak hanya SQL" dan biasanya berarti bahwa database tersebut bukan database relasional, yang telah sangat populer selama beberapa dekade terakhir.
Alasan mengapa NoSQL telah begitu populer beberapa tahun terakhir ini terutama karena, ketika database relasional tumbuh dari satu server, itu tidak lagi mudah digunakan. Dengan kata lain, mereka tidak berkembang dengan baik dalam sistem terdistribusi. Semua situs besar yang Anda sebutkan Google, Yahoo, Facebook dan Amazon (saya tidak tahu banyak tentang Digg) memiliki banyak data dan menyimpan data dalam sistem terdistribusi karena beberapa alasan. Bisa jadi data tidak muat di satu server, atau ada persyaratan untuk ketersediaan tinggi .
Teorema CAP
Properti dari sistem terdistribusi dapat dijelaskan oleh teorema CAP . Dari tiga properti yang hanya dapat Anda miliki paling banyak dua:
- C onsistency
- Sebuah vailability
- toleransi terhadap artisiasi jaringan P.
Amazon Dynamo menggunakan Konsistensi Akhirnya untuk mendapatkan ketiga properti. Makalah Dynamo: Toko Key-value Amazon yang Sangat Tersedia layak dibaca ketika mempelajari tentang database NoSQL dan sistem terdistribusi. Amazon Dynamo memiliki properti A dan P.
Google mengambil pendekatan berbeda dengan BigTable , yang memiliki properti C dan A.
Database NoSQL lainnya
Seperti yang saya tulis di awal ada banyak jenis lain dari database NoSQL, yang dirancang untuk persyaratan yang berbeda. Misalnya basis data grafik seperti Neo4j , basis data dokumen seperti CouchDB dan basis data multimodel / objek seperti OrientDB .
Akhirnya saya ingin mengatakan bahwa basis data relasional akan tetap populer. Mereka sangat fleksibel dan dapat dipelihara. Tetapi mereka tidak selalu merupakan pilihan terbaik.
NoSQL adalah istilah yang sangat luas dan biasanya disebut sebagai makna "Bukan Hanya SQL." Istilah ini tidak disukai di komunitas non-RDBMS.
Anda akan menemukan bahwa basis data NoSQL memiliki beberapa karakteristik umum. Mereka dapat secara kasar dibagi menjadi beberapa kategori:
Ini adalah pertanyaan besar, tetapi dijawab dengan cukup baik dalam Survei Database Terdistribusi ini .
Untuk jawaban singkat:
Basis data NoSQL dapat membuang berbagai bagian ACID untuk mencapai manfaat tertentu lainnya - toleransi partisi, kinerja, untuk mendistribusikan beban, atau untuk menskalakan secara linier dengan penambahan perangkat keras baru.
Sejauh kapan menggunakannya - itu sepenuhnya tergantung pada kebutuhan aplikasi Anda.
sumber
NoSQL adalah jenis database yang tidak memiliki skema tetap seperti RDBMS tradisional. Dengan database NoSQL skema didefinisikan oleh pengembang saat run time. Mereka tidak menulis pernyataan SQL normal terhadap database, tetapi sebaliknya menggunakan API untuk mendapatkan data yang mereka butuhkan. Basis data NoSQL biasanya dapat menskala di server fisik yang berbeda dengan mudah tanpa perlu mengetahui server mana yang Anda cari.
Namun ada beberapa trade off untuk semua fleksibilitas ini: Basis data NoSQL adalah fitur yang cukup kurang dibandingkan dengan sistem RDBMS seperti SQL Server, Oracle, DB2, MySQL, dll. Tidak ada Pialang Layanan, Pencatatan transaksi, paket ETL, dll.
NoSQL bukan sesuatu yang baru. Sebenarnya sudah ada selama 50-60 tahun. Saat itu disebut COBOL. Gagasan yang persis sama, hanya kelompok yang berbeda muncul dengan itu.
sumber
Pada dasarnya mengeluarkan pengaturan relasional, dengan kunci primer dan asing, dan dengan overhead tambahan yang terlibat dalam menjaga keamanan transaksional, seringkali memberi Anda peningkatan kinerja yang ekstrem. Namun ini tidak unik untuk database baru / datastore, seperti misalnya MySQL telah disetel untuk tampil di "tingkat NoSQL" dengan melewati lapisan.
Singkatnya, Anda sering bisa mendapatkan kinerja yang mengesankan jika Anda setuju dengan risiko kemungkinan kehilangan data. Sebagian besar sistem NoSQL melakukan ini. Misalnya MongoDB melakukan perubahan data yang akan ditulis ketika itu nyaman. Data itu sendiri aman dan aman secara transaksi, tetapi disimpan dalam penyimpanan yang tidak menentu (memori). Jika Anda kehilangan daya, Anda tidak dapat 100% yakin bahwa Anda tidak kehilangan data, atau bahwa Anda tidak memiliki data yang rusak.
Ini merupakan trade off antara keamanan dan kinerja.
sumber
Tempat yang baik untuk memulai adalah entri Wikipedia . Sebaliknya, pada dasarnya menghubungkan data dalam satu tabel dengan yang lain Anda menyimpan sesuatu sebagai pasangan nilai kunci dan tidak ada skema basis data, melainkan ditangani dalam kode.
Beberapa situs menggunakan NoSQL dan server RDBMS khas secara bersamaan, tetapi untuk menyimpan data yang berbeda. Jadi, Anda tidak harus memilih satu atau yang lain.
sumber
Saya telah banyak bekerja pada MongoDB NoSQL Database dan Oracle.
Skema
Database SQL memiliki skema yang telah ditentukan sebelumnya untuk menyimpan data terstruktur.
Dalam database NoSQL, tidak ada skema yang telah ditentukan, di sini skema adalah elemen yang paling dinamis berdasarkan pada elemen data.
Skalabilitas
Database SQL secara vertikal scalable, yang berarti jika kita ingin skala basis data SQL, kita perlu memberikan dorongan perangkat keras di mana Sistem DBMS diinstal. Di sinilah kadang-kadang berlaku untuk pembatasan skalabilitas.
Basis data NoSQL adalah skalabel horizontal, artinya jika kita ingin skala, kita perlu menambahkan lebih banyak node dan membuat jaringan distribusi berdasarkan kebutuhan kita sendiri dan daya yang dibutuhkan. Ini adalah cara mereka mengurangi beban pada basis data
Penerimaan data
Dalam database berbasis SQL, untuk mendefinisikan dan memanipulasi data kita dapat menggunakan SQL (Structured Query Language), yang sangat kuat saat ini.
Dalam hal basis data NoSQL, kueri fokus pada pengumpulan dan dokumen. Terkadang disebut UnQL (Unstructured Query Language). Ini masih dalam tahap evolusi, sehingga bervariasi dari vendor ke vendor dari database NoSQL.
Untuk lebih lanjut tentang perbedaan utama, blog saya: Perbedaan antara database SQL dan NoSQL
sumber