Rabu, 23 April 2014

TRANSAKSI pada SISTEM BASIS DATA


TRANSAKSI
PADA SISTEM BASIS DATA

nah kali ini kita akan membahas tentang yang namanya TRANSAKSI. apa itu TRANSAKSI? lalu apa fungsi TRANSAKSI itu? untuk lebih jelasnya, mari kita sama-sama lihat pemaparan di bawah ini ..

Transaksi
Transaksi adalah satu atau beberapa aksi yang dilakukan program aplikasi untuk mengakses atau mengubah isi basis data. Transaksi merupakan bagian dari pengeksekusian sebuah program yang melakukan pengaksesan basis data dan bahkan juga melakukan serangkaian perubahan data. Transaksi bertujuan unuk mencegah dari kehilangan ataupun kerusakan data. Sebuah transaksi berpeluang untuk mengganggu integritas basis data yang dapat membuat kondisi/hubungan antar data tidak seperti seharusnya. Tujuannya adalah untuk mencegah kehilangan maupun kerusakan data.  Sebuah transaksi basis data berpeluang mengganggu integritas basis data.
Sifat-sifat transaksi untuk menjamin integritas data, yaitu sbb:
  1. Atomicity
    Semua operasi dalam transaksi dapat dikerjakan seluruhnya atau tidak sama sekali
  2. Consistency
    Eksekusi transaksi harus dapat menjamin data tetap konsisten setelah transaksi berakhir.
  3. Isolation
    Jika pada sebuah sistem basis data terdapat sejumlah transaksi yang dilaksanakan secara bersamaan, maka semua transaksi yang dilaksanakan pada saat yang bersamaan tersebut harus dapat dimulai dan bisa berakhi.
  4. Durability
    perubahan data yang terjadi setelah sebuah transaksi
    berakhir dengan baik, harus dapat bertahan bahkan jika seandainya sistem mati
Ada 2 operasi pada sistem basis data oracle:karena adanya s
  1. Commit
    Commit adalah sebagai penanda bahwa transaksi sudah selesai dilakukan. Commit ini artinya transaksi dilakukan telah dilakukan perubahan.
  2. Rollback
    Rollback berarti bahwa transaksi tidak berhasil melakukan perubahan. Maksudnya transaksi harus diulang karena adanya suatu keadaan yang mengalami kegagalan.
secara garis besar kurang lebih begitulah transaksi itu .. tapi kita belum selesai sampai disini. karena masih ada sambungannya. mari kita baca lagi ...

Save Point
Save Point secara sederhana merupakan sebuah titik aman, dimana kita telah menyelesaikan satu atau beberapa transaksi. Save point dianalogikan seperti sebuah check point saat kita bermain game. Fungsi dari save point adalah supaya pada saat kita ingin rollback atau ada transaksi yang gagal, transaksi tidak berjalan dari awal kembali, tetapi dari save poin yang telah kita buat.
untuk membuat savepoint caranya adalah:
SAVEPOINT  [nama save point];
Setelah dibuat save pointnya kita dapat rollback ke save point tersebut dengan cara :
ROLLBACK TO [nama save point];
ISOLASI TRANSAKSI
ada tiga hal yang harus di cegah, yaitu:
  1. Dirty Read,Transaksi membaca data dari hasil transaksi lainnya yang gagal. Kedua transaksi tersebut berjalan bersamaan.
  2. Non-Repeteable 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.
dan untuk mencegahnya terdapat dua level isolasi, yaitu:
  • Read Commited, Transaksi hanya dapat melihat perubahan data setelah transaksi lain telah commit pada data tersebut. (Seperti dalam contoh commit).
  • 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). Untuk mengaplikasikan level isolasi Serializable, adalah dengan menggunakan perintah :
    SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; Isolasi level ini mencegah terjadinya Phantom Read.
LOCKING PROTOCOL
Dikenal dengan istilah locking yang berfungsi menjaga integritas data. ada dua metode locking, yaitu:
  • Shared Lock (S-LOCK)Jika transaksi memiliki shared lock pada suatu data, transaksi tersebut hanya bisa melakukan pembacaan.
  • Exclusive Lock (X-LOCK),
    Bagi transaksi yang memiliki exclusive lock pada suatu data, transaksi tersebut dapat melakukan perubahan dan pembacaan terhadap data tersebut.
Untuk shared lock, dapat dimiliki oleh beberapa transaksi dalam satu waktu, namun untuk exclusive lock, hanya dapat dimiliki oleh satu transaksi pada satu waktu.
PENGUNCIAN LEVEL TABEL
Penguncian yang berfungsi untuk mengunci suatu tabel untuk mencegah perubahan atau penghapusan tabel selama ada transaksi yang menggunakan tabel tersebut. cara penguncian tabelnya, sebagai berikut:
LOCK TABLE [nama tabel];
PENGUNCIAN LEVEL BARIS
Penguncian yang dilakukan pada baris (ROW) yang sedang digunakan oleh suatu transaksi sampai transaksi tersebut selesai dilakukan. Penguncian level baris hanya berlaku untuk operasi UPDATE dan DELETE.
DEADLOCK
Merupakan situasi dimana dua atau lebih transaksi dalam kondisi wait-state, satu sama lain menunggu Lock dilepas sebelum di mulai (Yudi Wibisono).

nah inilah serangkaian pemaparan tentang teorinya. sekarang mari kita lihat bagaimana praktiknya .. agar lebih jelas, penjelasannya mungkin akan sedikit di ulangi agar lebih enak memahaminya ..
COMMIT
memberi tanda bahwa transaksi telah selesai. Update dibuat permanen (bahkan jika setelah commit terjadi kegagalan system).

ROLLBACK
memberi tanda bahwa transaksi GAGAL. Semua update harus di-undo (bagaimana caranya?)
lihat lagi contoh

Berikut ini Contoh dari commit dan rollback


Pertama buat table dulu.

Kedua kita buat sequence dan kita masukkan data kedalam table 
Nah sekarang kita cobain deh penerapan commit sama rollbacknya, kita buka dua buah jendela SQL Command Line dengan latar yang berbeda, seperti gambar dibawah ini:

Setelah itu kamu pastikan keduanya login dengan user yang sama, misalkan usernya itu Transaksi. Kalau udah, kita tampilkan dulu data yang tadi kita buat sebelumnya dikedua SQL Command Line tersebut. 


Tampilan diatas belum ada perbedaannya kan, sekarang kita masukan data di SQL Command Line yang latarnya warna hitam. 
Kalau sudah isi datanya kita tampilkan data yang ada di table tersebut di SQL Command Line yang berlatar 
hitam


Dan kita juga tampilkan data yang ada di table tersebut di SQL Command Line yang berlatar abu-abu. 
Kenapa bisa terjadi hal tersebut? Jawabannya adalah karena transaksi memasukkan data pada Command Line berlatar hitam belum sepenuhnya berakhir. Untuk menandakan bahwa proses memasukkan data tersebut telah berakhir dan sukses, maka kita perlu menyatakan bahwa transaksi tersebut telah commit
Caranya itu dengan kita mengetikan perintah commit pada Command Line yang berlatar hitam, seperti gambar dibawah ini :  


Setelah itu kita coba tampilkan data di Command Line yang berlatar abu-abu, pasti datanya sudah bertamabah seperti yang ada di Command Line yang hitam.


SAVE POINT 

Save point dianalogikan seperti sebuah check point saat kita bermain game. 
Fungsi dari save point adalah supaya pada saat kita ingin rollback atau ada transaksi yang gagal, transaksi tidak berjalan dari awal kembali, tetapi dari save poin yang telah kita buat. 
Untuk membuat sebuah save point, caranya adalah : 
SAVEPOINT[nama save point]; 
Setelah dibuat save pointnya kita dapat rollback ke save point tersebut dengan cara : 
ROLLBACK TO[nama save point]; 


nah kurang lebih seperti itulah mungkin penjelasannya, mohon maaf atas segala kekurangan, terima kasih ...