Daftar Isi:
- Jenis data di toko dengan nilai penting
- Menyimpan banyak salinan dari data yang sama di server lain, atau bahkan rak server, membantu memastikan ketersediaan data jika satu server gagal. Kegagalan server terjadi terutama di cluster yang sama.
- Untuk mengaktifkan resolusi konflik otomatis, Anda memerlukan sebuah mekanisme untuk menunjukkan versi data terbaru. Akhirnya toko kunci-nilai konsisten mencapai resolusi konflik dengan cara yang berbeda.
Video: Couch DB (Pengenalan dan Implementasi) 2024
Setelah Anda mengelola kunci dengan tepat, Anda siap untuk merancang cara menyimpan data dengan NoSQL dan memastikannya aman dan selalu dapat diakses untuk pekerjaan. Anda perlu melakukan.
Jenis data di toko dengan nilai penting
Toko dengan nilai kunci biasanya bertindak sebagai & ldquo; ember & rdquo; untuk data biner Beberapa database memang memberikan pengetikan data internal yang kuat dan bahkan dukungan skema. Yang lain hanya menyediakan fungsi pembantu yang mudah digunakan pada driver klien mereka untuk membuat seri aplikasi struktur aplikasi umum ke toko dengan nilai kunci. Contohnya termasuk peta, daftar, dan kumpulan yang diurutkan.
Toko biner sederhana-
Skema skema Avro yang sangat terstruktur
-
Skema avro mirip dengan skema database relasional - menegakkan set yang sangat ketat dari aturan format pada data JavaScript Object Notation (JSON) yang tersimpan dalam database, seperti yang digambarkan di sini:
{username: & ldquo; afowler & rdquo;, sessionid: 13452673, sejak: 1408318745, tema: & ldquo; bluesky & rdquo;}
Anda mendefinisikan skema Avro menggunakan dokumen JSON. Ini adalah contoh skema Avro untuk data tersimpan yang ditunjukkan sebelumnya:
Skema Avro memberikan ketikan yang sangat kuat dalam database saat skema penting. Dalam contoh sebelumnya, Anda melihat data string, id sesi numerik, tanggal (milidetik, sejak Unix Time Epoch, sebagai bilangan bulat panjang), dan pengaturan personalisasi untuk tema yang akan digunakan di situs web.
Database NoSQL lainnya memberikan indeks sekunder pada properti sewenang-wenang dari suatu nilai yang memiliki konten JSON. Riak, misalnya, menyediakan indeks sekunder berdasarkan
partisi dokumen - pada dasarnya, properti yang dikenal dalam dokumen JSON diindeks dengan tipe tertentu.Hal ini memungkinkan untuk query jarak jauh (kurang dari atau lebih dari) selain perbandingan yang sama dan tidak sama. Riak mengelola untuk memberikan berbagai pertanyaan tanpa skema yang ketat - hanya definisi indeks sederhana. Jika datanya ada, maka itu ditambahkan ke indeks. Menggandakan data
Menyimpan banyak salinan dari data yang sama di server lain, atau bahkan rak server, membantu memastikan ketersediaan data jika satu server gagal. Kegagalan server terjadi terutama di cluster yang sama.
Anda bisa mengoperasikan replika dua cara utama:
Master-slave:
- Semua membaca dan menulis terjadi pada master. Budak mengambil alih dan menerima permintaan hanya jika tuannya gagal. Replikasi master-budak biasanya digunakan pada toko key-value yang sesuai dengan ASID. Untuk mengaktifkan konsistensi maksimum, toko utama ditulis dan semua replika diperbarui sebelum transaksi selesai. Mekanisme ini disebut
two-phase commit dan menciptakan jaringan ekstra dan waktu pemrosesan pada replika. Master-master:
- Membaca dan menulis bisa terjadi pada semua node yang mengelola sebuah kunci. Tidak ada konsep a & ldquo; utama & rdquo; pemilik partisi Master-master replika biasanya pada akhirnya konsisten, dengan cluster melakukan operasi otomatis untuk menentukan nilai terbaru untuk kunci dan menghapus nilai basi yang lebih tua.
Di kebanyakan toko dengan nilai penting, ini terjadi secara perlahan - pada waktu baca. Riak terkecuali di sini karena memiliki layanan anti-entropi yang memeriksa konsistensi selama operasi normal.
Versi data
Untuk mengaktifkan resolusi konflik otomatis, Anda memerlukan sebuah mekanisme untuk menunjukkan versi data terbaru. Akhirnya toko kunci-nilai konsisten mencapai resolusi konflik dengan cara yang berbeda.
Riak menggunakan mekanisme jam vektor untuk meramalkan salinan mana yang paling baru. Toko dengan nilai kunci lainnya menggunakan stempel waktu yang sederhana untuk menunjukkan kekakuan. Bila konflik tidak dapat diatasi secara otomatis, kedua salinan data dikirim ke klien. Data yang bertentangan dikirim ke klien dapat terjadi dalam situasi berikut:
Klien 1 menulis ke replika A 'Adam: {likes: Cheese}'.
-
Replica Sebuah salinan data ke replika B.
-
Klien 1 memperbarui data tentang replika A sampai 'Adam: {suka: Keju, membenci: sinar matahari}'.
-
Pada saat ini, replika A tidak memiliki cukup waktu untuk menyalin data terbaru ke replika B.
Klien 2 memperbarui data tentang replika B ke 'Adam: {suka: Anjing, membenci: kanguru}'.
-
Pada titik ini, replika A dan replika B saling bertentangan dan cluster database tidak dapat secara otomatis menyelesaikan perbedaannya.
Mekanisme alternatif adalah menggunakan stempel waktu dan mempercayai mereka untuk menunjukkan data terbaru. Dalam situasi seperti ini, masuk akal untuk aplikasi memeriksa perangko waktu membaca nilai terakhir sebelum memperbarui nilainya.
Mereka memeriksa cek
dan mengatur mekanisme, yang pada dasarnya berarti 'Jika versi terakhir masih versi 2, maka simpan versi saya 3'. Mekanisme ini kadang-kadang disebut read match update (RMU) atau baca tulis kecocokan (RMW). Mekanisme ini adalah mekanisme default yang digunakan oleh Oracle NoSQL, Redis, Riak, dan Voldemort.