Lewati ke Konten Utama

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 di rekening Anda harus berkurang dan uang di rekening pihak ketiga harus bertambah. Anda tidak dapat menganggap transaksi selesai jika kedua langkah tersebut tidak terjadi. 

Basis data ACID memprioritaskan konsistensi daripada ketersediaan—seluruh transaksi menjadi 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 secara langsung.

Mengapa ACID dan BASE penting?

Basis data modern adalah penyimpanan data terdistribusi yang mereplikasi data di beberapa simpul yang terhubung oleh jaringan. Basis data tersebut 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 atau pesan kesalahan.
  • Ketersediaan: setiap permintaan basis data menerima respons yang berhasil meskipun respons tersebut belum tentu berisi data terbaru.
  • Toleransi partisi: sistem tetap beroperasi meskipun ada pesan yang gagal terkirim atau tertunda di antara simpul-simpul terdistribusi.

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

  1. Membatalkan transaksi dan mengembalikan 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 proses tambahkan ke keranjang berhasil.
  2. Melanjutkan operasi tersebut sehingga ketersediaan terjamin, tetapi berisiko menimbulkan inkonsistensi. Pelanggan menambahkan item ke keranjang, tetapi pelanggan lain melihat jumlah stok yang salah, setidaknya untuk sementara waktu.

Dalam beberapa kasus penggunaan, konsistensi sangat penting dan basis data ACID lebih dipilih. Namun, ada beberapa kasus penggunaan lain saat konsistensi menjadi tidak penting. Misalnya, saat Anda menerima permintaan pertemanan di media sosial, tidak masalah jika pengguna lain melihat kesalahan pada jumlah teman yang ada di profil media sosial Anda untuk sementara waktu. 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 berbagai properti basis data yang menggambarkan bagaimana perilaku basis data saat memproses transaksi online

ACID 

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

Atomicity

Atomicity atau atomisitas memastikan bahwa semua langkah dalam satu transaksi basis data diselesaikan sepenuhnya atau dikembalikan ke keadaan semula. Misalnya, dalam sistem reservasi, kedua tugas—pemesanan kursi dan pembaruan 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.

Consistency

Consistency atau 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. 

Isolation

Isolation atau Isolasi memastikan bahwa transaksi baru, yang mengakses catatan tertentu, menunggu hingga transaksi sebelumnya selesai sebelum memulai operasi. Isolasi memastikan bahwa transaksi yang berlangsung secara bersamaan tidak saling mengganggu sehingga seolah-olah dieksekusi satu per satu secara berurutan. 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.

Durability

Durability atau daya tahan memastikan bahwa basis data mempertahankan semua catatan yang di-commit, 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 basically available, soft state, and eventually consistent. Akronim ini menyoroti bahwa BASE adalah kebalikan dari ACID, seperti padanan kimianya.

Basically available

Basically available 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 menayangkan daftar produk dan memproses pesanan. Bahkan jika ada sedikit keterlambatan dalam memperbarui jumlah inventaris, pengguna harus terus memeriksa item.

Soft state

Soft state mengacu pada anggapan bahwa data dapat memiliki status transien atau sementara yang dapat berubah dari waktu ke waktu, bahkan tanpa pemicu atau input eksternal. Hal ini menggambarkan status transisi catatan saat beberapa aplikasi memperbaruinya secara bersamaan. Nilai dari catatan tersebut baru akan ditetapkan secara final setelah semua transaksi selesai. Misalnya, jika pengguna mengedit posting media sosial, perubahan tersebut mungkin tidak segera terlihat oleh pengguna lain. Namun, kemudian, posting diperbarui dengan sendirinya (menampilkan perubahan lama) meskipun tidak ada pengguna yang memicunya.

Eventually consistent

Eventually consistent berarti catatan akan mencapai konsistensi saat semua pembaruan bersamaan telah selesai. Pada titik ini, aplikasi yang mengueri catatan akan melihat nilai yang sama. Sebagai contoh, bayangkan sebuah sistem pengeditan dokumen terdistribusi di mana beberapa pengguna dapat mengedit dokumen secara bersamaan. Jika Pengguna A dan Pengguna B mengedit bagian yang sama dari dokumen secara bersamaan, salinan lokal mereka mungkin akan berbeda untuk sementara waktu hingga perubahan tersebut 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

Terdapat kompromi yang perlu dipertimbangkan saat memilih antara model transaksi basis data ACID dan BASE.

Skala

Menskalakan model transaksi basis data ACID lebih sulit dilakukan karena berfokus pada konsistensi. Hanya satu transaksi yang diizinkan untuk setiap catatan dalam satu waktu sehingga penskalaan horizontal menjadi lebih sulit. 

Sebaliknya, Anda dapat melakukan penskalaan horizontal pada model basis data BASE 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. Karena harus menjamin konsistensi secara langsung, basis data ACID dapat membatasi akses ke beberapa aplikasi jika terjadi gangguan jaringan atau listrik. Demikian pula, aplikasi harus menunggu giliran mereka untuk memperbarui data jika modul perangkat lunak lain sedang memproses catatan tertentu. Sebaliknya, basis data BASE lebih fleksibel. Alih-alih memberlakukan pembatasan yang ketat, BASE memungkinkan aplikasi memodifikasi catatan saat tersedia. 

Performa

Basis data ACID mungkin mengalami masalah performa saat menangani volume data besar atau saat pemrosesan diminta dilakukan secara bersamaan. Karena data harus diproses secara berurutan dan terkontrol, beban 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 menyimpan perubahan dari transaksi dan menerapkannya di semua catatan terkait. Pada saat yang sama, basis data ACID 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 inkonsistensi saat memproses catatan tertentu dan mengambil tindakan pencegahan yang diperlukan dalam aplikasi. 

Waktu 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 analitik 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 kasus ini, keakuratan harga tidak sepenting memastikan bahwa seluruh pelanggan dapat mengakses harga produk secara waktu nyata.

Apakah basis data bisa sekaligus bersifat 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 bisa keduanya. Misalnya, basis data SQL disusun berdasarkan model ACID, sementara basis data NoSQL menggunakan arsitektur BASE. Namun, beberapa basis data NoSQL dapat menunjukkan sifat ACID tertentu, tetapi basis data tersebut tidak dapat beroperasi sebagai basis data yang sesuai dengan ACID.

Pelajari selengkapnya tentang basis data NoSQL »

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 kebutuhan basis data ACID dan BASE Anda?

Basis Data AWS Cloud memberikan berbagai layanan basis data ACID dan BASE untuk setiap tipe 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 adalah basis data BASE lain yang memungkinkan developer melakukan deployment basis data Redis yang tahan lama dan memiliki ketersediaan sangat tinggi 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.