Apa Perbedaan Antara Basis Data ACID dan BASE?


Apa perbedaan antara basis data ACID dan BASE?

ACID dan BASE adalah model transaksi basis data yang menentukan cara basis data mengatur dan memanipulasi data. Dalam konteks basis data, transaksi adalah operasi apa pun yang dianggap basis data sebagai satu unit kerja. Transaksi harus diselesaikan sepenuhnya agar basis data tetap konsisten. Misalnya, saat Anda mentransfer uang dari satu rekening bank ke rekening bank lain, uang tersebut harus meninggalkan rekening Anda dan harus ditambahkan ke rekening pihak ketiga. Anda tidak dapat menyebut transaksi selesai tanpa terjadinya kedua langkah tersebut. 

Basis data ACID memprioritaskan konsistensi daripada ketersediaan—seluruh transaksi gagal jika terjadi kesalahan pada langkah apa pun dalam transaksi. Sebaliknya, basis data BASE memprioritaskan ketersediaan daripada konsistensi. Alih-alih gagal dalam transaksi, pengguna dapat mengakses data yang tidak konsisten untuk sementara waktu. Konsistensi data tercapai, tetapi tidak segera.

Mengapa ACID dan BASE penting?

Basis data modern adalah penyimpanan data terdistribusi yang mereplikasi data di beberapa simpul yang terhubung oleh jaringan. Mereka memungkinkan pengguna untuk melakukan beberapa manipulasi data, seperti membaca dan menulis dalam satu transaksi. Pengguna mengharapkan data tetap konsisten di semua simpul pada akhir transaksi. Namun, dalam ilmu komputer teoritis, Teorema Brewer (juga disebut teorema CAP) menyatakan bahwa setiap penyimpanan data terdistribusi hanya dapat memberikan dua dari tiga jaminan berikut:

  • Konsistensi: setiap operasi baca menerima data terbaru yang diperbarui atau kesalahan.
  • Ketersediaan: setiap permintaan basis data menerima respons yang berhasil tanpa menjamin permintaan tersebut berisi data terbaru.
  • Toleransi partisi: sistem terus beroperasi meskipun pesan jatuh atau tertunda di antara simpul yang terdistribusi.

Misalnya, jika pelanggan menambahkan item ke keranjang di situs web e-commerce, semua pelanggan lain harus melihat tingkat penurunan stok produk. Jika pelanggan menambahkan item terakhir ke keranjang, semua pengguna lain akan melihat item tersebut kehabisan stok. Jika ada operasi yang gagal dalam transaksi, perancang basis data harus membuat pilihan. Basis data dapat melakukan salah satu hal berikut:

  1. Batalkan transaksi dan kembalikan kesalahan sehingga mengurangi ketersediaan tetapi memastikan konsistensi. Pelanggan tidak dapat menambahkan item ke keranjang mereka atau pelanggan lain tidak dapat memuat detail untuk semua produk hingga tambahkan ke keranjang berhasil.
  2. Lanjutkan dengan operasi untuk memberikan ketersediaan walaupun risiko tidak konsisten. Pelanggan menambahkan item ke keranjang, tetapi pelanggan lain melihat tingkat stok yang salah, setidaknya untuk sementara.

Dalam beberapa kasus penggunaan, konsistensi sangat penting dan basis data ACID lebih disukai. Namun, ada kasus penggunaan lain yang tidak kritis. Misalnya, saat Anda menerima permintaan pertemanan di media sosial, tidak masalah jika pengguna lain melihat jumlah teman yang salah di profil media sosial Anda untuk sementara. Namun, Anda tidak ingin kehilangan akses ke umpan media sosial Anda saat data diurutkan. Dalam skenario seperti itu, BASE menjadi penting.

Prinsip utama: ACID dibandingkan dengan BASE

ACID dan BASE adalah akronim untuk properti basis data berbeda yang mewakili cara basis data berperilaku selama pemrosesan transaksi online

ACID

ACID adalah singkatan dari atomicity, consistency, isolation, and durability.

Atomisitas

Atomisitas memastikan bahwa semua langkah dalam transaksi basis data tunggal selesai sepenuhnya atau dikembalikan ke status semula. Misalnya, dalam sistem reservasi, kedua tugas—pemesanan kursi dan memperbarui detail pelanggan—harus diselesaikan dalam satu transaksi. Anda tidak dapat memesan kursi untuk profil pelanggan yang tidak lengkap. Tidak ada perubahan yang dilakukan pada data jika ada bagian dari transaksi yang gagal.

Konsistensi

Konsistensi menjamin bahwa data memenuhi batasan integritas dan aturan bisnis yang telah ditentukan sebelumnya. Bahkan jika beberapa pengguna melakukan operasi serupa secara bersamaan, semua data tetap konsisten. Misalnya, konsistensi memastikan bahwa ketika mentransfer dana dari satu rekening ke rekening lain, total saldo sebelum dan sesudah transaksi tetap sama. Jika Rekening A memiliki saldo 200 USD dan Rekening B memiliki saldo 400 USD, total saldo adalah 600 USD. Setelah A mentransfer 100 USD ke B, A memiliki saldo 100 USD dan B memiliki saldo 500 USD. Total saldo masih 600 USD. 

Isolasi

Isolasi memastikan bahwa transaksi baru mengakses catatan tertentu dan menunggu hingga transaksi sebelumnya selesai sebelum memulai operasi. Isolasi memastikan bahwa transaksi bersamaan tidak saling mengganggu, mempertahankan ilusi bahwa transaksi tersebut dijalankan secara serial. Contoh lain, adalah sistem manajemen inventaris multipengguna. Jika satu pengguna memperbarui kuantitas produk, pengguna lain yang mengakses informasi produk yang sama akan melihat tampilan data yang konsisten dan terisolasi sehingga tidak terpengaruh oleh pembaruan yang berkelanjutan hingga selesai.

Daya tahan

Daya tahan memastikan bahwa basis data mempertahankan semua catatan yang diikat, bahkan jika sistem mengalami kegagalan. Daya tahan menjamin bahwa ketika transaksi ACID dilakukan, semua perubahan bersifat permanen dan tidak terpengaruh oleh kegagalan sistem berikutnya. Misalnya, dalam aplikasi perpesanan, ketika pengguna mengirim pesan dan menerima konfirmasi bahwa pengiriman berhasil, properti daya tahan memastikan bahwa pesan tidak pernah hilang. Hal ini tetap berlaku meskipun aplikasi atau server mengalami kegagalan.

BASE

BASE adalah singkatan dari available, soft state, and eventually consistent. Akronim ini menyoroti bahwa BASE adalah kebalikan dari ACID, seperti padanan kimianya.

Pada dasarnya tersedia

Pada dasarnya tersedia adalah aksesibilitas basis data secara bersamaan oleh pengguna setiap saat. Satu pengguna tidak perlu menunggu pengguna lain menyelesaikan transaksi sebelum memperbarui catatan. Misalnya, selama lonjakan lalu lintas yang tiba-tiba pada platform e-commerce, sistem dapat memprioritaskan untuk melayani daftar produk dan menerima pesanan. Bahkan jika ada sedikit keterlambatan dalam memperbarui jumlah inventaris, pengguna harus terus memeriksa item.

Status lunak

Status lunak mengacu pada anggapan bahwa data dapat memiliki status transien atau sementara yang dapat berubah dari waktu ke waktu, bahkan tanpa pemicu atau input eksternal. Status lunak menggambarkan status transisi catatan saat beberapa aplikasi memperbaruinya secara bersamaan. Nilai catatan akhirnya diselesaikan hanya setelah semua transaksi selesai. Misalnya, jika pengguna mengedit posting media sosial, perubahan tersebut mungkin tidak segera terlihat oleh pengguna lain. Namun, kemudian, postingan diperbarui dengan sendirinya (mencerminkan perubahan yang lebih lama) meskipun tidak ada pengguna yang memicunya.

Pada akhirnya konsisten

Pada akhirnya konsisten berarti catatan akan mencapai konsistensi saat semua pembaruan bersamaan telah selesai. Pada titik ini, aplikasi yang mengueri catatan akan melihat nilai yang sama. Misalnya, pertimbangkan sistem pengeditan dokumen terdistribusi tempat beberapa pengguna dapat mengedit dokumen secara bersamaan. Jika Pengguna A dan Pengguna B keduanya mengedit bagian dokumen yang sama secara bersamaan, salinan lokalnya mungkin berbeda untuk sementara hingga perubahan disebarkan dan disinkronkan. Namun, seiring berjalannya waktu, sistem memastikan konsistensi dengan menyebarkan dan menggabungkan perubahan yang dilakukan oleh pengguna yang berbeda.

Perbedaan utama: ACID dibandingkan dengan BASE

Ada tarik-ulur saat memilih antara model transaksi basis data ACID dan BASE.

Skala

Lebih sulit untuk menskalakan model transaksi basis data ACID karena berfokus pada konsistensi. Hanya satu transaksi yang diizinkan untuk catatan apa pun setiap saat, yang membuat penskalaan horizontal lebih menantang. 

Sebagai alternatif, Anda dapat menskalakan model basis data BASE secara horizontal karena tidak perlu mempertahankan konsistensi yang ketat. Menambahkan beberapa simpul di seluruh klaster basis data memungkinkan model BASE untuk meningkatkan ketersediaan datanya, yang merupakan prinsip untuk mendorong arsitektur basis data. 

Fleksibilitas

Basis data ACID kurang fleksibel saat menangani data. Basis data ini harus menjamin konsistensi segera, basis data ACID dapat membatasi akses ke beberapa aplikasi jika mengalami jaringan atau pemadaman listrik. Demikian pula, aplikasi harus menunggu giliran mereka untuk memperbarui data jika modul perangkat lunak lain memproses catatan tertentu. Sebaliknya, basis data BASE lebih fleksibel. Alih-alih memaksakan batasan ketat, BASE memungkinkan aplikasi untuk mengubah catatan saat mereka tersedia. 

Performa

Basis data ACID mungkin mengalami masalah performa saat menangani volume data besar atau permintaan pemrosesan bersamaan. Karena data diproses dalam urutan yang ketat, biaya tambahan dalam setiap transaksi membuat penundaan yang memengaruhi semua aplikasi yang mengakses catatan. 

Sebaliknya, aplikasi yang mengakses basis data BASE dapat memproses catatan kapan saja. Hal ini dapat mengurangi waktu tunggu yang berlebihan dan meningkatkan throughput basis data.

Sinkronisasi

Basis data ACID memerlukan mekanisme sinkronisasi untuk melakukan perubahan dari transaksi dan mencerminkannya di semua catatan terkait. Pada saat yang sama, ia harus mengunci catatan tertentu dari pihak lain hingga transaksi selesai atau dibuang. Sementara itu, basis data BASE berjalan tanpa mengunci catatan, dan pada akhirnya menyinkronkannya tanpa jaminan waktu. Saat bekerja dengan basis data BASE, developer mengetahui bahwa mungkin terdapat ketidakkonsistenan saat memproses catatan tertentu dan mengambil tindakan pencegahan yang diperlukan dalam aplikasi. 

Waktu perlu penggunaan: ACID dibandingkan dengan BASE

Terlepas dari perbedaannya, kedua sistem basis data ACID dan BASE relevan dalam aplikasi yang berbeda. ACID adalah pilihan ideal untuk aplikasi korporasi yang membutuhkan konsistensi data, keandalan, dan prediktabilitas. Misalnya, bank menggunakan basis data ACID untuk menyimpan transaksi pelanggan karena integritas data adalah prioritas utama. Sementara itu, basis data BASE adalah pilihan yang lebih baik untuk pemrosesan analitis online dari data volume tinggi yang kurang terstruktur. Misalnya, situs web e-commerce menggunakan basis data BASE untuk memperbarui harga produk yang sering berubah. Dalam hal ini, akurasi harga kurang penting dibandingkan dengan memungkinkan semua pelanggan akses waktu nyata ke harga produk.

Dapatkah basis data menjadi ACID dan BASE?

Menurut teorema CAP, basis data dapat memenuhi dua dari tiga jaminan konsistensi, ketersediaan, dan toleransi partisi. Model basis data ACID dan BASE memberikan toleransi partisi, yang berarti keduanya tidak dapat sangat konsisten dan selalu tersedia. Jadi, basis data condong ke ACID atau BASE, tetapi tidak boleh keduanya. Misalnya, basis data SQL terstruktur berdasarkan model ACID, sedangkan basis data NoSQL menggunakan arsitektur BASE. Namun, beberapa basis data NoSQL mungkin menunjukkan sifat ACID tertentu, tetapi mereka tidak dapat beroperasi sebagai basis data yang sesuai dengan ACID. 

Ringkasan perbedaan: ACID dibandingkan dengan BASE

 

ACID

BASE

Skala

Menskalakan secara vertikal.

Menskalakan secara horizontal.

Fleksibilitas

Kurang fleksibel. Memblokir catatan tertentu dari aplikasi lain saat memproses. 

Lebih fleksibel. Memungkinkan beberapa aplikasi untuk memperbarui catatan yang sama secara bersamaan.

Performa

Performa menurun saat memproses volume data yang besar.

Mampu menangani data besar dan tidak terstruktur dengan throughput tinggi. 

Sinkronisasi

Ya. Menambahkan penundaan saat menyinkronkan. 

Tidak ada sinkronisasi di tingkat basis data. 

Bagaimana AWS dapat mendukung persyaratan basis data ACID dan BASE Anda?

Basis Data AWS Cloud memberikan berbagai layanan basis data ACID dan BASE untuk setiap jenis kasus penggunaan data. Organisasi melakukan deployment basis data mereka di AWS untuk menghemat waktu dari penyediaan, penskalaan, dan pengelolaan infrastruktur penyimpanan data. Misalnya:

  • Amazon DynamoDB adalah layanan basis data BASE cepat yang memungkinkan pemrosesan data milidetik untuk aplikasi cloud.
  • Amazon MemoryDB for Redis adalah basis data BASE lain yang memungkinkan developer untuk melakukan deployment terhadap basis data Redis yang tahan lama dan sangat tersedia untuk aplikasi web dan seluler.
  • AWS RedShift adalah gudang data cloud ACID yang memungkinkan Anda menjalankan kueri analitik SQL yang kompleks untuk kasus penggunaan kecerdasan bisnis. 

Mulai basis data ACID dan BASE dengan membuat akun sekarang juga.