Apa itu Properti ACID
ACID adalah singkatan dari Atomicity, Consistency, Isolation, dan Durability. Properti ini menentukan prinsip-prinsip dasar yang memastikan pemrosesan transaksi database yang handal. Jika sebuah operasi database memenuhi properti ACID ini, maka transaksi tersebut dapat disebut sebagai transaksi ACID. Selain itu, sistem penyimpanan data yang menerapkan operasi ini disebut sistem transaksi.
Pentingnya Properti ACID dalam Transaksi Database
Properti ACID sangat penting untuk operasi yang sukses dalam transaksi database. Properti ini melindungi integritas dan keandalan data saat operasi baca, tulis, dan pembaruan dilakukan. Dengan mematuhi prinsip ACID, database dapat memastikan data tetap konsisten dan valid bahkan dalam situasi kegagalan seperti crash sistem atau kehilangan daya listrik. Hal ini juga memastikan bahwa operasi database yang berlangsung secara bersamaan tidak saling mengganggu satu sama lain, mencegah berbagai anomali yang mungkin terjadi.
Atomicity (Atomisitas)
Atomicity, yang berasal dari kata atomos dalam bahasa Yunani yang berarti 'tak terbagi', merujuk pada prinsip bahwa sebuah transaksi harus diperlakukan sebagai satu unit yang tak terpisahkan. Ini berarti semua bagian dari transaksi harus selesai dengan sukses; jika ada bagian dari transaksi yang gagal, maka seluruh transaksi akan gagal dan keadaan database tetap tidak berubah.
Peran Atomisitas dalam Transaksi Database
Dalam konteks transaksi database, atomisitas memastikan bahwa data tetap dalam keadaan konsisten bahkan ketika transaksi terhenti di tengah jalan. Hal ini dapat terjadi karena kegagalan sistem, pelanggaran integritas data, atau kejadian tak terduga lainnya yang dapat mengganggu proses transaksi.
Contoh Nyata Atomisitas
Misalnya, pertimbangkan transaksi perbankan di mana Anda mentransfer uang dari satu akun ke akun lainnya. Transaksi ini melibatkan dua operasi: pengurangan jumlah dari akun sumber dan penambahan jumlah ke akun tujuan. Atomisitas memastikan bahwa kedua operasi ini terjadi sepenuhnya atau sama sekali tidak terjadi. Jadi, jika terjadi kegagalan sistem setelah operasi pengurangan tetapi sebelum operasi penambahan, transaksi akan dibatalkan, dan uang akan dikembalikan ke akun sumber.
Penanganan Kegagalan: Peran Atomisitas
Atomisitas memainkan peran penting dalam memastikan keandalan data, terutama dalam sistem yang membutuhkan ketersediaan tinggi. Ia memberikan cara untuk menangani kesalahan dan kegagalan dengan baik, tanpa kehilangan data atau meninggalkan sistem dalam keadaan yang tidak konsisten. Hal ini dicapai dengan menggunakan mekanisme seperti rollback, di mana perubahan yang dilakukan oleh transaksi dibatalkan jika transaksi gagal untuk di-commit.
Konsistensi
Konsistensi, dalam konteks Properti ACID, mengacu pada kebutuhan bahwa setiap transaksi membawa database dari satu keadaan yang valid ke keadaan yang lain. Aturan konsistensi, juga dikenal sebagai batasan integritas, ditentukan untuk melindungi database agar tidak masuk ke keadaan yang salah.
Pentingnya Konsistensi dalam Transaksi Database
Properti konsistensi memastikan bahwa setiap transaksi akan membawa database dari satu keadaan yang valid ke keadaan yang lain. Database harus memenuhi serangkaian batasan konsistensi yang telah ditentukan, dan setiap transaksi bertanggung jawab untuk mempertahankan batasan-batasan ini. Jika sebuah transaksi melanggar aturan konsistensi, transaksi tersebut akan dibatalkan, dan database akan tetap tidak berubah.
Memastikan Konsistensi pada Tabel
Misalnya, pertimbangkan contoh sebuah website E-commerce di mana seorang pelanggan melakukan pembelian produk. Inventaris sebelum pembelian menunjukkan bahwa ada lima unit produk. Setelah pembelian satu unit, inventaris harus secara otomatis diperbarui menjadi empat unit. Jika inventaris menampilkan angka selain empat, itu berarti ada pelanggaran terhadap konsistensi. Oleh karena itu, properti konsistensi dalam model ACID memastikan bahwa database selalu tetap dalam keadaan yang konsisten sebelum dan setelah transaksi.
Menghadapi Kerusakan Data dan Kesalahan: Konsistensi Berperan
Ketika sistem mengalami kerusakan data atau kesalahan, aspek konsistensi dalam properti ACID memainkan peran penting dalam mempertahankan integritas data. Ini memastikan bahwa hanya data valid yang mengikuti semua aturan yang ditentukan yang akan ditulis ke dalam database, sehingga mencegah kerusakan atau korupsi logis yang tidak disengaja.
Isolasi
Isolasi adalah properti ACID yang memastikan bahwa eksekusi transaksi secara bersamaan menghasilkan keadaan sistem yang akan diperoleh jika transaksi dijalankan secara berurutan, yaitu satu demi satu. Properti ini memungkinkan transaksi untuk dieksekusi secara independen tanpa adanya interferensi.
Isolasi dalam Transaksi Database
Properti isolasi memastikan bahwa eksekusi transaksi secara bersamaan tidak mengubah keadaan database yang akan diperoleh jika transaksi dijalankan dalam urutan tertentu secara berurutan. Hal ini sangat penting dalam sistem database multi-pengguna di mana seringkali beberapa transaksi perlu berjalan secara bersamaan.
Mengelola Pengguna Bersamaan: Peran Isolasi
Misalnya, pertimbangkan sistem pemesanan kereta api di mana dua pengguna secara bersamaan memesan kursi terakhir yang tersedia dalam sebuah kereta. Properti isolasi memastikan bahwa hanya satu transaksi yang berhasil memesan kursi, sedangkan transaksi lainnya diberitahu bahwa kursi tidak lagi tersedia. Properti ini sangat penting dalam mencegah konflik antara dua transaksi yang terjadi secara simultan.
Menangani Transaksi Simultan dengan Isolasi
Properti Isolasi melindungi dari konflik dan anomali yang dapat terjadi saat beberapa transaksi dieksekusi secara bersamaan. Berbagai mekanisme, seperti penguncian (locks) dan penanda waktu (timestamps), dapat digunakan untuk mencapai isolasi, mencegah inkonsistensi data dan memastikan keandalan sistem.
Daya Tahan (Durability)
Daya tahan adalah properti ACID yang memastikan bahwa setelah sebuah transaksi di-commit, transaksi tersebut akan tetap ada, bahkan dalam situasi kegagalan berikutnya seperti kehilangan daya, crash, atau kesalahan. Pada dasarnya, properti daya tahan menjamin bahwa database akan melacak perubahan yang tertunda dengan cara yang memungkinkan server untuk pulih dari pemadaman mendadak.
Peran Daya Tahan dalam Transaksi Database
Daya tahan menjamin bahwa setelah sebuah transaksi di-commit, efek dari transaksi tersebut berproperti permanen dan bertahan meski ada kegagalan sistem dan perangkat lunak di masa depan. Hal ini biasanya dicapai dengan menyimpan perubahan transaksi pada media penyimpanan yang non-volatile.
Memastikan Keberlanjutan Data Meski Ada Kegagalan Sistem
Misalnya, pertimbangkan transaksi perbankan online di mana uang ditransfer dari satu akun ke akun lainnya. Jika terjadi kegagalan sistem segera setelah transaksi selesai, properti daya tahan memastikan bahwa perubahan yang dilakukan oleh transaksi (pengurangan uang dari satu akun dan penambahan uang ke akun lainnya) tidak hilang. Hal ini biasanya dijamin dengan sistem mempertahankan log transaksi yang dapat digunakan untuk memulihkan keadaan sistem tepat sebelum kegagalan terjadi.
Contoh Nyata Daya Tahan
Daya tahan sangat penting dalam sistem di mana data penting dan kehilangan data dapat menyebabkan masalah yang signifikan, seperti dalam sistem perbankan, sistem pemesanan, dan lain sebagainya. Misalnya, jika sebuah sistem pemesanan mengalami kegagalan setelah seorang pengguna memesan tiket, properti daya tahan memastikan bahwa catatan pemesanan tidak hilang dan tiket pengguna tetap terpesan meski sistem pulih dari kegagalan.
Properti ACID dalam Berbagai Sistem Database
Implementasi Properti ACID dalam Database Relasional
Database relasional secara inheren mematuhi ACID. Mereka menyediakan dukungan transaksi dan menerapkan properti ACID untuk memastikan keandalan dan akurasi data. Contoh dari database semacam ini adalah MySQL, PostgreSQL, dan Oracle Database.
Penanganan Properti ACID pada Database NoSQL
Berbeda dengan database relasional, database NoSQL, seperti MongoDB, Cassandra, dan CouchDB, mengambil pendekatan yang berbeda terhadap properti ACID. Banyak database NoSQL lebih mengutamakan kinerja dan skalabilitas daripada kepatuhan ACID yang ketat. Biasanya, database NoSQL menyediakan "konsistensi eventual" yang memungkinkan adanya ketidakkonsistenan sementara sebagai kompromi demi peningkatan kinerja. Namun, beberapa database NoSQL juga menyediakan tingkat kepatuhan ACID pada tingkat tertentu, seperti dalam skala dokumen tunggal atau pada basis operasi tertentu.