Daftar Isi:
- Struktur ini menggambarkan bagaimana tabel saling berhubungan. Baris Pesanan tunggal mungkin berhubungan dengan banyak baris Alamat Pengiriman, namun masing-masing alamat Pengiriman Address juga berhubungan dengan beberapa baris Order. Ini adalah
- Menyimpan data di beberapa mesin dan membiarkannya dipertanyakan sulit dilakukan. Anda harus mengirim query ke semua server dan menunggu jawaban. Mudah-mudahan, Anda menyiapkan mesin sehingga cukup cepat untuk saling berbicara untuk menangani kueri terdistribusi!
Video: Introducing ML Kit 2024
Buku dan blog NoSQL menawarkan pendapat berbeda tentang basis data NoSQL. Empat fitur inti dari NoSQL, yang ditunjukkan dalam daftar berikut, berlaku untuk kebanyakan database NoSQL. Daftar ini membandingkan NoSQL dengan DBMS relasional tradisional: Skema database agnostik: Skrip database adalah deskripsi semua data dan struktur data yang mungkin dalam basis data relasional. Dengan database NoSQL, skema tidak diperlukan, memberi Anda kebebasan untuk menyimpan informasi tanpa melakukan desain skema di muka.
-
-
Perangkat keras komoditi: Beberapa database dirancang untuk beroperasi dengan baik (atau hanya) dengan perangkat penyimpanan dan pemrosesan khusus. Dengan database NoSQL, server off-the-shelf murah dapat digunakan. Menambahkan lebih dari server murah ini memungkinkan database NoSQL berskala untuk menangani lebih banyak data.
-
-
Skema agnostik Database NoSQL adalah skema agnostik. Anda tidak diharuskan untuk melakukan banyak pekerjaan desain di muka sebelum Anda dapat menyimpan data di database NoSQL. Anda bisa mulai coding dan menyimpan dan mengambil data tanpa mengetahui bagaimana database menyimpan dan bekerja secara internal. (Jika dan bila Anda memerlukan fungsionalitas lanjutan, Anda dapat menambahkan indeks atau men-tweak struktur penyimpanan data secara manual.) Skema agnostisisme mungkin adalah perbedaan paling signifikan antara database NoSQL dan relasional.
Manfaat besar untuk database agnostik skema adalah waktu pengembangan dipersingkat. Manfaat ini meningkat saat Anda melewati beberapa rilis pengembangan dan perlu mengubah struktur data internal di database.
Misalnya, dalam RDBMS tradisional, Anda menjalani proses perancangan ulang skema. Skema menginstruksikan database tentang data yang diharapkan. Ubah data yang tersimpan, atau strukturnya, dan Anda harus membangun kembali database menggunakan skema yang dimodifikasi. Jika Anda membuat perubahan, Anda harus meluangkan banyak waktu untuk menentukan bagaimana mengembalikan arsitek data yang ada. Dalam database NoSQL, Anda cukup menyimpan struktur data yang berbeda. Tidak perlu memberi tahu database sebelumnya.Anda mungkin harus mengubah kueri Anda sesuai dengan itu, mungkin menambahkan indeks spesifik
yang sesekali
(seperti indeks rentang bilangan bulat untuk memungkinkan kueri spesifik dari kueri yang lebih kecil dan lebih tinggi), namun keseluruhan prosesnya jauh lebih menyakitkan daripada dengan RDBMS. RDBMS lepas landas karena fleksibilitasnya dan karena, dengan menggunakan SQL, mempercepat pengubahan query. Database NoSQL memberikan fleksibilitas ini untuk mengubah skema dan kueri, yang merupakan salah satu alasan utama mengapa mereka akan semakin diadopsi dari waktu ke waktu. Bahkan pada pertanyaan, Anda mungkin tidak perlu terlalu khawatir untuk mengetahui perubahan skema - pertimbangkan indeks di atas nomor rekening lapangan, di mana
nomor rekening
dapat ditemukan di manapun dalam dokumen yang disimpan di sebuah database NoSQL Anda dapat mengubah struktur dan relokasi tempat nomor rekening disimpan, dan jika elemen tersebut memiliki nama yang sama di tempat lain dalam dokumen, dokumen ini masih tersedia untuk kueri tanpa perubahan pada mekanisme kueri Anda. Perhatikan bahwa tidak semua database NoSQL sepenuhnya skema agnostik. Beberapa, seperti HBase, mengharuskan Anda untuk menghentikan database untuk mengubah definisi kolom. Mereka masih dianggap database NoSQL karena tidak semua bidang yang didefinisikan (kolom dalam kasus ini) harus diketahui sebelumnya untuk setiap record - hanya kolom keluarga. RDBMS mengizinkan bidang individu dalam catatan diidentifikasi sebagai nilai
null
. Masalah dengan RDBMS adalah bahwa ukuran data dan kinerja tersimpan terpengaruh secara negatif saat penyimpanan dicadangkan untuk nilai null jika rekaman mungkin terjadi di masa mendatang memiliki nilai di kolom itu. Di Cassandra, Anda tidak menyediakan data kolom itu, yang memecahkan masalah. Nonrelational Sistem manajemen basis data relasional telah menjadi cara dominan untuk menyimpan data aplikasi selama lebih dari 20 tahun. Banyak karya matematis yang dilakukan untuk membuktikan teori yang mendasari mereka.
Struktur ini menggambarkan bagaimana tabel saling berhubungan. Baris Pesanan tunggal mungkin berhubungan dengan banyak baris Alamat Pengiriman, namun masing-masing alamat Pengiriman Address juga berhubungan dengan beberapa baris Order. Ini adalah
banyak
- sampai - banyak hubungan . Database NoSQL tidak memiliki konsep hubungan antara catatan mereka. Mereka malah denormalize data. Ini berarti bahwa dalam database NoSQL akan memiliki struktur Order dengan Alamat Pengiriman yang disematkan. Ini berarti alamat pengiriman diduplikasi di setiap baris Order yang menggunakannya. Pendekatan ini memiliki keuntungan karena tidak memerlukan waktu query yang kompleks bergabung di beberapa struktur data (tabel) sekalipun. Database NoSQL tidak menyimpan informasi tentang bagaimana catatan individu berhubungan dengan catatan lain dalam database, yang mungkin terdengar seperti pembatasan. Namun, database NoSQL lebih fleksibel dalam hal struktur data yang dapat Anda simpan.
Pertimbangkan pesanan dari pengecer online. Perintah tersebut bisa mencakup kode produk, jumlah, harga barang, dan uraian item, serta informasi tentang pemesanan orang, seperti alamat pengiriman dan informasi pembayaran.
Daripada memasukkan sepuluh baris dalam berbagai tabel dalam basis data relasional, Anda dapat menyimpan satu struktur untuk semua informasi pesanan ini - misalnya, sebagai dokumen JSON atau XML.
Dalam teori database relasional, tujuannya adalah untuk
menormalkan
data Anda (yaitu mengatur kolom dan tabel untuk menghapus data duplikat). Di database NoSQL - terutama basis data Dokumen atau Agregat - Anda sering dengan sengaja menentukan data, menyimpan beberapa data beberapa kali. Anda dapat menyimpan, misalnya, "Alamat Pengiriman Pelanggan" berkali-kali di banyak pesanan yang dibuat oleh pelanggan dari waktu ke waktu, daripada menyimpannya sekali dan merujuknya dalam beberapa pesanan. Melakukan hal itu membutuhkan ruang penyimpanan ekstra, dan sedikit pemikiran dalam mengelola aplikasi Anda. Jadi mengapa melakukannya? Ada dua keuntungan untuk menyimpan data beberapa kali:
Penyimpanan dan pengambilan yang mudah:
Simpan saja dan dapatkan satu catatan.
-
Kecepatan kueri: Di basis data relasional, Anda bergabung dengan informasi dan menambahkan batasan di tabel pada waktu kueri. Ini mungkin memerlukan mesin database untuk mengevaluasi banyak tabel. Semakin banyak kendala kueri yang Anda miliki pada tabel yang berbeda, semakin Anda mengurangi kecepatan kueri Anda. (Inilah sebabnya mengapa RDBMS memiliki pandangan yang dapat dihitung sebelumnya.) Dalam database NoSQL, semua informasi yang Anda butuhkan untuk mengevaluasi kueri Anda ada dalam satu dokumen. Karena itu, Anda bisa dengan cepat menentukan daftar dokumen yang cocok.
-
Pandangan relasional dan denormalizations NoSQL adalah pendekatan yang berbeda terhadap masalah data yang tersebar di seluruh catatan. Di NoSQL, Anda mungkin harus mempertahankan beberapa denormalizations yang mewakili berbagai tampilan data yang sama. Pendekatan ini meningkatkan biaya penyimpanan namun memberi Anda waktu kueri yang jauh lebih baik. Mengingat biaya penyimpanan yang terus berkurang dan peningkatan kecepatan pengembangan dan query, data denormalized (alias
terwujud views) bukanlah alasan pembunuh untuk mengabaikan solusi NoSQL. Ini hanya cara yang berbeda untuk mendekati masalah yang sama, dengan kelebihan dan kekurangannya sendiri. NoSQL sangat terdistribusi dan menggunakan perangkat keras komoditas Di banyak database NoSQL, keputusan desain utama adalah menggunakan beberapa komputer untuk menyimpan data untuk database tunggal, daripada memiliki keseluruhan database pada satu server.
Menyimpan data di beberapa mesin dan membiarkannya dipertanyakan sulit dilakukan. Anda harus mengirim query ke semua server dan menunggu jawaban. Mudah-mudahan, Anda menyiapkan mesin sehingga cukup cepat untuk saling berbicara untuk menangani kueri terdistribusi!
Keuntungan utama dari pendekatan ini adalah dalam hal dataset yang sangat besar, karena untuk beberapa persyaratan penyimpanan, bahkan server tunggal terbesar yang ada tidak dapat menyimpan atau memproses semua data yang Anda butuhkan. Pertimbangkan semua pesan di Twitter dan Facebook. Anda memerlukan mekanisme terdistribusi untuk mengelola semua data secara efektif, meskipun sebagian besar tentang apa yang dimiliki orang untuk sarapan dan video kucing lucu.
Keuntungan mendistribusikan database Anda adalah Anda dapat menggunakan server yang lebih murah, yang disebut
server komoditas
.Bahkan untuk dataset yang lebih kecil, mungkin lebih murah untuk membeli tiga server komoditas daripada server tunggal bertenaga tinggi. Keuntungan utama lainnya adalah menambahkan ketersediaan tinggi lebih mudah; Anda sudah setengah jalan di sana dengan mendistribusikan data Anda. Jika Anda mereplikasi data Anda sekali atau dua kali di server lain di cluster, data Anda tetap dapat diakses, bahkan jika salah satu server mogok, terbakar, dan mati. Tidak semua database open-source mendukung ketersediaan tinggi kecuali jika Anda membeli versi database yang didukung dan berbayar untuk perusahaan yang mengembangkannya.
Pengecualian terhadap aturan yang sangat terdistribusi adalah database grafik. Agar dapat secara efektif menjawab kueri grafik tertentu secara tepat waktu, data perlu disimpan di server tunggal. Belum ada yang memecahkan masalah ini.
Pertimbangkan dengan seksama apakah Anda memerlukan toko triple atau toko grafis. Tiga toko umumnya dapat didistribusikan, sedangkan toko grafik tidak. Yang mana yang Anda butuhkan bergantung pada kueri yang harus Anda dukung.