Selasa, 15 April 2014

Transaksi

Apa itu TRANSAKSI ???





















Secara singkat transaksi adalah  kejadian yang menghasilkan data. Untuk lebih jelasnya Transaksi merupakan bagian dari pengeksekusian sebuah program yang melakukan pengaksesan basis data dan bahkan juga melakukan serangkaian perubahan data. Pada transaksi kita harus mengenal isitilah DBMS. DBMS yaitu mengijinkan banyak  transaksi pada saat bersamaan  untuk mengakses data yang sama . DBMS yang kita gunakan harus menjamin bahwa setiap transaksi harus dapat dikerjakan secara utuh atau tidak sama sekali. Tidak boleh ada transaksi yang hanya dikerjakan sebagian, karena dapat menyebabkan inkonsistensi basis data. Tujuan transaksi adalah menjaga agar data tidak rusak.

 Untuk menjamin agar integritas dapat tetap terpelihara maka setiap transaksi harus memiliki sifat-sifat:
1.     Atomicity      : Semua operasi dalam transaksi dapat dikerjakan seluruhnya atau tidak sama sekali (semua transaksi berhasil atau semua gagal)
2.     Consistency : Eksekusi transaksi harus dapat menjamin data tetap konsisten setelah transaksi berakhir.
3.     Isolation        : Transaksi terisolasi satu dengan yang lain.
4.     Durability     : Setelah commit update harus survive di database

Dua operasi penting pada Transaksi :
1.     Commit         : Memberi tanda bahwa transaksi telah  SELESAI. Update dibuat permanen (bahkan jika setelah commit terjadi kegagalan system)
2.     Rollback        : Memberi tanda bahwa transaksi GAGAL

Setelah anda tahu materi transaksi, anda bisa mencoba  program nya J
Anda bisa lihat contoh program transaksi yang terdapat di internet.

Sekilas script pada program transaksi : 
SAVE POINT
Merupakan titik aman, dimana kita telah menyelesaikan satu atau beberapa transaksi. Fungsinya yaitu agar pada saat kita rollback atau ada transaksi yang gagal, transaksi tidak berjalan dari  awal kembali, tetapi dari save point yang telah kita buat.
Untuk membuat sebuah save point, caranya : SAVEPOINT [nama save point];
setelah itu kita dapat rollback ke save point tersebut dengan cara : ROLLBACK TO [nama save point];

ISOLASI TRANSAKSI
Dalam transaksi database, ada 3 hal yang harus dicegah yaitu :
1.     Dirty Read, Transaksi membaca data dari hasil transaksi lainnya yang gagal. Kedua  transaksi tersebut berjalan bersamaan
2.     Non-Repeatable Read, Transaksi membaca ulang data yang telah di baca sebelumnya karena data tersebut telah di modifikasi oleh transaksi lainnya.
3.     Phantom Read, Transaksi membaca sebuah data yang telah hilang akibat dari transaksi yang lainnya.

Untuk mencegah 3 hal tersebut, maka dalam Oracle terdapat 2 level isolasi yang dapat diimplementasikan, yaitu :
1.     Read Commited ,  transaksi hanya dapat melihat perubahan data setelah transaksi lain telah commit pada data tersebut. (Seperti dalam contoh commit)
2.     Serializable adalah level isolasi yang menyediakan isolasi transaksi yang paling ketat. Level ini mengemulasikan eksekusi transaksi secara serial, menjadikan transaksi dieksekusi satu setelah yang lainnya,seperti secara serial, bukan secara bersamaan (pararel). Tetapi aplikasi yang menggunakan level isolasi ini harus bersedia untuk mengulangi transaksi dikarenakan kegagalan pengserialan transaksi. Saat transaksi berada pada level serializable, sebuah query SELECT hanya melihat data yang di COMMIT sebelum transaksi di mulai; transaksi tersebut tidak akan pernah melihat baik data yang belum di COMMIT atau perubahan data yang terjadi selama eksekusi transaksi oleh transaksi lain yang berjalan pada waktu bersamaan (e.g. saat transaksi ini berjalan, ada transaksi lain yang melakukan COMMIT pada data). Jika pada transaksi dengan level isolaso Serializable mengandung DML (Data Manipulatin Language) yang mencoba untuk meng-update suatu data yang mungkin sudah di update pada sebuah transaksi yang belum di commit pada awal transaksi Serializable, maka perintah DML tersebut akan gagal. Untuk mengaplikasikan level isolasi Serializable, adalah dengan menggunakan perintah :
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;

Isolai level ini mencegah terjadinya Phantom Read