NoSql vs Database relasional

Jawaban:

123

Tidak semua data bersifat relasional. Untuk situasi itu, NoSQL dapat membantu.

Dengan itu, NoSQL singkatan dari "Not Only SQL". Itu tidak dimaksudkan untuk mengetuk SQL atau menggantikannya.

SQL memiliki beberapa keunggulan yang sangat besar:

  1. Dasar matematika yang kuat.
  2. Sintaks deklaratif.
  3. Bahasa yang terkenal di Structured Query Language (SQL).

Itu belum hilang.

Adalah suatu kesalahan untuk berpikir tentang ini sebagai argumen salah satu atau salah. NoSQL adalah alternatif yang perlu dipertimbangkan orang ketika cocok, itu saja.

Dokumen dapat disimpan dalam database non-relasional, seperti CouchDB.

Mungkin membaca ini akan membantu.

Duffymo
sumber
10
Bisakah Anda memberikan beberapa contoh data non-relasional?
user496949
7
Dokumen dan gambar dapat disimpan di dalam RDBMS juga seperti SQL Server dan Oracle? Lalu mengapa NoSQL?
user496949
2
Data semi-terstruktur adalah salah satu kelas tersebut. Ini berisi XML, Email, JSON, dll. Lihat halaman wikipedia di atasnya. Aturan umum adalah bahwa struktur ada di sana, tetapi secara longgar didefinisikan dan secara dinamis dapat diperpanjang (yang terakhir cenderung kelas dengan model relasional - dan meskipun bukan tidak mungkin untuk model, itu jelas rumit). Kelas lain adalah "data alami": A Novel, An Image, keduanya tanpa meta-data terlampir.
SAYA MEMBERIKAN JAWABAN CRAP
2
Anda tidak bisa melakukannya SELECT blob FROM images WHERE blob CONTAINS('red car'). Jadi, sementara Anda bisa menyimpan data mentah dalam database, Anda tidak bisa mencarinya tanpa melampirkan metadata. Modul pencarian teks lengkap dalam sistem RDBMS menjembatani beberapa kesenjangan semi-struktural.
SAYA MEMBERIKAN JAWABAN CRAP
1
@duffymo: Dokumen tidak "tidak berhubungan". Dokumen sering disimpan dalam DBMS SQL dan Anda tidak memerlukan DBOS NOSQL untuk itu. Bahkan database NOSQL sering menggunakan model data yang kurang umum dan lebih terbatas dalam aplikasi daripada model relasional. Misalnya basis data grafik. Jenis data yang disimpan tidak menjelaskan keunggulan NOSQL.
nvogel
98

Sejarahnya terlihat seperti ini:

  1. Google membutuhkan lapisan penyimpanan untuk indeks pencarian terbalik mereka. Mereka pikir RDBMS tradisional tidak akan memotongnya. Jadi mereka menerapkan penyimpanan data NoSQL, BigTable di atas sistem file GFS mereka. Bagian utama adalah bahwa ribuan mesin perangkat keras komoditas murah memberikan kecepatan dan redundansi.

  2. Semua orang menyadari apa yang baru saja dilakukan Google.

  3. Teorema CAP bir terbukti. Semua sistem penggunaan RDBMS adalah sistem CA. Orang-orang mulai bermain dengan sistem CP dan AP juga. Toko K / V jauh lebih sederhana, jadi mereka adalah kendaraan utama untuk penelitian.

  4. Sistem perangkat lunak sebagai layanan pada umumnya tidak menyediakan toko seperti SQL. Oleh karena itu, orang menjadi lebih tertarik pada toko tipe NoSQL.

Saya pikir banyak dari take-off dapat dikaitkan dengan sejarah ini. Scaling Google mengambil beberapa ide baru di Google dan semua orang mengikuti karena ini adalah satu-satunya solusi yang mereka tahu untuk masalah scaling sekarang. Oleh karena itu, Anda bersedia untuk mengerjakan ulang segala sesuatu di sekitar gagasan basis data terdistribusi Google karena itu adalah satu-satunya cara untuk skala di luar ukuran tertentu.

C - Konsistensi
A - Ketersediaan
P - Toleransi partisi
K / V - Kunci / Nilai

SAYA MEMBERIKAN JAWABAN KAMU
sumber
10
Apa itu CAP, CP, AP, K / V?
knownasilya
3
Lihat Teorema CAP di Wikipedia. CA dan CP berasal dari sana. K / V adalah kependekan dari Key / Value, pemetaan hingga (terdistribusi) dari kunci menjadi nilai.
SAYA MEMBERIKAN JAWABAN CRAP
" Semua orang menyadari apa yang baru saja dilakukan Google. " Lol. Sepertinya jawaban Skotlandia untuk saya (alias BUKAN CRAP).
ruffin
38

NoSQL lebih baik daripada RDBMS karena alasan / kelayakan NoSQL berikut

  1. Ini mendukung data semi-terstruktur dan data volatil
  2. Tidak memiliki skema
  3. Baca / Tulis throughput sangat tinggi
  4. Skalabilitas horisontal dapat dicapai dengan mudah
  5. Akan mendukung Bigdata dalam volume Terra Bytes & Peta Bytes
  6. Memberikan dukungan yang baik untuk alat Analitik di atas Bigdata
  7. Dapat di-host di mesin perangkat keras yang lebih murah
  8. Opsi cache dalam memori tersedia untuk meningkatkan kinerja kueri
  9. Siklus hidup pengembangan yang lebih cepat untuk pengembang

EDIT:

Untuk menjawab "mengapa RDBMS tidak dapat mengukur", silakan lihat RDBMS Overhead pdf yang ditulis oleh Stavros Harizopoulos, Daniel J. Abadi, Samuel Madden dan Michael Stonebraker

RDBMS memiliki tantangan dalam menangani volume data besar dari Terabytes & Peta byte . Bahkan jika Anda memiliki Redundant Array of Independent / Inexpensive Disks (RAID) & penghancuran data, itu tidak dapat diukur dengan baik untuk volume data yang besar. Anda memerlukan perangkat keras yang sangat mahal.

Logging : Merakit catatan log dan melacak semua perubahan dalam struktur basis data memperlambat kinerja. Pembalakan mungkin tidak diperlukan jika pemulihan bukan persyaratan atau jika pemulihan disediakan melalui cara lain (misalnya, situs lain di jaringan).

Penguncian : Penguncian dua fase tradisional menimbulkan overhead yang cukup besar karena semua akses ke struktur basis data diatur oleh entitas terpisah, Lock Manager.

Latching : Dalam database multi-threaded, banyak struktur data harus terkunci sebelum mereka dapat diakses. Menghapus fitur ini dan pergi ke pendekatan single-threaded memiliki dampak kinerja yang nyata.

Manajemen penyangga : Sistem basis data memori utama tidak perlu mengakses halaman melalui kumpulan buffer, menghilangkan tingkat tipuan pada setiap akses catatan.

Ini tidak berarti bahwa kita harus menggunakan NoSQL melalui SQL.

Namun, RDBMS lebih baik daripada NoSQL karena alasan / sifat RDBMS berikut

  1. Transaksi dengan properti ACID - Atomicity, Consistency, Isolasi & Durability
  2. Ketaatan pada Skema Kuat dari data yang ditulis / dibaca
  3. Manajemen permintaan waktu nyata (dalam hal ukuran data <10 Tera byte)
  4. Eksekusi kueri kompleks yang melibatkan join & grup berdasarkan klausa

Kita harus menggunakan RDBMS (SQL) dan NoSQL (Tidak hanya SQL) tergantung pada kasus & persyaratan bisnis

Ravindra babu
sumber
2
Perlu dicatat bahwa beberapa basis data NoSQL mendukung transaksi ACID.
Dave Cassel
15

NOSQL tidak memiliki keunggulan khusus atas model basis data relasional. NOSQL memang mengatasi keterbatasan tertentu dari SQL DBMS saat ini tetapi tidak menyiratkan kemampuan baru yang fundamental pada model data sebelumnya.

NOSQL berarti tidak hanya SQL (atau "tidak hanya SQL") tetapi itu tidak berarti sama dengan tidak ada relasional . Basis data relasional pada prinsipnya akan membuat solusi NOSQL yang sangat baik - hanya saja tidak satu pun rangkaian produk NOSQL saat ini menggunakan model relasional.

nvogel
sumber
4
Tampaknya pada Konferensi Strata O'Reilly baru-baru ini, Mark Madsen telah menciptakan interpretasi baru "NoSQL" dalam sejarahnya tentang basis data untuk menggantikan "Not Only SQL". Sekarang: "Tidak, SQL" ;-)
Lukas Eder
4

RDBMS lebih fokus pada hubungan dan NoSQL lebih fokus pada penyimpanan.

Anda dapat mempertimbangkan menggunakan NoSQL saat RDBMS Anda mencapai kemacetan. NoSQL membuat RDBMS lebih fleksibel.

suiwenfeng
sumber
4

Keuntungan terbesar dari NoSQL dibandingkan RDBMS adalah Skalabilitas .
Database NoSQL dapat dengan mudah ditingkatkan ke banyak node, tetapi untuk RDBMS sangat sulit.
Skalabilitas tidak hanya memberi Anda lebih banyak ruang penyimpanan tetapi juga kinerja yang jauh lebih tinggi karena banyak host bekerja pada saat bersamaan.

Jon
sumber
3

Jika Anda perlu memproses data dalam jumlah besar dengan kinerja tinggi

ATAU

Jika model data tidak ditentukan sebelumnya

kemudian

Basis data NoSQL adalah pilihan yang lebih baik.

Chris
sumber
2

Hanya menambah semua informasi yang diberikan di atas

Keuntungan NoSql:

1) NoSQL bagus jika Anda ingin produksi siap cepat karena dukungannya untuk arsitektur tanpa skema dan berorientasi objek.

2) NoSql db pada akhirnya konsisten yang dalam bahasa sederhana berarti mereka tidak akan memberikan kunci pada data (dokumen) seperti dalam kasus RDBMS dan apa artinya snapshot data terbaru selalu tersedia dan dengan demikian meningkatkan latensi aplikasi Anda .

3) Menggunakan strategi MVCC (Multi view concurrency control) untuk memelihara dan membuat snapshot data (dokumen).

4) Jika Anda ingin memiliki data yang diindeks Anda dapat membuat tampilan yang secara otomatis akan mengindeks data dengan definisi tampilan yang Anda berikan.

Kerugian NoSql:

1) Ini jelas tidak cocok untuk aplikasi transaksional besar dan berat karena pada akhirnya konsisten dan tidak mendukung properti ACID.

2) Juga membuat beberapa snapshot (revisi) data Anda (dokumen) karena menggunakan metodologi MVCC untuk kontrol concurrency, sebagai akibatnya ruang yang dikonsumsi lebih cepat daripada sebelumnya yang membuat pemadatan dan karenanya pengindeksan kembali lebih sering dan itu akan memperlambat Anda respons aplikasi ketika data dan transaksi dalam aplikasi Anda bertambah. Untuk mengatasinya, Anda dapat secara horizontal menskalakan node tetapi sekali lagi biayanya akan lebih tinggi dibandingkan database sql.

Manvendra Jina
sumber
1

Dari mongodb.com :

Database NoSQL berbeda dari yang lebih lama, teknologi relasional dalam empat bidang utama:

Model data : Basis data NoSQL memungkinkan Anda membangun aplikasi tanpa harus mendefinisikan skema terlebih dahulu, tidak seperti database relasional yang membuat Anda menentukan skema Anda sebelum Anda dapat menambahkan data ke sistem. Tidak ada skema yang telah ditentukan membuat basis data NoSQL jauh lebih mudah untuk diperbarui ketika data dan persyaratan Anda berubah.

Struktur data : Basis data relasional dibangun di era di mana data terstruktur secara adil dan didefinisikan dengan jelas oleh hubungan mereka. Database NoSQL dirancang untuk menangani data yang tidak terstruktur (misalnya, teks, posting media sosial, video, email) yang merupakan sebagian besar data yang ada saat ini.

Penskalaan : Jauh lebih murah untuk skala basis data NoSQL daripada basis data relasional karena Anda dapat menambah kapasitas dengan menskalakan server komoditas yang lebih murah. Database relasional, di sisi lain, memerlukan satu server untuk meng-host seluruh database Anda. Untuk skala, Anda perlu membeli server yang lebih besar, lebih mahal.

Model pengembangan : Basis data NoSQL adalah open source sedangkan basis data relasional biasanya merupakan sumber tertutup dengan biaya lisensi dimasukkan ke dalam penggunaan perangkat lunak mereka. Dengan NoSQL, Anda dapat memulai proyek tanpa investasi besar di biaya perangkat lunak di muka.

kolam kematian
sumber