Isi kandungan:
Video: Building Apps for Mobile, Gaming, IoT, and more using AWS DynamoDB by Rick Houlihan 2024
Sekali anda menguruskan kunci dengan sewajarnya, anda sudah bersedia untuk merancang cara menyimpan data dengan NoSQL dan memastikan ia selamat dan mudah diakses untuk kerja-kerja anda perlu buat.
Jenis data di kedai nilai penting
Kedai nilai-kunci biasanya bertindak sebagai & ldquo; baldi & rdquo; untuk data perduaan. Beberapa pangkalan data menyediakan penaipan data dalaman yang kuat dan juga sokongan skema. Lain-lain hanya menyediakan fungsi pembantu yang mudah di dalam pemandu klien mereka untuk membagi struktur data aplikasi biasa ke kedai nilai utama. Contohnya termasuk peta, senarai, dan set disusun.
Oracle NoSQL boleh beroperasi dalam dua mod:
-
Simpanan binary sederhana
-
Sokongan skema Avro yang sangat berstruktur
Skema Avro adalah serupa dengan skema pangkalan data relasional - menguatkuasakan set yang sangat ketat peraturan format pada data JavaScript Object Notation (JSON) yang disimpan dalam pangkalan data, seperti digambarkan di sini:
{nama pengguna: & ldquo; afowler & rdquo;, sessionid: 13452673, sejak: 1408318745, tema: & ldquo; bluesky & rdquo;}
Anda menentukan skema Avro menggunakan dokumen JSON. Ini adalah contoh skema Avro untuk data yang disimpan sebelumnya:
{& ldquo; taip & rdquo;: & ldquo; rekod & rdquo;, & ldquo; ruang nama & rdquo;: & ldquo; com. contoh & rdquo;, & ldquo; nama & rdquo;: & ldquo; UserSession & rdquo;, & ldquo; bidang & rdquo;: [{& ldquo; nama & rdquo;: & ldquo; nama pengguna & rdquo;, & ldquo; taip & rdquo;: [& ldquo; tali & rdquo;, & rdquo; null & rdquo;]}, {& ldquo; nama & rdquo;: & ldquo; sessionid & rdquo;, & ldquo; taip & rdquo;: & ldquo; int & rdquo;}, {& ldquo; nama & rdquo;: & ldquo; sejak & rdquo;, & ldquo; taip & rdquo;: & ldquo; panjang & rdquo;}, {& ldquo; nama & rdquo;: & ldquo; tema & rdquo;, & ldquo; taip & rdquo;: [& ldquo; tali & rdquo;, & rdquo; null & rdquo;]}]}
Skema Avro menyediakan penaipan yang sangat kuat dalam pangkalan data apabila skema adalah penting. Dalam contoh sebelumnya, anda melihat data rentetan, id sesi angka, tarikh (milisaat, sejak Unix Time Epoch, sebagai integer panjang), dan tetapan peribadi untuk tema yang digunakan di laman web.
Juga perhatikan bahawa jenis nama pengguna dan tema mempunyai dua pilihan - rentetan dan batal, iaitu bagaimana anda mengarahkan Oracle NoSQL bahawa nilai nol dibenarkan. Anda boleh meninggalkan tema sebagai rentetan dan menyediakan parameter konfigurasi tambahan & ldquo; lalai & rdquo;: & ldquo; bluesky & rdquo;.
Pangkalan data NoSQL lain memberikan indeks sekunder pada mana-mana harta sewenang-wenang dari nilai yang mempunyai kandungan JSON. Sebagai contoh, Riak menyediakan indeks sekunder berdasarkan pembahagian dokumen - pada dasarnya, harta yang diketahui dalam dokumen JSON diindeks dengan jenis.Ini membolehkan pertanyaan pelbagai (kurang daripada atau lebih besar daripada) sebagai tambahan kepada perbandingan yang sama dan tidak sama rata. Riak berjaya menyediakan pertanyaan pelbagai tanpa skema ketat - takrif indeks mudah sahaja. Sekiranya data itu ada, ia ditambah kepada indeks.
Mengulangi data
Menyimpan pelbagai salinan data yang sama pada pelayan lain, atau bahkan pelayan, membantu memastikan ketersediaan data jika satu pelayan gagal. Kegagalan pelayan berlaku terutamanya dalam kelompok yang sama.
Anda boleh mengendalikan replika dua cara utama:
- Master-hamba: Semua membaca dan menulis berlaku kepada tuan. Hamba mengambil alih dan menerima permintaan hanya jika tuan gagal.
Replikasi hamba-hamba biasanya digunakan pada kedai nilai utama yang mematuhi ACID. Untuk membolehkan konsistensi maksimum, gedung utama ditulis dan semua replika dikemas kini sebelum transaksi selesai. Mekanisme ini dipanggil dua fasa koma dan mewujudkan rangkaian tambahan dan masa memproses pada replika.
- Master-master: Reads dan writes boleh berlaku pada semua nod yang mengurus kunci. Tidak ada konsep tentang & ldquo; utama & rdquo; pemilik partition.
Replika master-master biasanya akhirnya konsisten, dengan cluster melakukan operasi automatik untuk menentukan nilai terkini untuk kunci dan menghapus nilai-nilai yang lebih tua, basi.
Di kebanyakan kedai nilai penting, ini berlaku dengan perlahan - pada waktu baca. Riak adalah pengecualian di sini kerana ia mempunyai pemeriksaan anti-entropi untuk konsistensi semasa operasi biasa.
Versioning data
Untuk membolehkan resolusi konflik automatik, anda memerlukan mekanisme untuk menunjukkan versi data terkini. Akhirnya kedai-kedai bernilai konsisten mencapai resolusi konflik dengan cara yang berbeza.
Riak menggunakan mekanisme vektor jam untuk meramalkan salinan yang paling terkini. Kedai nilai penting lain menggunakan cap waktu yang mudah untuk menunjukkan keganasan. Apabila konflik tidak dapat diselesaikan secara automatik, kedua-dua salinan data dihantar kepada pelanggan. Data yang bertentangan yang dihantar kepada pelanggan boleh berlaku dalam keadaan berikut:
-
Client 1 menulis untuk replika A 'Adam: {likes: Cheese}'.
-
Replika Data salinan kepada replika B.
-
Pelanggan 1 mengemas kini data pada replika A kepada 'Adam: {suka: Keju, membenci: sinar matahari}'.
Pada ketika ini, replika A tidak mempunyai masa yang cukup untuk menyalin data terkini untuk replika B.
-
Client 2 mengemas kini data pada replika B kepada 'Adam: {suka: Anjing, membenci: kangaroos}'.
Pada ketika ini, replika A dan replika B dalam konflik dan kluster pangkalan data tidak dapat menyelesaikan perbezaan secara automatik.
Satu mekanisme alternatif adalah menggunakan setem masa dan mempercayai mereka untuk menunjukkan data terkini. Dalam keadaan sedemikian, adalah wajar untuk permohonan itu menyemak bahawa setem masa membaca nilai terkini sebelum mengemas kini nilai.
Mereka memeriksa cek dan tetapkan mekanisme, yang pada dasarnya bermaksud 'Jika versi terbaru masih versi 2, maka simpan versi 3 saya. Mekanisme ini kadang-kadang dirujuk sebagai baca kemaskini perlawanan (RMU) atau read match write (RMW). Mekanisme ini adalah mekanisme lalai yang digunakan oleh Oracle NoSQL, Redis, Riak, dan Voldemort.