Sebelum kita membahas tentang manajemen transaksi, kita harus tahu sulu apa yang dimaksud dengan transaksi dalam ilmu sistem basis data. Dalam basis data transaksi diartikan sebagai suatu proses penggunaan resource (database, JMS, dll) pada suatu aplikasi.
Sedangkan Manajemen Transaksi (transaction management) adalah pengaturan transaksi-transaksi yang digunakan/diakses oleh suatu aplikasi/sistem. Transaksi-transaksi ini perlu diatur untuk mempertahankan ACID (atomicity, consistency, isolation, and durability).
Pemahaman mengenai strategi-strategi manajemen transaksi dibutuhkan untuk mempertahankan konsistensi resource yang digunakan. Kesalahan dalam memilih strategi manajemen transaksi tentu saja akan membuat proses bisnis yang diharapkan tidak berjalan dengan semestinya. Mulai dari kegagalan eksekusi hingga integritas database yang rendah.
Beberapa hal yang perlu dimengerti sebelumnya memahami manajemen transaksi ini adalah :
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 ini otomatisasi ini mempermudah. Tapi jika dalam satu transaksi terjadi lebih dari satu eksekusi pengubahan resource (Create, Update, Delete) 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. Mengapa? Karena error yang seringkali terjadi (terutama jika developer lupa membuat "commit") adalah runtime exception yang tidak terdeteksi ketika melakukan proses pengetesan aplikasi (testing).
Sedangkan Manajemen Transaksi (transaction management) adalah pengaturan transaksi-transaksi yang digunakan/diakses oleh suatu aplikasi/sistem. Transaksi-transaksi ini perlu diatur untuk mempertahankan ACID (atomicity, consistency, isolation, and durability).
Pemahaman mengenai strategi-strategi manajemen transaksi dibutuhkan untuk mempertahankan konsistensi resource yang digunakan. Kesalahan dalam memilih strategi manajemen transaksi tentu saja akan membuat proses bisnis yang diharapkan tidak berjalan dengan semestinya. Mulai dari kegagalan eksekusi hingga integritas database yang rendah.
Beberapa hal yang perlu dimengerti sebelumnya memahami manajemen transaksi ini adalah :
- Konsep ACID (Atomicity, Concistency, Isolation, Durability)
- JTA (Java Transaction API) dan JTS (Java Transaction Service)
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 ini otomatisasi ini mempermudah. Tapi jika dalam satu transaksi terjadi lebih dari satu eksekusi pengubahan resource (Create, Update, Delete) 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. Mengapa? Karena error yang seringkali terjadi (terutama jika developer lupa membuat "commit") adalah runtime exception yang tidak terdeteksi ketika melakukan proses pengetesan aplikasi (testing).
0 komentar:
Posting Komentar