Isi kandungan:
Video: Day 3 Keynote: Made Here Together (Cloud Next '18) 2024
Ketekalan harta dalam pangkalan data bermakna bahawa sebaik sahaja data ditulis ke pangkalan data berjaya, pertanyaan yang mengikuti dapat mengakses data dan mendapatkan pandangan yang konsisten mengenai data. Dalam amalan, ini bermakna bahawa jika anda menulis rekod ke pangkalan data dan kemudian dengan segera meminta rekod itu, anda dijamin untuk melihatnya. Ia amat berguna untuk perkara seperti pesanan Amazon dan pemindahan bank.
Konsistensi adalah skala gelongsor, dan subjek yang terlalu dalam untuk diliputi di sini. Walau bagaimanapun, dalam dunia NoSQL, konsistensi biasanya jatuh ke dalam salah satu daripada dua kem:
-
Konsistensi ACID (ACID bermaksud Atomicity, Consistency, Isolation, Ketahanan): ACID bererti bahawa sekali data ditulis, anda mempunyai konsistensi penuh dalam dibaca.
-
Ketekalan Masa Depan (BASE): BASE bermaksud bahawa sekali data ditulis, ia akhirnya akan muncul untuk dibaca.
Pertempuran telah mengamuk di antara orang-orang yang percaya konsistensi yang kuat dalam pangkalan data tidak diperlukan dan mereka yang mempercayainya benar-benar diperlukan (menerjemahkan orang ke syarikat NoSQL 'jabatan pemasaran! ).
Realiti adalah suatu tempat di antara. Adakah penting bahawa siaran Facebook seseorang tidak dilihat oleh semua kawannya selama lima minit? Tidak, mungkin tidak. Tukar "catatan Facebook" kepada "bilion dolar-transaksi kewangan," walaupun, dan sikap anda berubah dengan cepat! Pendekatan konsistensi yang anda pilih bergantung pada keadaan. Walau bagaimanapun, dalam pengalaman saya, konsistensi yang kuat sentiasa menjadi pilihan dalam situasi sistem perusahaan kritikal misi.
ACID
ACID adalah satu set prinsip umum untuk sistem transaksi, bukan sesuatu yang berkaitan semata-mata dengan sistem relasi, atau bahkan hanya pangkalan data, jadi ia bernilai mengetahui. ACID pada dasarnya bermakna, " Pangkalan data ini mempunyai kemudahan untuk menghalang anda daripada merosakkan atau kehilangan data, " yang tidak diberikan untuk semua pangkalan data. Sebenarnya, kebanyakan pangkalan data NoSQL tidak memberikan jaminan ACID.
Yayasan DB, MarkLogic, dan Neo4j adalah pengecualian yang ketara. Sesetengah pangkalan data NoSQL menyediakan jaminan lebih rendah yang dipanggil Check and Set yang mengesahkan sama ada orang lain telah mengubah dokumen sebelum membenarkan transaksi selesai. Tingkah laku ini biasanya terhad kerana ia cenderung dilaksanakan dalam satu rekod tunggal.
MongoDB adalah pangkalan data penting yang menyediakan keupayaan Cek dan Set. Dengan MongoDB, data seluruh nilai nod boleh dikunci semasa kemas kini, dengan itu menghalang semua membaca dan semua operasi menulis sehingga operasi selesai.Syarikat sedang berusaha untuk menghapuskan batasan ini, walaupun.
BASE
BASE bermaksud bahawa daripada membuat jaminan ACID, pangkalan data mempunyai keseimbangan konsisten dan ketersediaan data. Ini biasanya berlaku apabila nod dalam kluster pangkalan data yang diberikan sebagai pengurus utama bahagian pangkalan data, dan nod lain memegang replika yang hanya dibaca.
Untuk memastikan setiap klien melihat semua kemas kini (iaitu, mereka mempunyai pandangan yang konsisten terhadap data), menulis ke nod utama yang memegang data perlu dikunci sehingga semua replika baca adalah terkini. Ini dipanggil dua - fasa koma - perubahan dibuat secara tempatan tetapi digunakan dan disahkan kepada klien hanya apabila semua nod lain dikemas kini.
BASE melonggarkan keperluan ini, hanya memerlukan subset dari node yang memegang data yang sama untuk dikemas kini agar transaksi berjaya. Kadang kala transaksi dilakukan, replika baca sahaja dikemas kini.
Keuntungan pendekatan ini ialah transaksi dilakukan dengan lebih cepat. Mempunyai replika langsung yang boleh dibaca juga bermakna anda boleh menyebarkan beban membaca data anda, menjadikan bacaan lebih cepat.
Kelemahannya adalah bahawa pelanggan yang menyambung ke beberapa replika baca mungkin melihat maklumat terkini untuk tempoh masa yang tidak ditentukan. Dalam sesetengah senario, keadaan ini baik-baik saja. Jika anda menghantar mesej baharu di Facebook dan beberapa rakan anda tidak melihatnya selama beberapa minit, itu bukan kerugian besar. Sekiranya anda menghantar pesanan pembayaran ke bank anda, anda mungkin mahu urus niaga segera.
Pendekatan alternatif kepada replika baca sahaja ialah mempunyai berkongsi - tiada cluster di mana hanya satu simpul pada cluster yang selalu berfungsi sebagai sebahagian daripada pangkalan data.
Dikongsi - tidak bermakna anda kehilangan replikasi, walaupun. Pangkalan data yang menggunakan kaedah ini biasanya meniru data mereka ke kawasan sekunder pada nod atau nod utama lain - tetapi hanya satu nod adalah tuan untuk membaca dan menulis pada bila-bila masa.
Kelompok yang tidak dikongsi mempunyai kelebihan model konsisten yang lebih mudah tetapi memerlukan komitmen dua fasa untuk replika. Fakta ini bermakna kunci urus niaga sementara semua replika dikemas kini. (Kunci dalaman ditambah penguncian untuk nod lain memberi anda dua fasa.)
Ini biasanya mempunyai kesan yang kurang daripada kluster data yang dikongsi dengan replika baca sahaja, walaupun, kerana bahagian data replika yang tidak dikongsi tidak menerima permintaan baca untuk itu sebahagian daripada pangkalan data. Oleh itu, komitmen dua fasa adalah lebih cepat pada cluster yang dikongsi-tidak daripada pada cluster dengan replika yang boleh dibaca.
Memilih ACID atau BASE?
Seperti yang anda harapkan, banyak hujahnya ialah kerana vendor NoSQL boleh membezakan diri mereka dari pesaing mereka dengan mendakwa pendekatan yang berbeza dan unik. Namun, menarik untuk diperhatikan, bagaimanapun, bilangan vendor NoSQL dengan pematuhan ACID pada hala tuju mereka.
Sesetengah pangkalan data NoSQL mempunyai pematuhan ACID pada hala tuju mereka, walaupun mereka adalah pendukung BASE, yang menunjukkan bagaimana jaminan ACID yang berkaitan adalah sistem perusahaan, misi - kritikal yang berkaitan.
Banyak syarikat menggunakan produk konsisten BASE ketika menguji idea kerana mereka bebas tetapi kemudian berpindah ke pangkalan data berbayar ACID yang patuh kepada ACID apabila mereka ingin hidup dalam sistem kritikal misi.
Cara paling mudah untuk memutuskan sama ada anda memerlukan ACID ialah untuk mempertimbangkan interaksi orang dan sistem lain dengan data anda. Sebagai contoh, jika anda menambah atau mengemas kini data, adakah penting bahawa pertanyaan seterusnya dapat melihat perubahan? Dalam erti kata lain, keputusan penting bergantung pada keadaan semasa pangkalan data? Akan melihat data yang agak ketinggalan zaman bermakna bahawa keputusan itu boleh menjadi cacat secara fizikal?
Dalam perkhidmatan kewangan, keperluan untuk konsisten adalah jelas. Fikirkan pedagang membeli stok. Mereka perlu menyemak baki tunai sebelum berdagang untuk memastikan bahawa mereka mempunyai wang untuk menutupi perdagangan. Jika mereka tidak melihat baki yang betul, mereka akan memutuskan untuk membelanjakan wang pada transaksi lain. Sekiranya maklumat pangkalan data mereka hanya akhirnya konsisten, mereka mungkin tidak melihat kekurangan dana yang mencukupi, dengan itu mendedahkan organisasi mereka kepada risiko kewangan.
Kas yang sama boleh dibina untuk ACID berbanding BASE dalam penjagaan kesihatan, pertahanan, kecerdasan, dan sektor lain. Ini semua berkait rapat dengan data, dan pentingnya ketepatan masa dan keselamatan data.