THOUSANDS OF FREE BLOGGER TEMPLATES

Sabtu, 16 Januari 2010

Masalah Kehilangan Modifikasi dan Modifikasi Sementara

Studi Kasus

1. Masalah Kehilangan Modifikasi

Ika dan Susi memiliki rekening simpanan secara bersamaan dengan saldo Rp. 1.000.000,00. Susi mendapat pembayaran sebesar Rp. 100.000,00 dan memutuskan untuk menyimpan di dalam rekening tersebut, dengan menggunakan kantor cabang bank yang dekat dengan pekerjaannya. Pada saat yang bersamaan, Ika memerlukan uang untuk membayar sesuatu dan memutuskan untuk mengambil Rp. 50.000,00 dari rekening bersamaan tersebut, dengan menggunakan kantor cabang yang berbeda. Jika transaksi ini dieksekusi secara bersamaan, transaksi yang satu diproses setelah transaksi yang lain tanpa operasi interleaved (selang waktu operasi) maka saldo akhir adalah Rp. 1.050.000,00 tanpa terkecuali transaksi tersebut diproses secara konkuren, maka saldo akhir menjadi tidak benar. Gambar dibawah ini menunjukkan schedule untuk dieksekusi secara konkuren yang menghasilkan saldo akhir Rp. 1.100.000,00 terlihat pada schedule ini pada waktu interleaved, transaksi untuk Susi masih menggunakan nilai yang dibacanya melalui variabel saldo, bukan nilai baru yang belum dibacanya. Berdasarkan schedule ini update yang berasal dari transaksi Ika menjadi hilang.

Waktu

Transaksi Ika

Transaksi Susi

Saldo

T1

Read Saldo

…………………..

Rp.1.000.000,00

T2

……………..……

Read Saldo

Rp.1.000.000,00

T3

Saldo= Saldo+

Rp.50.000,00

…………………..

Rp.1.000.000,00

T4

Write Saldo

………………….

Rp.1.000.000,00

T5

………………….

Saldo= Saldo+Rp.100.000,00

Rp1.000.000,00

T6

………………….

Write Saldo

Rp1.0000.000,00


2. Permasalahan Modifikasi Sementara

Pada schedule transaksi, transaksi Bunga dihitung untuk rekening simpanan dan tingkat bunga sebesar 15%, sedangkan transaski simpanan menyimpan Rp. 1.000.000,00 ke rekening tersebut , tetapi terjadi roll back. Nilai saldo awal pada rekening tersebut adalah Rp.1.000.000,00 seandainya transaksi simnpanan mengupdate nilai dari saldo menjadi Rp. 2.000.000,00 sebelum transaksi bunga membaca saldo, maka jumlah yang akan disimpan adalah Rp. 2.100.000,00. tetapi transaksi simpanan terjadi roll back yang berarti keadaan database seharusnya tidak berpengaruh, disebabkan transaksi simpanan tersebut.akibat transaksinya sendiri mengalami kesalahan, kemungkinan terjadi kredit rekening yang salah atau sebagai akibat sistem crash. Sehingga tingkat bunga yang dihitung terhadap saldo menjadi tidak benar. Jika roll back dilakukan maka saldo mungkin menjadi tidak benar.

Waktu

Transaksi Simpanan

Transaksi Bunga

Saldo

T1

Read Saldo

…………………..

Rp.1.000.000,00

T2

Saldo= Saldo+

Rp.1.000.000,00

…………………..

Rp.1.000.000,00

T3

Write Saldo

…………………..

Rp.2.000.000,00

T4

………………….

Read Saldo

Rp.2.000.000,00

T5

………………….

Saldo= Saldo*15%

Rp.2.000.000,00

T6

………………….

Write Saldo

Rp.2.000.000,00

T7

Roll Back

…………………..

Rp.2.100.000,00

Cara Kerja Locking

  • Kunci X: Kunci ekslusif (Bisa merubah transaksi nilai)
  • Kunci S : Kunci dipergunakan bersama-sama ( Tidak bisa melakukan modifikasi nilai, hanya bisa membaca transaksi )

Implementasi Locking
Kunci X dan S

  • Jika transaksi A menggunakan kunci X pada record R, maka permintaan dari transaksi B untuk suatu kunci pada R ditunda dan B harus menunggu sampai A melepaskan kunci tersebut.
  • Jika transaksi A menggunakan kunci S pada record R, maka :
    a. Bila transaksi B ingin menggunakan kunci X, maka B harus menunggu sampai A melepaskan kunci tersebut.
    b. Bila transaksi B ingin menggunakan kunci S, maka B dapat menggunakan kunci S secara bersama-sama
  • Jika transaksi hanya melakukan pembacaan saja, secara otomatis hanya memerlukan kunci S .
  • Jika transaksi untuk melakukan modifikasi pada suatu record, maka memerlukan kunci X.

0 komentar: