Daftar Isi:
- ACID adalah seperangkat prinsip umum untuk sistem transaksional, bukan sesuatu yang terkait semata-mata dengan sistem relasional, atau bahkan hanya database, jadi perlu diketahui. ACID pada dasarnya berarti, "
- BASE berarti bahwa alih-alih membuat jaminan ACID, database memiliki keseimbangan konsistensi dan ketersediaan data yang merdu. Hal ini biasanya terjadi ketika node dalam cluster database tertentu bertindak sebagai manajer utama dari bagian database, dan node lainnya menyimpan replika hanya-baca.
- Seperti yang Anda duga, banyak argumennya adalah karena vendor NoSQL dapat membedakan diri dari pesaing mereka dengan mengklaim pendekatan unik dan berbeda. Akan tetapi, menarik untuk dicatat, bagaimanapun, jumlah vendor NoSQL dengan kepatuhan ACID pada peta jalan mereka. Beberapa database NoSQL memiliki kepatuhan terhadap ACID pada peta jalan mereka, walaupun mereka adalah pendukung BASE, yang menunjukkan betapa relevannya jaminan ACID untuk sistem
Video: Day 3 Keynote: Made Here Together (Cloud Next '18) 2024
Sifat database konsistensi berarti Begitu data ditulis ke database dengan sukses, kueri yang mengikuti bisa mengakses data dan mendapatkan tampilan data yang konsisten. Dalam prakteknya, ini berarti bahwa jika Anda menulis catatan ke database dan kemudian segera meminta catatan itu, Anda dijamin melihatnya. Ini sangat berguna untuk hal-hal seperti pesanan Amazon dan transfer bank.
Konsistensi adalah skala geser, dan subjek terlalu dalam untuk menutupi di sini. Namun, di dunia NoSQL, konsistensi umumnya termasuk dalam salah satu dari dua kubu: Konsentrat ACID
-
(ACID adalah singkatan dari Atomicity, Consistency, Isolation, Durability): ACID berarti bahwa setelah data ditulis, Anda memiliki konsistensi penuh dalam membaca
-
Konsistensi Akhir (BASE): BASE berarti bahwa sekali data ditulis, pada akhirnya akan muncul untuk membaca.
Pertarungan telah mengamuk di antara orang-orang yang percaya konsistensi kuat dalam database tidak diperlukan dan mereka yang percaya itu benar-benar dibutuhkan (menerjemahkan orang menjadi perusahaan NoSQL 'departemen pemasaran! ).
Kenyataannya ada di antara keduanya. Apakah itu penting bahwa posting seseorang dari seseorang tidak dilihat oleh semua temannya selama lima menit? Tidak, mungkin tidak. Ubah "posting Facebook" menjadi "transaksi keuangan miliaran dolar", meskipun, dan sikap Anda berubah dengan cepat! Pendekatan konsistensi yang Anda pilih bergantung pada situasinya. Namun, menurut pengalaman saya, konsistensi yang kuat selalu menjadi pilihan dalam situasi sistem perusahaan mission-critical.
ACID adalah seperangkat prinsip umum untuk sistem transaksional, bukan sesuatu yang terkait semata-mata dengan sistem relasional, atau bahkan hanya database, jadi perlu diketahui. ACID pada dasarnya berarti, "
Database ini memiliki fasilitas untuk menghentikan Anda merusak atau kehilangan data, " yang tidak diberikan untuk semua basis data. Sebenarnya, sebagian besar database NoSQL tidak memberikan jaminan ACID. Yayasan DB, MarkLogic, dan Neo4j adalah pengecualian yang menonjol. Beberapa database NoSQL memberikan jaminan tingkat rendah yang disebut
Check and Set yang memverifikasi apakah orang lain telah mengubah dokumen sebelum mengizinkan transaksi selesai. Perilaku ini biasanya terbatas karena cenderung diimplementasikan secara single-record. MongoDB adalah database penting yang menyediakan kemampuan Cek dan Set. Dengan MongoDB, keseluruhan data bernilai simpul dapat dikunci saat update, sehingga mencegah semua operasi baca dan tulis semua sampai operasi selesai.Perusahaan ini bekerja untuk menghapus keterbatasan ini.
BASE
BASE berarti bahwa alih-alih membuat jaminan ACID, database memiliki keseimbangan konsistensi dan ketersediaan data yang merdu. Hal ini biasanya terjadi ketika node dalam cluster database tertentu bertindak sebagai manajer utama dari bagian database, dan node lainnya menyimpan replika hanya-baca.
Untuk memastikan bahwa setiap klien melihat semua pembaruan (yaitu, mereka memiliki tampilan data yang konsisten), menulis ke simpul utama yang menyimpan data perlu dikunci sampai semua replika dibaca mutakhir. Ini disebut
dua - fase komit - perubahan dibuat secara lokal namun diterapkan dan dikonfirmasikan ke klien hanya jika semua node lain diperbarui. BASE melemaskan persyaratan ini, hanya memerlukan subset dari simpul yang menyimpan data yang sama agar diperbarui agar transaksi berhasil. Beberapa saat setelah transaksi dilakukan, replika read-only diperbarui.
Keuntungan dari pendekatan ini adalah transaksi dilakukan lebih cepat. Memiliki replika hidup yang mudah dibaca juga berarti Anda dapat menyebarkan bacaan data Anda, membuat pembacaan lebih cepat.
Kelemahannya adalah bahwa klien yang terhubung ke beberapa replika baca mungkin melihat informasi yang tidak pasti untuk jangka waktu yang tidak ditentukan. Dalam beberapa skenario, keadaan ini baik-baik saja. Jika Anda memposting pesan baru di Facebook dan beberapa teman Anda tidak melihatnya selama beberapa menit, ini bukan kerugian besar. Jika Anda mengirim perintah pembayaran ke bank Anda, Anda mungkin menginginkan transaksi segera.
Pendekatan alternatif untuk replika read-only adalah memiliki cluster
shared - tidak ada di mana hanya satu node pada sebuah cluster yang selalu melayani bagian tertentu dari database. Bersama-tidak berarti tidak berarti Anda kehilangan replikasi. Database yang menggunakan metode ini biasanya mereplikasi data mereka ke area sekunder pada node atau node utama lainnya - namun hanya satu node yang menjadi master untuk dibaca dan ditulis setiap saat.
Cluster shared-nothing memiliki keuntungan dari model konsistensi yang lebih sederhana namun memerlukan dua fase komit untuk replika. Fakta ini berarti transaksi terkunci sementara semua replika diperbarui. (Kunci internal ditambah penguncian untuk node lain memberi Anda dua fase.)
Ini biasanya memiliki dampak yang lebih kecil daripada cluster data bersama dengan replika read-only, karena area data replika tidak ada sama sekali tidak menerima permintaan baca untuk itu. bagian dari database Oleh karena itu, dua fase komit lebih cepat pada cluster tanpa berbagi daripada di cluster dengan replika yang mudah dibaca.
Memilih ACID atau BASE?
Seperti yang Anda duga, banyak argumennya adalah karena vendor NoSQL dapat membedakan diri dari pesaing mereka dengan mengklaim pendekatan unik dan berbeda. Akan tetapi, menarik untuk dicatat, bagaimanapun, jumlah vendor NoSQL dengan kepatuhan ACID pada peta jalan mereka. Beberapa database NoSQL memiliki kepatuhan terhadap ACID pada peta jalan mereka, walaupun mereka adalah pendukung BASE, yang menunjukkan betapa relevannya jaminan ACID untuk sistem
enterprise, mission
- critical . Banyak perusahaan menggunakan produk konsistensi BASE saat menguji gagasan karena mereka bebas namun kemudian bermigrasi ke basis data berbayar yang sesuai dengan ACID saat mereka ingin menjalani sistem misi-kritis. Cara termudah untuk memutuskan apakah Anda memerlukan ACID adalah mempertimbangkan interaksi orang dan sistem lain terhadap data Anda. Misalnya, jika Anda menambahkan atau memperbarui data, apakah penting agar kueri berikutnya dapat melihat perubahannya? Dengan kata lain, apakah keputusan penting bergantung pada keadaan database saat ini? Akan melihat data yang agak ketinggalan zaman berarti keputusan tersebut bisa cacat fatal?
Dalam layanan keuangan, kebutuhan akan konsistensi sudah jelas. Pikirkan pedagang membeli saham. Mereka perlu memeriksa saldo kas sebelum melakukan trading untuk memastikan bahwa mereka memiliki uang untuk meliput perdagangan. Jika mereka tidak melihat keseimbangan yang benar, mereka akan memutuskan untuk mengeluarkan uang untuk transaksi lain. Jika database yang mereka query hanya pada akhirnya konsisten, mereka mungkin tidak melihat kekurangan dana yang memadai, sehingga membuka organisasi mereka terhadap risiko finansial.
Kasus serupa dapat dibangun untuk ACID over BASE di bidang perawatan kesehatan, pertahanan, intelijen, dan sektor lainnya. Semuanya bermuara pada data, dan pentingnya ketepatan waktu dan keamanan data.