TUGAS Pertemuan 9
Database Transaction
Transaction Database adalah kemampuan database management system (DBMS) untuk dapat melakukan rollback atau mengembalikan data ketika terjadi sebuah kesalahan/kegagalan dalam sebuah transaksi di database.
artinya? misalkan kita melakukan query insert/update ke beberapa table jika salah satu query ke table gagal, maka query di table lain yang sudah tereksekusi harus dibatalkan atau dengan kata lain di rollback.
apa tujuan utama dari transaction database? tujuan utamanya adalah untuk integritas dan konsitensi data. misalkan kita lihat studi kasus dari sistem transfer uang di perbankan. minimal akan ada 2 query yang di jalankan yaitu:
1. query update untuk pengurangan saldo pengirim
2. query update untuk penambahan saldo penerima
Bayangkan jika tidak menggunakan transaction database. Maka yang terjadi adalah ketika query pertama berhasil dan query kedua gagal, saldo pengirim tetap berkurang dan saldo penerima tidak bertambah. Sesuatu yang tidak boleh terjadi.
banyak hal umum yang bisa menyebabkan kegagalan dalam transaksi. Misalkan jaringan error, sarver down, hard disk penuh, user kehabisan kuota di tengah jalan, dan yang lain lain. maka dari itu bagi saya pemahaman dan penggunaan transaction database menjadi sangat penting karena pada dasarnya sebuah transaksi itu harus atomic atau dengan kata lain kita harus memastikan semuanya berjalan dengan sempurna sampai ke bagian bagian terkecil sekalipun.
Dalam transaksi ada 4 komponen utama, yaitu atomicity, consistency, isolation dan durability yang biasa disingkat ACID.
Atomicity
Adalah suatu aturan dimana perubahan dilakukan secara keseluruhan atau tidak sama sekali. Sehingga jika di tengah transaksi terjadi kegagalan maka seruluruh perubahan akan di batalkan dan di kembalikan kekondisi semula. Kegagalan disini bisa terjadi karena aplikasi, system, database dsb.
Contoh (Ambil kasus transfer di suatu bank dari rek A ke rek B dengan nilai transfer 1000):
Maka stepnya adalah sebagai berikut:
1. Cek saldo A apakah mencukupi, jika mencukupi maka lanjut ke step ke-2. Jika tidak maka transaksi selesai dan tidak ada perubahan.
2. Kurangi saldo A sebesar 1000
3. Tambahkan saldo B sebesar 1000
Nah seluruh step diatas harus digabungkan sehingga apabila setelah step ke-2 terjadi kesalahan maka seluruh perubahan transaksi harus di batalkan. Setelah transaksi berhasil maka akan di lakukan commit.
Consistency
Menunjukkan konsistensi data yang ada setelah terjadi transaksi. Misalnya pada contoh kasus sebelumya, jika saldo A = 2000 dan saldo B = 500, maka setelah transaksi saldo A = 1000 dan saldo B = 1500. Nah beberapa hal yang biasanya ditangani oleh dbms adalah mengenai integrity constraint. Sedangkan jika berupa hasil perhitungan bisa di lakukan oleh aplikasi.
Isolation
Pada prinsip isolation, data yang sedang di lakukan perubahan tidak boleh diakses oleh lebih dari satu operasi. Harus hanya satu operasi yang melakukan perubahan ini. Sehingga jika ada operasi lain yang akan merubah maka harus menunggu sampai transaksi yang berlangsung selesai.
Misal ada 2 transaksi transfer antara rek A, dan rek B yang terjadi secara bersamaan:
T1 : Transfer A->B senilai 500
Kurangi saldo A 500
Tambah saldo B 500
T2 : Transfer B->A senilai 1000
Kurangi saldo B 1000
Tambah saldo A 1000
Nah bayangkan jika transaksi tersebut terjadi secara bersamaan dan di proses tanpa isolasi sehingga akan menjadi:
Kurangi saldo A 500
Tambah saldo B 500
Kurangi saldo B 1000
Tambah saldo A 1000
Jika terjadi kegagalan pada T1, maka data akan tidak konsisten sebab pada T2 sudah mengganti menambahkan saldo pada B. Demikian pentingnya isolasi, sehingga data tidak akan bisa di akses secara bersamaan oleh lebih dari satu operasi.
Durability
Kemampuan DBMS untuk menyimpan data transaksi yang terjadi. Sehingga jika terjadi kegagalan, DBMS menjamin bahwa data transaksi yang telah tersimpan tidak akan hilang. Banyak DBMS yang menuliskan log untuk suatu transaksi yang dapat digunakan ketika terjadi error pada hardware maupun software.
Komentar
Posting Komentar