Transaksi dan Concurrency

      Transkasi merupakan perubahan yang terjadi pada basis data. Apa tujuan dari dilakukannya pengelolaan transaksi dalam sistem basis data? Tujuannya yakni melindungi basis data dari kerusakan dan kehilangan data. Apabila kita mengirim suatu transaksi ke database, maka akan terjadi dua kemungkinan yakni:
  1. Seluruh transaksi selesai.
  2. Tidak satu pun dari transaksi tu yang selesai.
       Dalam pengelolaan transaksi terdapat dua operasi yang sangat penting, yang pertama ialah commit maksudnya transaksi telah selesai dan telah permanen. Yang kedua yakni rollback maksudnya apabila proses transaksi gagal maka semua proses yang telah dilakukan sebelumnya harus di-undo. Ketika data telah di commit maka data tersebut tidak dapat di rollback lagi. Dalam transaksi terdapat empat elemen yang disingkat ACID.
  • Atomicity, Jika semua operasi pada sebuah transaksi sukses maka transaksi dianggap sukses, jika salah satu operasi pada suatu transaksi gagal maka transaksi dianggap gagal.
  • Consistency, transaksi menjaga konsistensi database. 
  • Isolation, meskipun ada beberapa transaksi yang berlangsung bersamaan, masing-masing transaksi tidak boleh mengetahui transaksi lain yang sedang berlangsung. Hasil transaksi sementara harus disembunyikan dari transaksi lain yang sedang berlangsung. 
  • Durability, setelah sebuah transaksi sukses dilakukan, perubahan-perubahan yang dibuatnya terhadap database bersifat permanen, bahkan jika terjadi kegagalan sistem.
Dalam transaksi juga dikenal istilah checkpoint. Checkpoint adalah interval tertentu pada perjalanan transaksi basis data yang menyimpan keadaan basis data saat itu. Checkpoint dapat dilakukan untuk me-recovery database secara backward (undo) ataupun forward (redo). Dalam transaksi juga dikenal istilah isolation level. Isolation sendiri merupakan elemen utama dari transaksi. Dalam transaksi ada tiga hal yang harus dapat berjalan: 
  1. Dirty Read, yakni dapat melihat atau membaca data dari transaksi lain yang telah dirollback atau belum di commit. Kedua transaksi tersebut berjalan bersamaan.
  2. Nonrepeatable Read, yakni membaca atau melihat ulang data yang sebelumnya telah dibaca karena data tersebut telah dimodifikasi oleh transaksi yang lain.
  3. Phantom Read, yakni transaksi membaca sebuah data yang telah hilang akibat dari transaksi yang lainnya.
Untuk mencegah hal – hal tersebut, Oracle menyediakan fitur-fitur sebagai berikut:
  • Read Commited. Yakni transaksi hanya dapat melihat perubahan data setelah transaksi lain telah commit  pada data tersebut.
  • Serializable. Untuk mencegah terjadinya phantom read. Serializable ini 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;
    Berlanjut ke materi tentang concurrency, yakni proses pemakaian data secara bersama-sama. Risikonya pemakaian data bisa saling mengganggu. Concurrency juga bisa diartikan kondisi dimana Database Management System mengizinkan banyak transaksi pada waktu yang sama dan mengakses data yang sama. Maka dari itu dibutuhkan Concurrency Control System untuk mengontrol agar transaksi tidak saling mengganggu. Ada tiga masalah utama dalam concurrency yakni Lost update problem, uncommitted dependency problem, dan inconsistent analysis problem. 

   Lost update problem adalah kondisi ketika dua user mengupdate dua buah data yang sama. Sebagai contoh apabila ada dua calon penumpang yang melakukan pemesananan tiket namun hanya calon penumpang pertama yang berhasil memesan tiket. Atau untuk lebih rinci, ada dua calon penumpang yang sedang memproses reservasi tiket kereta api via online, mereka telah sampai pada tahap memilih kursi. Salah satu diantara mereka satu kursi pada saat bersamaan. Maka hanya satu yang dapat memilih kursi tersebut sedangkan yang lain tidak bisa memilih kursi tersebut. 

   Uncommited dependency problem yakni kondisi ketika user yang satu me-retrieve data dan user yang lain me rollback data tersebut. Sebagai contoh pada kasus pemesanan tiket kereta api, terdapat dua calon penumpang secara bersamaan memesan tiket. Namun ketika salah satu calon penumpang melakukan pembatalan sehingga harus di rollback dan transaksi yang dilakukan oleh calon penumpang kedua ikut rollback. 

   Inconsistent analysis problem yakni suatu kondisi ketika user yang satu meretrieve data dan user yang lain mengupdate data tersebut. Setelah cukup panjang dibahas tentang concurrency masih ada beberapa hal lain yang berkaitan dengan concurrency yakni locking. 

Locking artinya pengucian. Dalam basis data locking maksudnya kondisi jika sebuah transaksi ingin record tidak berubah dalam waktu tertentu maka user meminta lock. Ketika satu transaksi mengakses database, sebuah kunci (lock) dapat mengabaikan akses untuk transaksi lainnya, untuk menghindari hasil yang salah.  Terdapat dua jenis locking, yakni:
  • X-Lock : Bagi transaksi yang memiliki exclusive lock pada suatu data, transaksi tersebut dapat melakukan perubahan dan pembacaan terhadap data itu.
  • S-Lock : JIka transaksi memiliki locking jenis ini, maka transaksi tersebut hanya dapat melakukan pembacaan data.
Exclusive Lock hanya dapat dimiliki oleh satu transaksi pada waktu yang bersamaan berbeda dengan Shared Lock dapat dimiliki oleh beberapa transaksi pada saat yang bersamaan. Dalam locking juga terdapat masalah utama yakni deadlock. 
Ilustrasi Deadlock
    Deadlock sendiri merupakan suatu kondisi dimana dua atau lebih transaksi dalam keadaan wait-state atau saling menunggu lock untuk dilepas. Ada beberapa solusi alternatif untuk penanganan deadlock diantaranya deteksi dan pecahkan deadlock selain itu bisa juga menggunakan ostrich algorithm. Dikutip dari Wikipedia, ostrich algorithm adalah strategi mengabaikan masalah yang mungkin terjadi atas dasar bahwa masalah itu mungkin sangat jarang terjadi. Pendekatan ini dapat digunakan dalam menangani deadlock pada pemrograman concurrent jika deadlock diyakini sangat jarang terjadi, dan jika biaya untuk mendeteksi atau pencegahan lebih tinggi. Klik ini untuk kembali ke daftar isi atau klik ini untuk masuk ke materi selanjutnya.

Transaksi dan Concurrency Transaksi dan Concurrency Reviewed by Muhamad Kurniawan on 11/25/2015 11:15:00 PM Rating: 5

No comments:

Copyright 2013. M.Kurniawan. Powered by Blogger.