Tempat tertimbunnya tulisan - tulisan akibat kejangaran ngoding

26 November 2015

Transaksi dan Concurency

hallo agan-agan semua, saya bakal posting lagi nih nerusin yang barusan di posting mengenai integritas data. nah sekarang saya bakal sedikit membahas tentang Transaksi dan Concurency.
oke kita langsung aja ke TKP. 

Transaksi adalah sebuah eksekusi program yang menjalankan perintah dan mungkin dapat mengupdate atau mendelete suatu item. 

Concurency adalah banyaknya transaksi yang dijalankan secara bersamaan dalam waktu yang sama. Semua DBMS biasanya multiuser atau dapat diakses oleh lebih dari satu user dalam waktu yang sama sehingga berpeluang terjadinya ketidak konsistenan data. Maka dari itu untuk menghindari kemungkinan tersebut dibutuhkan adanya pengendali atau controller untuk mengendalikan transaksi-transaksi yang sedang berjalan. 

Dalam Konsep transaksi di database harus di penuhi empat sifat database agar integritas database tetap terjaga. Adapun keempat sifat tersebut adalah:\
  1. Atomicity: Setiap transaksi harus dijamin untuk dapat sukses dalam melakukan aksinya atau jika gagal , maka tidak berpengaruh apapun terhadap database. 
  2. Consistency: Setiap transaksi adalah sebuah aksi kombinasi secara logikal dari sebuah state database yang konsisten ke state yang lain dengan tetap menjaga kekonsisten-an database tersebut. 
  3. 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 . (level transparansi transaksi dapat di set). 
  4. Durability: Setelah sebuah transaksi sukses dilakukan, perubahan-perubahan yang dibuatnya terhadap database bersifat permanen, bahkan jika terjadi kegagalan sistem sekalipun. 
Dua operasi penting  dalam 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. Semua perubahan pada data harus dikembalikan ke kondisi awal sebelum perubahan (Transaksi harus diulang).
Hambatan dalam Concurency :
  1. Lost Update Problem : Terdapat dua atau lebih transaksi yang melakukan perubahan pada data maka akan sulit diketahui perubahan apa saja yang terjadi pada data.
  2. Uncommitted dependency problem : Terdapat dua atau lebih transaksi dimana salah satu transaksi melakukan perubahan pada data lalu data tersebut diakses oleh transaksi lain tetapi data tersebut dirollback ke kondisi semula oleh transaksi pertama.
  3. Incosistent analysis problem
Solusi untuk mengatasi permasalahan tersebut adalah sebagai berikut :
  • Lock 
Lock dibagi menjadi 2 :
  1. Exclusive Lock (Xlock) à write lock yaitu Jika transaksi A memegang Xlock pada sebuah record, maka permintaan lock (X,S) pada record yang sama harus diabaikan.
  2. Shared Lock (Slock) à read lock, yaitu Jika transaksi A memegang Slock pada record R maka: Permintaan Xlock trans. lain pada R ditolak, Permintaan Slock trans. lain pada R diterima.
  •     Data Access Protocol
  1. Transaksi yang ingin  mengambil nilai sebuah record  (retrieve) harus mendapat Slock pada record tersebut.
  2. Transaksi yang ingin mengupdate, harus mendapat Xlock.
  3. Jika lock dari transaksi B ditolak karena konflik dengan lock yang dimiliki transaksi A, transaksi B masuk ke wait state sampai lock milik A dibebaskan.
  4. Xlock dan Slock dipegang sampai transaksi selesai (COMMIT atau ROLLBACK).
  • Deadlock
Situasi dimana dua atau lebih transaksi dalam kondisi wait-state, satu sama lain menunggu lock dilepaskan sebelum dapat memulai.

Penggunaan Deadlock :
  1. Deteksi dan pecahkan deadlock
  2. Deteksi deadlock a wait-for-graph
  3. Pecahkan deadlock a salah satu dirollback paksa
  4. Ostrich Algorithm a diabaikan
  • Isolation Level 
Derajat pengaruh antar transaksi. Tertinggi : serializable (sama sekali tidak saling mempengaruhi, seolah-olah dikerjakan secara berurutan)

Nah mungkin cukup sekian postingan saya mengenai Transaksi dan Concurency. Semoga bermanfaatt :) 

No comments:

Post a Comment