Bismillah...

Pengendalian Persaingan


> Persaingan Eksekusi Transaksi
  >> Concurrency : banyak transaksi yang dijalankan secara bersamaan.
  >> Hampir semua DBMS adalah multiuser, sehingga berpeluang terjadinya inkonsistensi basis data. Maka perlu adanya pengendalian persaingan eksekusi transaksi (concurrency control).

  >> Alasan mengapa transaksi yang konkuren banyak dipilih dibandingkan transaksi secara serial:
     # Idle time (waktu tunggu) kecil.
     # Response time (waktu tanggap) lebih baik

> Serializability : kemampuan untuk mengupayakan terjadinya kesamaan antara schedule yang konkuren dengan schedule yang serial

Yang harus diperhatikan adalah operasi read dan write.
Operasi read dan write hanya akan terjadi pada ruang memori utama (buffer) dan tidak mengakibatkan adanya perubahan terhadap isi basis data di dalam disk.

> Ada dua cara yang dapat dipilih untuk mengetahui ekivalensi antara sebuah schedule konkuren dengan schedule serial,yaitu :

   >> Conflict Serializalibility
yaitu kasus transaksi dimana terjadi overlapping (ada transaksi yang dijalankan ketika transaksi lain sedang berjalan) dalam pengeksekusian transaksi-transaksi yang ada.

Konflik terjadi bila :
 # Ada dua operasi Oi dan Oj pada penjadwalan S dimana keduanya mengakses data yang sama, dan
 # Setidaknya ada satu operasi yang melakukan write()

write(A) pada T0 mengalami konflik dengan read(A) pada T1 karena keduanya mengakses data yang sama (A) dan terdapat operasi write(A).
Namun, write(A) pada T1 tidak mengalami konflik dengan read(B) pada T0, karena walaupun ada operasi write(A) tetapi keduanya mengakses data yang berbeda.

Dalam kasus dimana tidak terjadi konflik antar dua operasi, maka dapat dilakukan swapping sehingga terbentuk penjadwalan baru S' yang urutannya sama dengan penjadwalan serial
Pada contoh tersebut swapping yang dapat dilakukan adalah:
Swap write(A) pada T1 dengan read(B) pada T0
Swap read(B) pada T0 dengan read(A) pada T1
Swap write(B) pada T0 dengan write(A) pada T1
Swap write(B) pada T0 dengan read(A) pada T1

Maka, akan didapat penjadwalan baru S' yang merupakan penjadwalan serial. Penjadwalan demikian dinamakan conflict serializable, sedangkan proses penyusunan penjadwalan baru yang serial disebut serialisasi.

   >> View Serializability
Bentuk ekivalensi dalam pendekatan ini lebih longgar dibandingkan pendekatan sebelumnya (conflict serializability), walaupun analisanya masih tetap didasarkan pada dua operasi utama (read dan write).
Menurut pendekatan ini, jika S merupakan schedule serial, maka S’ untuk himpunan transaksi yang dapat dikatakan view equivelant dengan S jika ketiga ketentuan dibawah ini terpenuhi :

Untuk setiap item data Q, jika transaksi Ti membaca nilai awal dari Q pada schedule S, maka transaksi Ti pada schedule S’ juga harus membaca nilai awal dari Q.
Untuk setiap item data Q, jika transaksi Ti menjalankan operasi read(Q) di schedule S untuk nilai Q yang telah ditulis oleh transaksi Tj, maka hal itu juga terjadi di schedule S’
Untuk setiap item data Q, jika transaksi Ti menjalankan operasi write(Q) terakhir pada schedule S, maka transaksi Ti pada schedule S’ juga harus menjalankan operasi write(Q) terakhir.

> Identifikasi Transaksi dalam SQL
Pentingnya identifikasi adanya blok transaksi pada sekumpulan operasi basis data, khususnya dalam melakukan perubahan isi basis data, maka bahasa basis data (query language) mesti memiliki perintah (command) yang berhubungan dengan blok transaksi
Dalam bahasa SQL, awal transaksi diidentifikasikan secara implisit (yang dimulai dari adanya perintah SQL), tetapi identifikasi akhir transaksi harus dinyatakan secara eksplisit dengan menggunakan salah satu dari kedua perintah berikut :

Commit Work atau Commit saja, berfungsi untuk mengubah transaksi dari status berhasil sebagian (partially commited) ke status berhasil sempurna (commited), sehingga transaksi dianggap berakhir dan siap memulai transaksi yang baru.
Rollback Work atau Rollback saja, yang menyebabkan terjadinya pembatalan transaksi (transaksi berpindah ke status batal / aborted).

Pengendalian Konkurensi (Concurency Control)
Salah satu karakteristik dasar dari sebuah transaksi yang harus dipenuhi adalah Isolasi, yang menjamin tereksekusinya semua transaksi pada sebuah sistem konkuren dengan benar sehingga konsistensi basis data dapat tetap terpelihara.

> Concurency-Control
  >> Lock Based Protocol
    # Salah satu cara menjamin serializabiliy adalah dengan mensyaratkan bahwa akses item-item data harus dilakukan dengan menerapkan eksklusivitas.
    # Artinya, selama sebuah transaksi sedang mengakses sebuah item data, maka tidak ada transaksi lain yang boleh melakukan perubahan terhadap item data tersebut.
    # Metode yang umum digunakan untuk mengimplementasikan hal ini adalah dengan kewajiban melakukan penguncian pada suatu item data sebelum data tersebut diakses.

Mode Penguncian Dasar
    # Bersama (Shared): Jika sebuah transaksi Ti dapat melakukan penguncian dengan mode ini (dilambangkan dengan S) terhadap item data Q, maka Tj dapat membaca, tapi tidak dapat mengubah nilai Q tersebut.
    # Tunggal (Exclusive).
Jika sebuah transaksi Tj dapat melakukan penguncian dengan mode ini (dilambangkan dengan X) terhadap item data Q, maka Ti dapat membaca maupun mengubah nilai Q tersebut.
Setiap transaksi harus mengajukan permintaan penguncian (locking) dengan mode tertentu terhadap data Q, sesuai jenis operasi yang akan dilakukan transaksi.
Permintaan ini akan dilayani oleh modul Concurency-Control dalam sebuah DBMS.
Transaksi tersebut baru dapat melanjutkan/mengerjakan operasi terhadap item data Q tersebut, jika modul ini telah menyerahkan hak penguncian terhadap item data Q kepada transaksi tersebut.
Bila suatu transaksi hanya melakukan pembacaan saja, secara otomatis ia memerlukan kunci S ? baca (S)
Bila transaksi tersebut ingin memodifikasi record maka secara otomatis ia memerlukan kunci S ? memodifikasi(X)
Bila transaksi tersebut sudah menggunakan kunci S, setelah itu ia akan memodifikasi record, maka kunci S akan dinaikan ke level kunci X.
Kunci X dan kunci S akan dilepaskan pada saat synchpoint (synchronization point).  Synchpoint menyatakan akhir dari suatu transaksi dimana basis data berada pada state yang konsisten.  Bila synchpoint ditetapkan maka:
Semua modifikasi program menjalankan operasi commit atau rollback.
Semua kunci dari record dilepaskan.

  >> Time Stamping
    # Salah satu alternatif concurrency control yang dapat menghilangkan deadlock adalah time stamping.
    # Secara umum, timestamping (TS) adalah  penanda waktu saat transaksi terjadi.  Hal ini untuk mengurutkan eksekusi transaksi agar sama dengan eksekusi serial.

Time stamp dapat berupa:
    # waktu sistem saat transaksi dimulai,
    # penghitung logik (logical counter) yang terus bertambah nilainya tiap kali terjadi transaksi baru

Jika timestamp transaksi a lebih kecil daripada timestamp transaksi b , atau TS(Ta) < TS(Tb),  maka transaksi a (Ta) selalu dilaksanakan sebelum transaksi b (Tb).

Selain transaksi, item data juga memiliki nilai time stamp. Untuk setiap item data Q, ada 2 nilai time stamp, yaitu:
    # Read time stamp atau R-timestamp(Q), yang menunjukkan nilai TS terbesar dari setiap transaksi yang berhasil menjalankan operasi read(Q).
    # Write time stamp atau W-timestamp(Q), yang menunjukkan nilai TS terbesar dari setiap transaksi yang berhasil menjalankan operasi write(Q).

> Time-stamping Ordering Protocol

Protokol ini menjamin bahwa tiap operasi read dan write yang memiliki konflik dieksekusi sesuai urutan TS.
    # Untuk transaksi Ta yang menjalankan operasi read(Q)
Jika TS(Ta) < W-TS(Q) maka transaksi Ta perlu membaca kembali nilai Q yang telah ditulis dan transaksi Ta akan dibatalkan (rollback).
Jika TS(Ta) = W-TS(Q) maka operasi read dieksekusi, dan R-TS(Q) diisi dengan nilai terbesar diantara TS(Ta) dan R-TS(Q).

    # Untuk transaksi Ta yang menjalankan operasi write(Q):
jika TS(Ta) < R-TS(Q) maka nilai Q yang baru dihasilkan Ta tidak akan dimanfaatkan lagi, dan sistem berasumsi bahwa nilai tersebut tidak pernah dihasilkan.  Karena itu operasi write ditolak, dan transaksi Ta di rollback.
TS(Ta) < W-TS(Q) maka itu berarti transaksi Ta sedang berusaha melakukan penulisan nilai Q yang kadaluarsa.  Maka operasi wrwite ini akan ditolak dan transaksi Ta akan di rollback.
Di luar kondisi a dan b di atas, operasi write dieksekusi dan W-TS(Q) diberi nilai baru yang sama dengan TS(Ta).

Terhadap transaksi Ta yang di rollback, akan diberikan sebuah timestamp yang baru dan diulang kembali.
Properti timestamp:
    # Uniqueness : masing-masing timestamp suatu transaksi adalah unik.
    # Monotonicity : 2 timestamp yang dihasilkan transaksi yang sama meningkat secara monoton.

Cara pemberian nilai timestamp:
    # Global (systemwide) monotonically increasing number
    # Local (site) monotonically increasing number.

Untuk menggambarkan protokol ini, kita memperhatikan transaksi T7 dan T8. Transaksi T7 menampilkan nilai saldo rekening A dan B dan didefinisikan sbb:
T7 : read (B)
read (A)
       display (A+B)

Transaksi T8 yang mentrasfer dari rekening A ke rekening B dan kemudian menampilkan isi keduanya.
T8 : read (B)
 B ? B – 100000
 write (B)
 read (A)
 A ? A + 100000
 write (A)
 display (A+B)