• Tidak ada hasil yang ditemukan

Lock Based Protocol

Dalam dokumen DAFTAR ISI - System Manajemen Basis Data (Halaman 193-200)

Merupakan suatu cara/metoda yang digunakan untuk tetap menjaga serializability pada data yang diakses oleh lebih dari satu transaksi. Yaitu, apabila salah satu transaksi mengakses sebuah item data maka tidak akan ada transaksi yang dapat memodifikasi data tersebut. Metoda yang umum digunakan adalah mengijinkan transaksi terhadap suatu data X apabila transaksi tersebut memegang ―kunci‖ atau ―Lock‖ untuk dapat memodifikasi data X .

11.4.1 Lock

Terdapat dua mode-lock pada data:

1. Shared –mode lock (dinotasikan dengan S). yaitu, apabila transaksi T1

menambahkan shared- mode lock pada data Q, maka T1 dapat membaca

tetapi tidak dapat menulis/merubah data Q.

2. Exclusive – mode lock (dinotasikan dengan X).yaitu, apabila transaksi T1 menambahkan shared- mode lock pada data Q, maka T1 dapat

membaca dan atau menulis/merubah data Q.

S X

S Compatible Incompatible X Incompatible Incompatible

Tabel 13.1

Hal yang harus diperhatikan:

- Setiap transaksi harus meminta lock apabila akan melakukan operasi/mengakses terhadap suatu data. Misalkan data Q, mode-lock

- Transaksi meminta lock terhadap suatu data, kepada concurrency control manager.

- Operasi terhadap Q dapat dilakukan transaksi T apabila concurrency control manager memberikan grant (hak istimewa) lock yang diminta. - Beberapa shared mode-lock dari transaksi yang berbeda dapat

diterapkan terhadap data yang sama secara bersamaan( Dari tabel 1.1 shared mode-lock compatible dengan shared mode-lock yang lain), tapi ini tidak berlaku pada exclusive mode-lock (dari table 1.1 exclusive mode-lock adalah incompatible dengan exclusive mode-lock lain) . - Shared mode –lock dan exclusive mode-lock dari transaksi yang berbeda

tidak dapat diterapkan terhadap data yang sama secara bersamaan (Dari table 1.1 Shared mode-lock adalah incompatible dengan exclusive mode- lock, begitupun sebaliknya).

- Untuk melepaskan lock pada data Q dari transaksi T dapat dilakukan dengan menggunakan instruksi unlock secara eksplisit.

- Semua lock terhadap data akan terlepas pada saat transaksi berakhir. Transaksi berakhir pada saat COMMIT atau ROLLBACK dilakukan. Jika terjadi kegagalan pada transaksi, background process akan secara otomatis melakukan ROLLBACK semua perubahan data dari transaksi yang gagal dan melepaskan lock nya dari data.

Pada saat T2 akan mengakses suatu data Q yang sudah di lock oleh

transaksi lain T1 ( T1 <> T2 ) dengan mode-lock yang incompatible antara

kedua transaksi, maka concurrency control manager tidak akan memberikan grant lock ke T2 sebelum lock transaksi T1 terhadap data Q tersebut

dilepaskan /di-unlock .

Contoh Penerapan Lock dari dua buah transaksi:

- Transaksi pertama disimbolkan dengan T1. Yaitu transaksi transfer $50

dari rekening A ke rekening B dengan saldo semula A adalah $100 dan B adalah $200.

- Transaksi kedua disimbolkan dengan T2. Yaitu penjumlahan rekening

antara rekening A dan B. Dengan hasil dari penjumlahan kedua rekening tersebut baik sebelum maupun sesudah transaksi haruslah menghasilkan jumlah yang sama yaitu $300.

Misalkan transaksi transfer digambarkan dengan T1 dan transaksi

penjumlahan rekening digambarkan dengan T2 sbb:

T1 : lock-X(B); read(B); B := B - 50; write(B); unlock(B); lock-X(A); read(A); A := A + 50; write(A); unlock(A). T2 : lock-S(A); read(A); unlock(A); lock-S(B); read(B); unlock(B); display(A + B).

Dari kedua transaksi diatas, data segera di unlock setelah terjadi penulisan terhadap modifikasi data. Baik itu setelah terjadi modifikasi data A ataupun data B. Transaksi harus terus lock suatu data selama transaksi mengakses data tersebut. Tapi hal penting yang harus diperhatikan adalah transaksi tidak perlu selalu melakukan unlock terhadap data secara langsung setelah selesai mengakses data tersebut, terutama untuk tetap menjamin serializability.

Tabel penjadwalan 1 T1 T2 Conncurency control-manager Lock-X(B) Grant X(B,T1) Read (B) B:=B-50 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+50 Write (A) Unlock (A)

Jika transaksi T1 dan T2 digambarkan seperti di atas dilakukan secara

berurutan, T1 terlebih dulu dieksekusi kemudian T2, ataupun T2 terlebih

dahulu dan kemudian T1, maka hasil dari T2 adalah harus selalu $300. Dari

table penjadwalan diatas, T1 dilakukan bersamaan dengan T2, maka akan

terjadi kesalahan hasil dari transaksi T2, yaitu menghasilkan nilai $250. Hal

T3 : lock-X(B); read(B); B := B - 50; write(B); lock-X(A); read(A); A := A + 50; write(A); unlock(B); unlock(A). T4 : lock-S(A); read(A); lock-S(B); read(B); display(A + B); unlock(A); unlock(B).

Dari transaksi diatas, T3 korespondensi dengan T1 dengan waktu

unlock data ditunda dan T4 korespondensi dengan T2 dengan waktu unlock

ditunda. Dengan transaksi seperti diatas, kesalahan pada penjadwalan1 tidak akan terjadi.

11.4.2 Deadlock

Untuk tetap menjaga serializability dan consistency data pada saat terjadi beberapa transaksi, metode locking dapat digunakan. Namun metode locking dapat memungkinkan pada suatu keadaan yang tidak diinginkan.

T5 T6 Lock –X(C) Read (C) C:=C*1.1 Write (C) Lock –X(D) Read (D) D:=D*1.2 Write (D) Lock –S(C) Lock –S(D)

Dari contoh diatas dapat dilihat urutan prosesnya adalah sebagai berikut:

- T3 meminta exclusive mode-lock kepada concurrency control manager

dan T3 mendapatkan grant exclusive mode-lock terhadap data C. Maka

T3 dapat melakukan modifikasi /perubahan terhadap data C.

- T4 meminta exclusive mode-lock dan mendapatkan grant exclusive

mode-lock dari concurrency control manager terhadap data D sehingga kemudian dapat melakukan perubahan terhadap data D.

- T4 meminta shared mode-lock terhadap data C yang pada saat itu T3

sedang memegang exclusive mode-lock terhadap data C. Maka T4 harus

menunggu T3 untuk melepaskan lock pada data C. Karena kedua mode

lock tersebut adalah incompatible.

- Tetapi pada saat itu, T3 tidak melepaskan lock nya dari data C, melainkan

meminta shared mode-lock terhadap data D yang pada saat itu T4 sedang

memegang exclusive mode lock terhadap data D. dan karena kedua mode lock tersebut juga incompatible, maka T3 harus menunggu T4

melepaskan lock nya pada data D.

Keadaan diatas adalah keadaan yang disebut dengan deadlock. Pada saat ini terjadi maka cara yang harus dilakukan adalah salah satu transaksi harus rollback, sehingga transaksi yang melakukan rollback akan melepaskan lock nya pada data.

bahwa hal tersebut akan mengantarkan pada keadaan data yang tidak konsisten.

Jika dihadapkan pilihan apakah harus menghadapi deadlock atau data yang tidak konsisten, maka lebih baik memilih keadaan deadlock yang masih dapat dihadapi dengan cara rollback. Karena data yang tidak konsisten solusinya tidak dapat diatasi oleh system.

Keadaan deadlock dapat dihindari. Dengan adanya locking tidak menjamin keadaan serializability.Oleh karena itu, yang diperlukan adalah bahwa setiap transaksi harus mengikuti serangkaian aturan yang disebut dengan locking protocol. Aturan tersebut meliputi kapan transaksi harus melakukan lock atau unlock pada data tertentu dan membatasi jumlah penjadwalan yang mungkin. Salah satu locking protocol adalah two-phase protocol.

11.4.3 Two-Phase Protocol

Aturan dari two – phase protocol adalah bahwa setiap transaksi yang meminta untuk dapat melakukan lock atau unlock data terdiri dari dua fase: - Growing Phase, yaitu transaksi boleh melakukan lock terhadap data. - Shrinking Phase, yaitu transaksi boleh melakukan unlock terhadap

data, tetapi tidak boleh meminta untuk melakukan lock baru terhadap data.

Diinisialisasi diawal bahwa setiap transaksi melakukan growing phase. Transaksi diperbolehkan melakukan lock data yang diperlukan. Sekali saja transaksi tersebut melakukan unlock terhadap data, maka transaksi tersebut memasuki shrinking phase, yaitu tidak boleh lagi meminta untuk dapat melakukan lock data.

Pada saat terjadi beberapa transaksi, dimisalkan Ti dan Tj, dengan Tj

membaca data yang sebelumnya sudah pernah ditulis (dirubah) oleh Ti dan

sesaat setelah perubahan itu Ti belum melakukan COMMIT dan kemudian

terjadi kegagalan, maka yang harus dialkukan adalah cascading rollback. Cascading rollback adalah keadaan pada saat terjadi kegagalan pada

yang melakukan pembacaan dan atau penulisan data yang sama yang sebelumnya sudah pernah dirubah/ditulis oleh transaksi yang mengalami kegagalan dan belum COMMIT). Hal ini dapat terjadi pada two-phase protocol.

Untuk mencegahnya maka two phase locking protocol dikembangkan menjadi strict two phase locking protocol. Aturannya adalah:

- sama dengan aturan dari two phase locking protocol

- Untuk setiap exclusive mode-lock dipaksa harus dipegang oleh transaksi sebelum terjadinya COMMIT.

Dengan aturan tersebut akan memastikan bahwa data yang sudah ditulis oleh transaksi yang belum commit akan terus memiliki exclusive mode- lock sampai transaksi tersebut commit, sehingga dapat mencegah transaksi lain untuk membaca data tersebut.

Metode lain untuk memenuhi kebutuhan serializability adalah memilih urutan diantara transaksi-transaksi adalah dengan metode skema timestamp ordering.

Time stamp protocol adalah suatu ketentuan yang mengatur agar beberapa transaksi yang terjadi bersamaan tetap menjamin serializability dengan memberikan prioritas pada setiap transaksi berdasarkan waktu yang sudah ditentukan.

Dalam dokumen DAFTAR ISI - System Manajemen Basis Data (Halaman 193-200)