Sunday, November 29, 2015

Transaksi dan Concurrency

TRANSAKSI & CONCURRENCY



1.      Transaksi

Transaksi merupakan aktivitas yang dilakukan oleh suatu program aplikasi yang berfungsi untuk menjaga konsistensi keamanan data. Tujuan dari transaksi yaitu untuk melindungi database dari kehilangan / kerusakan data.Transaksi memiliki 4 elemen untuk menjaga integritas data. Adapu 4 elemen tersebut :
·         Atomicity, dimana semua operasi dalam transaksi dapat dikerjakan seluruhnya atau tidaksama sekali.
·         Consistency,  dimana  eksekusi  transaksi  harus  dapat  menjamin  data  tetap  konsisten setelah transaksi berakhir.
·         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 berakhir.
·         Durability, dimana perubahan data yang terjadi setelah sebuah transaksi berakhir dengan baik, harus dapat bertahan bahkan jika seandainya sistem mati.

Dua Operasi Penting Transaksi :

·         Commit
Memberi tanda bahwa transaksi telah selesai. Update dibuat permanen (bahkan jika setelah commit terjadi kegagalan system).
·         Rollback
Memberi tanda bahwa transaksi GAGAL.

2.      Concurrency

Concurrency adalah banyaknya transaksi yang dijalankan secara bersamaan dalam satu waktu. DBMS mengijinkan banyak transaksi pada saat bersamaan untuk mengakses data yang sama. Concurrency Control Mechanism (CCM) dibutuhkan agar transaksi tidak saling “menggangu”.

Adapun 3 masalah concurrency adalah :

·         Lost Update Problem


·         Uncommitted Dependency Problem


·         Incosistent Analysis Problem



Locking

Locking terjadi jika suatu transaksi ingin record atau resource tidak berubah dalam waktu tertentu

Jenis Lock
·         Exclusive Lock (Xlock) atau write lock yaitu locking yang hanya bisa di gunakan untuk mengupdate dan membaca transaksi
·         Shared Lock (Slock) atau read lock yaitu locking yang hanya bisa di gunakan untuk membaca transaksi.

Contoh kasus dari locking :
·         Jika transaksi A memegang Xlock pada sebuah record, maka permintaan lock (X,S) pada record yang sama harus diabaikan.
·         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
·         Transaksi yang ingin  mengambil nilai sebuah record  (retrieve) harus mendapat Slock pada record tersebut
·         Transaksi yang ingin mengupdate, harus mendapat Xlock

Contoh kasus :
·         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.
·         Xlock dan Slock dipegang sampai transaksi selesai (COMMIT atau ROLLBACK).

Lost Update Problem dengan LOCK


Uncommitted Dependency Problem dengan LOCK


Incosistent Analysis Problem dengan LOCK


Dead Lock

Dead lock adalah situasi dimana dua atau lebih transaksi dalam kondisi wait-state, satu sama lain menunggu lock dilepaskan sebelum dapat memulai
Contoh Deadlock

Penanganan Deadlock
·         Deteksi dan pecahkan deadlock
·         Deteksi deadlock > wait-for-graph
·         Pecahkan deadlock > salah satu dirollback paksa (bagaimana penanganan rollback ini?)
·         Ostrich Algorithm  > diabaikan

Referensi :
- Modul 10554_pengantar_basis_data.pdf
- Hand Out Sistem Basis Data: Transaksi & Concurrency oleh Yudi Wibisono, MT
- https://prithaangelina.wordpress.com/2013/05/19/concurrency/
- http://perdiarief.blogspot.co.id/2014/11/praktikum-simbada-transaksi.html
- http://nfirdausi.blogspot.co.id/2014/04/transaksi-simbada.html

No comments:

Post a Comment