TRANSAKSI DAN PENGENDALIAN PERSAINGAN

Download Report

Transcript TRANSAKSI DAN PENGENDALIAN PERSAINGAN

TRANSAKSI DAN
PENGENDALIAN PERSAINGAN
PART 2
Serializability
 Cara yang alamiah untuk memelihara
konsistensi dalam sistem yang mengakomodasi
pelaksanaan transaksi secara bersamaan
(concurency system) adalah mengupayakan
agar hasil pemrosesan sekumpulan transaksi
yang sedang bersaing (dieksekusi bersamasama) dalam satu kesatuan proses sama saja
dengan yang dihasilkan dengan menjalankan
transaksi-transaksi tersebut secara
berurutan/serial dengan urutan tertentu.
Serializability (cont…)
 Kemampuan untuk mengupayakan terjadinya
kesamaan antara schedule yang konkuren
dengan schedule yang serial disebut
Serializability.
 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.
Contoh
 Schedule 3 yang disederhanakan.
T1
T2
read (A)
write (A)
read (A)
write (A)
read (B)
write (B)
read (B)
write (B)
Serializability (cont….)
Ada dua cara yang dapat dipilih untuk
mengetahui ekivalensi antara sebuah
schedule konkuren dengan schedule
serial,yaitu :
1. Conflict Serializability
2. View Serializability
Conflict Serializalibility
 Pada kasus dimana terjadi overlapping (ada
transaksi yang dijalankan ketika transaksi lain
sedang berjalan) dalam pengeksekusian
transaksi-transaksi yang ada, maka
penjadwalan tersebut disebut penjadwalan nonserial. Penjadwalan demikian tidak selalu
menghasilkan hasil eksekusi yang salah (bisa
benar bila hasilnya sama dengan hasil
penjadwalan serial). Penjadwalan non-serial
yang menghasilkan eksekusi yang benar disebut
conflict serializable
Conflict Serializalibility
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()
Contoh Penjadwalan Non-Serial (
Concurrent Serializable Schedule)
 T0
Read (A)
Write (A)
T1
Read (A)
Write (A)
Read (B)
Write (B)
Read (B)
Write (B)
Conflict Serializalibility
Pada contoh tersebut, 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.
Conflict Serializalibility
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:
Conflict Serializalibility
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
Conflict Serializalibility
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 Serializabilty
 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 :
View Serializabilty
1.
2.
3.
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.
Identifikasi Transaksi dalam SQL
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 :
Identifikasi Transaksi dalam SQL
1. 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.
2. 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.
 Sangatlah penting untuk mengendalikan
interaksi antara transaksi-transaksi yang sedang
bersaing (konkuren), melalui sebuah mekanisme
yang disebut dengan mekanisme pengendalian
konkuren (Concurency Control).
Concurency-Control
1.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.
Mode Penguncian Dasar (cont…1)
 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.
Tabel Kunci
X
S
X
N
N
Y
S
N
Y
Y
Y
Y
Y
Mode Penguncian Dasar (cont…2)
 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.
Mode Penguncian Dasar (cont…3)
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.
Contoh Lock Based Protocol
Dua buah transaksi T1 dan T2 .
T1 berfungsi melakukan pentransferan
dana dari rekening B ke rekening A
sebesar Rp. 100.000,-.
Dengan menyertakan perintah-perintah
penguncian, maka operasi dalam
transaksi T1 dapat kita sajikan sbb :
Contoh Lock Based Protocol
 T1 : lock-X(B)
read(B)
B ← B – 100000
write(B)
unlock(B)
lock-X (A)
read(A)
A ← A + 100000
write(A)
unlock(A)
Contoh Lock Based Protocol
 Transaksi T2 hanya menampilkan total saldo
dari kedua rekening tersebut, A dan B kita
nyatakan :
T2 : lock-S(A)
read(A)
unlock(A)
lock-S(B)
read(B)
write(B)
display (A+B)
Contoh Lock Based Protocol
T1
T2
Modul Concurency Control
lock-X (B)
grant-X(B, T1
Read(B)
B ← B – 100000
Write(B)
Unlock (B)
Lock-S(A)
grant-S (A, T2)
read (A)
unlock(A)
lock-S(B)
grant-S (B, T2)
read(B)
unlock(B)
display (A+B)
Lock-X(A)
grant-X(A, T1)
Read(A)
A ← A + 100000
Write(A)
Unlock(A)
Keterangan :
 Schedule di atas menunjukkan aksi-aksi dan
juga dilaksanakan oleh kedua transaksi tsb dan
juga titik dimana hak penguncian diberikan oleh
modul Concurency Control dalam DBMS.
 Schedule konkuren di atas menghasilkan
informasi yang tidak akurat, maka kita akan
melakukan perubahan pada letak perintah
pelepasan penguncian (unlock) dengan
menundanya hingga akhir transaksi.
Transaksinya menjadi T3 dan T4
T3 : lock-X(B)
read(B)
B ← B – 100000
write(B)
Lock-X(A)
read(A)
A ← A + 100000
write (A)
unlock (B)
unlock (A)
 T4 : lock-S (A)
read (A)
lock-S (B)
read (B)
write (B)
unlock (A)
unlock (B)
display (A+B)
Jika kedua transaksi tersebut dieksekusi
secara konkuren dengan potongan
schedule sbb:
T3
lock-X(B)
read(B)
B ← B – 100000
write(B)
T4
lock-S (A)
read (A)
lock-S (B)
lock-X (A)
---------
-------------
Secara teoritis, schedule ini akan
memberikan hasil yang akurat sesuai
dengan hasil yang diberikan oleh schedule
serial.
Schedule di atas tidak dapat dilakukan
dengan tuntas, karena mengalami kondisi
deadlock
2. 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 Stamping (cont….)
Time stamp dapat berupa:
1. waktu sistem saat transaksi dimulai,
2. penghitung logik (logical counter) yang
terus bertambah nilainya tiap kali terjadi
transaksi baru.
Time Stamping (cont….1)
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).
Contoh Time Stamping
 Misal rekaman pada basis data memuat TS 168, yang
mengidentifikasikan transaksi dengn TS 168 adalah
transaksi yang terkemudian yang sukses mengupdate
rekaman yang bersangkutan. Maka jika ada transaksi
dengan TS 170 mencoba mengupdate rekaman yang
sama, maka update ini akan diijinkan, karena TS yang
dimiliki lebih kemudian dari TS pada rekaman. Saat
transaksi ini dilakukan, TS pada rekaman akan diatur
menjadi 170. Sekarang, jika transaksi yang akan
mengupdate rekaman tersebut memiliki TS 165, maka
update ditolak karena TS-nya < TS di rekaman.
Time Stamping (cont….2)
 Selain transaksi, item data juga memiliki nilai
time stamp. Untuk setiap item data Q, ada 2 nilai
time stamp, yaitu:
1.Read time stamp atau R-timestamp(Q), yang
menunjukkan nilai TS terbesar dari setiap
transaksi yang berhasil menjalankan operasi
read(Q).
2.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.
1. 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).

Time-stamping Ordering Protocol
(cont…1)
2.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).
Time-stamping Ordering Protocol
(cont…2)
Terhadap transaksi Ta yang di rollback,
akan diberikan sebuah timestamp yang
baru dan diulang kembali.
Properti timestamp:
1. Uniqueness : masing-masing timestamp suatu
transaksi adalah unik.
2. Monotonicity : 2 timestamp yang dihasilkan
transaksi yang sama meningkat secara
monoton.
Time-stamping Ordering Protocol
(cont…3)
Cara pemberian nilai timestamp:
1. Global (systemwide) monotonically
increasing number
2. Local (site) monotonically increasing
number.
Time-stamping Ordering Protocol
(cont…3)
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)
Time-stamping Ordering Protocol
(cont…4)
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)
Time-stamping Ordering Protocol
(cont…5)
Dalam menentukan schedule dengan
protokol timestamp, kita mengasumsikan
bahwa sebuah transaksi diberikan sebuah
timestamp segera sebelum instruksi
pertama.
Karena itu, dalam schedule berikut ini,
TS(T7) < Ts(T8) dan schedule ini mungkin
dieksekusi dengan menggunakan protokol
Timestamping Ordering.
Time-stamping Ordering Protocol
(cont…6)

T7
T8
read (B)
read (B)
B ← B – 100000
write (B)
read (A)
read (A)
Display (A+B)
A ←A + 100000
write (A)
display (A+B)