KONKURENSI BASIS DATA

11 KONKURENSI BASIS DATA

Overview

Transaksi dalam basisdata bisa berjalan lebih dari satu dalam waktu yang hampir bersamaan (konkuren). Diperlukan penjadwalan dan aturan-aturan (protocol) yang harus dipatuhi oleh transaksi-transaksi tersebut untuk tetap menjaga agar data konsisten dan dalam keadaan serializability dengan menghindari terjadinya kendala pengaksesan data yang salah satunya adalah deadlock.

Tujuan

1. Mahasiswa memahami konsep transaksi dan properti transaksi yang harus dijamin oleh DBMS.

2. Mahasiswa memahami konsep penjadwalan dan serializability.

3. Mahasiswa memahami konsep locking protocol.

11.1 Transaksi

Transaksi adalah satu unit pekerjaan lojik yang terdiri dari serangkaian aksi atau operasi, dengan keseluruhan aksi atau operasi tersebut harus sukses dijalankan atau gagal seluruhnya.

Di dalam DBMS, transaksi terdiri dari pernyataan DML yang membuat perubahan konsisten pada suatu data. Misalkan, dalam kegiatan transfer dana dari rekening A terhadap rekening B . Maka yang seharusnya terjadi adalah proses pengurangan dana pada rekening A dan proses penambahan dana dengan jumlah yang sama pada rekening B.

Sebuah transaksi basisdata terdiri dari:

1. Pernyataan-pernyataan DML yang menyebabkab satu perubahan konsisten pada data (Data Manipulation Language)

2. Satu pernyataan DDL (Data Definition Language)

3. Satu pernyataan DCL (Data Control Language)

Untuk menjamin integritas data, sangat diharuskan bagi sistem basis untuk tetap menjaga properti-properti berikut pada transaksi:

Atomicity. Basisdata harus mencerminkan dengan benar seluruh operasi transaksi atau tidak sama sekali. Dari contoh diatas, yaitu transaksi transfer antar dua rekening, jika proses pengurangan rekening A telah dieksekusi dan kemudian terjadi kegagalan sehingga penambahan rekening di B belum dieksekusi, maka proses pengurangan dana di rekening A dibatalkan dan dianggap proses transaksi tersebut tidak dilakukan sama sekali.

Consistency. Segala perubahan yang konsisten pada basisdata mencerminkan dan sesuai dengan yang seharusnya terjadi dalam dunia nyata.

Isolation. Walaupun beberapa transaksi dieksekusi secara hampir bersamaan, sistem harus menjamin bahwa proses transaksi yang satu tidak mengganggu proses transaksi yang lainnya. Sehingga seolah-olah transaksi satu dieksekusi setelah transaksi lain berakhir dieksekusi.

Durability. Setelah transaksi selesai dengan sukses, maka perubahan data dalam basisdata adalah permanen, walaupun terjadi kegagalan.

Konkurensi Basis Data 187

11.2 Penjadwalan

Sangat dimungkinkan terjadi lebih dari satu transaksi berjalan dan dieksekusi hampir bersamaan (konkuren). Maka diperlukan suatu penjadwalan untuk menjaga konsistensi dari data.

Jika dimisalkan ada dua transaksi yang harus dijalankan: -

Transaksi yang disimbolkan dengan T i adalah proses transfer dana dari rekening A ke rekening B sejumlah $200. Dengan rekening awal A adalah $1000 dan rekening awal B adalah $1500.

- Dan transaksi yang lain adalah transaksi yang disimbolkan dengan T j , yaitu proses transfer dari rekening A ke rekening B sejumlah 10% dari rekening A ke rekening B.

Jika proses T i dijalankan terlebih dahulu dan proses selanjutnya adalah T j maka akan berbeda hasilnya jika T j dijalankan terlebih dulu dan T i dijalankan kemudian. Maka dari itu diperlukan penjadwalan jika terjadi banyak transaksi yang dijalankan hampir bersamaan untuk tetap memberikan prioritas pada proses untuk transaksi- transaksi yang harus dijalankan.

Dalam penjadwalan transaksi ada yang disebut dengan penjadwalan serial. Penjadwalan serial adalah penjadwalan beberapa transaksi dan pengeksekusian seluruh proses transaksi yang satu dijalankan dari awal sampai dengan akhir dan kemudian dilanjutkan dengan pengeksekusian proses transaksi selanjutnya dari awal sampai dengan akhir dan seterusnya. Dengan setiap proses transaksi yang satu tidak diselingi dengan proses transaksi yang lain. Sehingga data akan selalu dalam keadaan konsisten.

11.3 Serializability

Pada saat terjadi beberapa transaksi dijalankan hampir bersamaan, maka yang akan terjadi adalah penjadwalan nonserial. Dalam penjadwalan nonserial akan terdapat kemungkinan bahwa proses transaksi yang satu akan diselingi dengan proses transaksi yang lain. Hal ini kemungkinan dapat menyebabkan data menjadi tidak konsisten.

Serializability adalah suatu cara untuk menjadwalkan proses-proses transaksi yang dijalankan hampir bersamaan dengan tetap menjaga konsistensi

11.4 Lock Based Protocol

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 T 1 menambahkan shared- mode lock pada data Q, maka T 1 dapat membaca tetapi tidak dapat menulis/merubah data Q.

2. Exclusive – mode lock (dinotasikan dengan X).yaitu, apabila transaksi T 1 menambahkan shared- mode lock pada data Q, maka T 1 dapat membaca dan atau menulis/merubah data Q.

XS

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 yang diterapkan terhadap data Q harus sesuai dengan operasi yang akan dilakukan.

Konkurensi Basis Data 189

- 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 T 2 akan mengakses suatu data Q yang sudah di lock oleh transaksi lain T 1 ( T 1 <> T 2 ) dengan mode-lock yang incompatible antara kedua transaksi, maka concurrency control manager tidak akan memberikan grant lock ke T 2 sebelum lock transaksi T 1 terhadap data Q tersebut dilepaskan /di-unlock .

Contoh Penerapan Lock dari dua buah transaksi: -

Transaksi pertama disimbolkan dengan T 1 . Yaitu transaksi transfer $50 dari rekening A ke rekening B dengan saldo semula A adalah $100 dan B adalah $200.

- Transaksi kedua disimbolkan dengan T 2 . 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 T 1 dan transaksi

penjumlahan rekening digambarkan dengan T 2 sbb:

T 1 : lock-X(B); read(B);

B := B - 50; write(B); unlock(B); lock-X(A); read(A);

A := A + 50; write(A); unlock(A).

T 2 : 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.

Konkurensi Basis Data 191

Tabel penjadwalan 1

Conncurency T1

T2

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 T 1 dan T 2 digambarkan seperti di atas dilakukan secara berurutan, T 1 terlebih dulu dieksekusi kemudian T 2 , ataupun T 2 terlebih dahulu dan kemudian T 1 , maka hasil dari T 2 adalah harus selalu $300. Dari table penjadwalan diatas, T 1 dilakukan bersamaan dengan T 2 , maka akan terjadi kesalahan hasil dari transaksi T 2 , yaitu menghasilkan nilai $250. Hal tersebut terjadi karena T 1 terlalu cepat melakukan unlock terhadap data B yang menyebabkan data menjadi inkonsisten.

T 3 : lock-X(B); read(B);

B := B - 50; write(B); lock-X(A); read(A);

A := A + 50; write(A); unlock(B); unlock(A).

T 4 : lock-S(A); read(A); lock-S(B); read(B); display(A + B); unlock(A); unlock(B).

Dari transaksi diatas, T 3 korespondensi dengan T 1 dengan waktu unlock data ditunda dan T 4 korespondensi dengan T 2 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.

Contoh:

Konkurensi Basis Data 193

T 5 T 6 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: -

T 3 meminta exclusive mode-lock kepada concurrency control manager dan T 3 mendapatkan grant exclusive mode-lock terhadap data C. Maka T 3 dapat melakukan modifikasi /perubahan terhadap data C. -

T 4 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.

- T 4 meminta shared mode-lock terhadap data C yang pada saat itu T 3 sedang memegang exclusive mode-lock terhadap data C. Maka T 4 harus menunggu T 3 untuk melepaskan lock pada data C. Karena kedua mode lock tersebut adalah incompatible. -

Tetapi pada saat itu, T 3 tidak melepaskan lock nya dari data C, melainkan meminta shared mode-lock terhadap data D yang pada saat itu T 4 sedang memegang exclusive mode lock terhadap data D. dan karena kedua mode lock tersebut juga incompatible, maka T 3 harus menunggu T 4 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.

Keadaan diatas dapat dihindari dengan cara melakukan unlock terhadap data lebih awal, namun seperti yang sudah dijelaskan sebelumnya

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 T i dan T j , dengan T j membaca data yang sebelumnya sudah pernah ditulis (dirubah) oleh T i dan sesaat setelah perubahan itu T i belum melakukan COMMIT dan kemudian terjadi kegagalan, maka yang harus dialkukan adalah cascading rollback.

Cascading rollback adalah keadaan pada saat terjadi kegagalan pada salah satu transaksi dan menyebabkan beberapa transaksi yang terkait harus melakukan rollback (transaksi yang terkait yang dimaksud adalah transaksi

Konkurensi Basis Data 195 Konkurensi Basis Data 195

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.

11.5 Multiple Granularity

Di dalam skema concurrency control menggunakan data item masing- masing sebagai suatu unit pada saat sinkronisasi dijalankan. Terdapat beberapa keadaan yang menguntungkan pada saat beberapa data item dikelompokkan dan memperlakukannya sebagai satu unit yang disinkronisasi. Contohnya, jika satu transaksi T i memerlukan untuk mengakses seluruh database dan locking protocol digunakan, maka T i harus melakukan locking setiap item dalam basisdata. Sangat jelas bahwa, mengeksekusi lock-lock item data akan memerlukan waktu yang relative lama. Akan lebih baik jika T i dapat melakukan satu permintaan lock untuk melakukan lock terhadap seluruh database.

Tapi di lain sisi, jika transaksi T i perlu untuk mengakses hanya beberapa data saja maka tidak diperlukan untuk melakukan lock terhadap seluruh item databse.

Granularitas item data adalah ukuran dari satu unit data yang terdiri dari kumpulan item data yang akan disinkronisasi pada skema concurrency control

Granularitas item data : -

Seluruh basis data -

Prinsipnya adalah semakin kecil ukuran item data maka tingkat konkurensi nya semakin terjaga tapi memerlukan tempat penyimpanan yang lebih besar untuk bisa menyimpan informasi lock setiap item data, berlaku sebaliknya.

Untuk menentukan ukuran granularitas item data maka perlu melihat latar belakang transaksi yang sering dilakukan, jika transaksi biasanya sering terjadi untuk pengaksesan terhadap record maka granularitas item data adalah record. Dan jika sering terdapat transaksi yang mengaksses data yang berada pada file yang sama secara bersamaan, maka granularitas item datanya adalah file.

Konkurensi Basis Data 197

Rangkuman

1. Transaksi adalah satu unit pekerjaan lojik yang terdiri dari serangkaian aksi atau operasi, dengan keseluruhan aksi atau operasi tersebut harus sukses dijalankan atau gagal seluruhnya.

2. Untuk menjamin integritas data, sangat diharuskan bagi sistem basis untuk tetap menjaga properti-properti berikut pada transaksi: -

Atomicity. Basisdata harus mencerminkan dengan benar seluruh operasi transaksi atau tidak sama sekali.

- Consistency. Segala perubahan yang konsisten pada basisdata mencerminkan dan sesuai dengan yang seharusnya terjadi dalam dunia nyata.

- Isolation. Walaupun beberapa transaksi dieksekusi secara hampir bersamaan, sistem harus menjamin bahwa proses transaksi yang satu tidak mengganggu proses transaksi yang lainnya. Sehingga seolah-olah transaksi satu dieksekusi setelah transaksi lain berakhir dieksekusi.

- Durability. Setelah transaksi selesai dengan sukses, maka perubahan data dalam basisdata adalah permanen, walaupun terjadi kegagalan.

3. Sangat dimungkinkan terjadi lebih dari satu transaksi berjalan dan dieksekusi hampir bersamaan (konkuren). Maka diperlukan suatu penjadwalan untuk menjaga konsistensi dari data.

4. Serializability adalah suatu cara untuk menjadwalkan proses-proses transaksi yang dijalankan hampir bersamaan dengan tetap menjaga konsistensi data seolah-olah proses dari transaksi-transaksi tersebut dijalanakan secara serial.

3 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. Karena data sudah ―dikunci‖ atau di ―lock‖ oleh transaksi yang bersangkutan.

4 Terdapat dua mode-lock pada data: -

Shared –mode lock (dinotasikan dengan S). -

Exclusive – mode lock (dinotasikan dengan X)

5. 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.

6. Keadaan tersebut adalah deadlock, yaitu keadaan pada saat beberapa transaksi saling menunggu untuk mengakses data yang sedang di lock oleh transaksi lain.

7. Keadaan deadlock dapat dihindari. Yang diperlukan adalah bahwa setiap transaksi harus mengikuti serangkaian aturan yang disebut dengan locking protocol. Salah satu locking protocol adalah two-phase protocol.

8. 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.