• Tidak ada hasil yang ditemukan

BAB II LANDASAN TEORI

2.2. Basis Data

2.2.5. Manajemen Transaksi

Transaksi adalah sebuah tindakan atau serangkaian tindakan, dilakukan olehuser atau program aplikasi, yang membaca atau mengubah isi dari basis data(Connolly and Beg, 2002). Terdapat 4 hal dasar yang harus dimiliki semua transaksi, yaitu:

1. Atomicity

Sebuah transaksi adalah sebuah unit yang tidak dapat dibagi lagi sehingga dapatmelakukan seluruhnya atau tidak melakukan apapun. Ini merupakan tanggung jawab dari subsistem recovery dari DBMS untuk memastikan ke-„atom‟-annya.

2. Consistency

Sebuah transaksi harus mentransformasikan satu keadaan konsisten ke keadaan konsisten lainnya. Ini merupakan tanggung jawab dari DBMS dan pengembang aplikasi untuk memastikan kekonsistenannya.

3. Isolation

Transaksi secara bebas mengeksekusi yang lainnya. Dengan kata lain, sebagian transaksi yang tidak lengkap akan mengakibatkan transaksi yang lain menjadi tidak visible.Ini merupakan tanggung jawab dari subsistem concurrency control untuk memastikan isolasi.

4. Durability

dengan sukses, maka efeknya tetap bertahan bahkan jika sistem mengalami crash sebelum semua perubahannya direfleksikan pada disk. Ini merupakan tanggung jawab dari recovery subsistem untuk memastikan durability.

Gambar 2. 4Diagram Transisi Transaksi (Connolly and Beg, 2002)

Berdasarkan Gambar 2.4 dalam diagram transisi tersebut terdapat 5 keadaan yaitu: 1. ACTIVE (aktif)

2. PARTIALLY COMMITTED (sebagian dilaksanakan)  Terjadi setelah perintah terakhir dieksekusi

 Pada saat ini, mungkin ditemukan transaksi melanggar serializability atau melanggar integrity constraint, maka transaksi harus dibatalkan. Transaksi demikian akan menuju FAILED (keadaan gagal) dan harus dibatalkan

 Jika transaksi sukses, beberapa update dapat disimpan secara aman dan transaksi menuju ke keadaan COMMITTED.

3. COMMITTED (dilaksanakan) 4. FAILED (gagal)

 Terjadi jika transakasi tidak dapat dilaksanakan atau transaksi dibatalkan pada saat ACTIVE (keadan aktif).

Kondisi ini terjadi jika user membatalkan transaksi atau protocol concurrency control membatalkan transaksi untuk memastikan serialibility.

2.2.5.1. Metode Locking

Locking adalah sebuah prosedur yang digunakan untuk melakukan kontrol pada akses bersama pada data. Pada saat satu transaksi melakukan akses ke dalam database, sebuah lock akan menyebabkan pelarangan akses ke dalam transaksi untuk mencegah hasil yang tidak konsisten. Terdapat 2 jenis lock, yaitu Shared Lock, dan Exclusive Lock. Jika sebuah transaksi memiliki shared lock padasebuah data item, maka transaksi tersebut dapat melakukan pembacaan terhadap sebuah item tetapi tidak dapat melakukan update. Sedangkan jika sebuah transaksi yang memiliki

Exclusivelock pada sebuah data item dapat melakukan pembacaan maupun update

item tersebut.

2.2.5.2. Two Phase Locking (2PL)

Transaksi dapat dilakukan menggunakan protokol 2PL jika semua operasilocking mendahului operasi yang tidak terkunci dalam transaksi tersebut.Protokol 2PL memiliki 2 fase, yaitu (Connolly and Beg,2002):

a. Growing phase : jika transaksi sudah mendapatkan semua lock, maka tidak boleh melepas lock.

b. Shrinking phase : jika transaksi sudah melepaskan lock, maka tidak dapat mendapatkan lock baru.

Beberapa masalah yang disebabkan oleh proses yang konkurenseperti dibawah ini bisa ditangani dengan menerapkan protokoltwo phase locking(2PL)(Connolly and Beg,2002):

a. The Lost Update Problem, merupakan kejadian dimana data transaksi yang telah diupdate dibaca oleh transaksi yang lain kemudian di update lagi.

b. The Uncommited Dependency (Dirty Read) Problem, merupakan kejadian dimana data transaksi yang dilakukan dibaca oleh transaksi yang lain, lalu dibatalkan tanpa adanya penyimpanan terlebih dahulu oleh transaksi yang pertama sehingga menyebabkan data yang tidak benar.

c. The Incosistent Analysis Problem, masalah ini timbul karena data diakses oleh 2 transaksi yang bersamaan, transaksi yang pertama

melakukan perubahan dan transaksi yang kedua melakukan analisis sehingga data yang diperoleh menjadi tidak konsisten.

2.2.5.3. Contoh Penangangan Masalah Concurrency Control

Di bawah ini merupakan contoh-contoh untuk menangani masalah concurrency control :

Gambar 2. 5Mencegah Lost Update Problem menggunakan 2PL(Connolly and

Beg, 2002)

Keterangan :

Untuk mencegah terjadinya masalah hilangnya data yang diubah, maka : pertama-tama T2 meminta exclusive lock pada balₓ Setelah itu T2 dapat melakukanproses baca nilai balₓ, menambahnya dengan nilai 100, dan menuliskan nilai baru dari balₓ tersebut kedalam basis data.

Saat T1 memulai transaksi, T1 juga meminta suatu exclusivelock pada balₓ, namun karena balₓ sedang berada dalam posisiexclusive lock oleh T2, maka permintaan read balₓ tidak segera diberikan kepada T1 dan T1 harus menunggu sampai lock dilepaskan oleh T2. Hal ini terjadi saat t2 melaksanakan operasi commit atau unlock balx (Connolly and Beg, 2002).

Gambar 2. 6Mencegah Uncommited Dependency Problem using 2PL(Connolly

and Beg,2002)

Keterangan :

Untuk mencegah terjadinya masalah ketergantungan transaksi yang belum dilaksanakan, maka : pertama-tama T4 meminta suatu exclusive lock pada balx. Setelah itu, T4 dapat melakukan proses baca nilai balx dari dalam basis data, menambahnya dengan nilai 100, dan menuliskan nilai baru balx tersebut ke dalam basis data. Rollback dieksekusi, peng-update-an pada transaksi T4 tidak jadi dilakukan dan nilai dalam basis data dikembalikan ke kondisi semula yaitu 100.

Saat T3 memulai transaksi, T3 juga meminta suatu exclusive lock pada balx, namun karena balx sedang dalam posisi exclusive lock oleh T4 maka permintaan tersebut tidak segera diberikan kepada T3, dan T3 harus menunggu sampai lock dilepaskan oleh T4. Hal ini terjadi saat T4 melakukan operasi rollback atau unlock balx, barulah T3 dapat melakukan proses baca nilai balx (Connolly and Beg, 2002).

Gambar 2. 7Mencegah Inconsistent Analysis Problem using 2PL(Connolly and

Beg,2002)

Keterangan :

Untuk mencegah terjadinya masalah analisis yang tidak konsisten , maka : T5 mengawali meminta suatu exclusive lock pada balx. T5 juga meminta suatu exclusive lock pada baly. Saat T6 ingin membaca nilai balx, ia harus menunggu sampai lock dilepaskan oleh T5. Hal ini terjadi saat T5 melaksanakan operasi commit atau unlockbalx, barulah T6 dapat membaca nilai balx(Connolly and Beg, 2002). Untuk mengatasi masalah di atas, mesin basis data Oracle mempunyai kemampuan mendukung transaksi dengan metode 2PL yang dapat menjamin konsistensi data.

2.2.5.4. Perintah For Update

Perintah for update yang digunakan untuk melakukan penguncian agar menjamin konsistensi. Untuk menjamin konsistensi data, terutama dalam kasus ketika ada banyak sesi terhadap suatu database yang sama, sebaiknya baris-baris record dalam database yang akan di-update atau dihapus, dikunci terlebih dahulu.

Penguncian record dalam database dapat dilakukan dengan perintah for update dalam kueri(OracleInc, 2004).

Sintak yang digunakan :

Dokumen terkait