Sabtu, 11 Oktober 2014

Manajemen Transaksi

Dalam basis data, Transaksi diartikan sebagai proses penggunaan resource (database, JMS, dll) pada suatu aplikasi. Sedang, Manajemen Transaksi (Transaction Management) adalah pengaturan transaksi-transaksi yang digunakan atau diakses oleh suatu aplikasi. Pemahaman mengenai strategi manajemen transaksi dibutuhkan untuk mempertahankan konsistensi resource yang digunakan. Kesalahan dalam memilih strategi manajemen transaksi akan berakibat pada proses sehingga berdampak tidak sesuai harapan. 


Konsep ACID
  • Atomicity (Keutuhan)
Transaksi merupakan unit yang tidak terlihat yang harus dilakukan secara keseluruhan atau tidak sama sekali.
  • Consistency (Ketetapan)
Menjaga konsistensi data dalam database.
  • Isolation (Pemisahan)
Transaksi dieksekusi secara terpisah dari yang satu dengan yang lainnya.
  • Durability (Daya Tahan)
Setelah transaksi selesai, database yang berubah akan menjadi data permanen dan tidak akan hilang karena kegagalan berikutnya.
Terdapat dua buah operasi yang berfungsi untuk menjaga integritas data dan ketahanan data, yaitu Commit (transaksi telah selesai dilaksanakan) dan Rollback (transaksi harus diulang karena ada suatu kegagalan).

Local Transaction Model
Pada Local Transaction Model, manajemen transaksi diatur oleh DBMS. Developer yang mengatur koneksi. Transaksi secara otomatis diatur oleh DBMS karena adanya variabel auto commit yang secara default di-set dengan nilai “true”. Maksudnya adalah setiap kali transaksi terjadi, maka secara otomatis transaksi itu di-commit.
Jika hanya satu eksekusi dalam satu transaksi yang terjadi, maka otomatis akan mempermudah. Tapi jika dalam satu transaksi terjadi lebih dari satu eksekusi pengubahan resource (CreateUpdateDelete) dan antar eksekusi itu memiliki hubungan logik (misalkan penambahan record pada tabel penjualan harus didahului oleh penambahan record pada tabel pemesanan), maka yang terjadi adalah jika eksekusi SQL pertama sukses namun eksekusi SQL kedua gagal, maka yang di-rollback hanyalah eksekusi SQL kedua. Eksekusi SQL yang pertama akan lolos (commited). Ini tidak sesuai dengan konsep ACID. Proses tidak atomic dan resource tidak konsisten.
Programmatic Transaction Model
Pada Programmatic Transaction Model, developer mengatur transaksi, bukan koneksi. Hal ini kebalikan dari Local Transaction Model. Jadi developer bertanggung jawab untuk memulai (begin), mengakhiri (commit), dan rollback suatu transaksi.
Kekurangan Programmatic Transaction Model yang pertama adalah kenyataan bahwa dengan tipe manajemen transaksi ini developer menjadi harus memberikan perhatian ekstra pada exception handling. Karena error yang seringkali terjadi (terutama jika developer lupa membuat “commit“) adalah runtime exception yang tidak terdeteksi ketika melakukan proses pengetesan aplikasi (testing).

Tidak ada komentar:

Posting Komentar