it-swarm.asia

Apa perbedaan antara NoSQL dan RDBMS tradisional?

Apa perbedaan antara NoSQL dan RDBMS tradisional?

Selama beberapa bulan terakhir, NoSQL telah sering disebutkan dalam berita teknis. Apa fitur yang paling signifikan dibandingkan dengan RDBMS tradisional? Pada tingkat apa (fisik, logis) perbedaan terjadi?

Di mana tempat terbaik untuk menggunakan NoSQL? Mengapa?

71
Spredzy

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 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 sistem terdistribusi dapat dijelaskan oleh teorema CAP . Dari tiga properti yang paling banyak Anda miliki hanyalah dua:

  • [~ # ~] c [~ # ~] onsistensi
  • [~ # ~] a [~ # ~] ketersediaan
  • toleransi terhadap jaringan [~ # ~] p [~ # ~] artitioning

Amazon Dynamo menggunakan Konsistensi Akhirnya untuk mendapatkan ketiga properti. Makalah Dynamo: Toko Nilai-Kunci Amazon Sangat Tersedia layak dibaca ketika mempelajari tentang basis data 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 berbagai persyaratan. Misalnya. database grafik seperti Neo4j , mendokumentasikan database seperti CouchDB dan multimodel/objek database 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.

61
Jonas

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:

  • toko kunci/nilai
  • Basis data terinspirasikan Bigtable (berdasarkan pada makalah Google Bigtable)
  • Database yang terinspirasi Dynamo
  • database terdistribusi
  • mendokumentasikan basis data

Ini adalah pertanyaan besar, tetapi dijawab dengan cukup baik dalam ini Survei Database Terdistribusi .

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.

22

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 menskalakan 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 Broker 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.

12
mrdenny

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 volatile (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.

6
Johanna Larsson

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.

5
steve.lippert

Saya banyak bekerja pada MongoDB NoSQL Database dan Oracle.

Skema

Database SQL memiliki skema yang sudah 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

Pengambilan 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

0