- Manajemen Transaksi
Transaksi adalah sekumpulan operasi yang melakukan suatu fungsi logika tunggal pada aplikasi basis data, misalnya pentransferan dana dari rekening A ke rekening B. Transaksi harus tetap menjaga prinsip atomisitas dan konsistensi, dalam arti bahwa transaksi tidak melanggar batasan konsistensi basis data. Ini berarti bahwa kondisi basis data harus tetap konsisten sebelum dan sesudah eksekusi transaksi. Oleh karena itu, pemrogram harus secara benar mendefinisikan berbagai transaksi dengan mempertahankan konsistensi basis data.
Memastikan karakteristik atomisitas dan durabilitas adalah tanggung jawab sistem basis data itu sendiri, secara spesifik komponen manajemen transaksi. Pada sistem tanpa kegagalan, semua transaksi diselesaikan sempurna dan atomisitas dicapai dengan mudah. Namun dengan terjadinya kegagalan sistem, transaksi tidak selalu berakhir dengan sempurna. Dalam hal ini, basis data harus kembali ke keadaan sebelum transaksi dimulai. Basis data harus melakukan apa yang dinamakan recovery kegagalan (failure recovery) dimana suatu fungsi tertentu mendeteksi kegagalan sistem, kemudian mengembalikan keadaan basis data ke keadaan sebelum terjadinya kegagalan sistem. Terakhir, ketika beberapa transaksi memperbarui basis data secara konkuren, konsistensi data mungkin tidak dapat dipertahankan, meskipun setiap transaksi individualnya benar. Untuk itu, manajer kendali konkurensi (concurrency-control manager) bertanggung jawab untuk mengendalikan interaksi antara transaksi yang konkuren tersebut untuk memastikan konsistensi basis data.
Sumber: Buku Perancangan dan Implementasi Sistem Basis Data
- Protokol Transaksi Konkuren
Transaksi adalah sekumpulan operasi yang melakukan suatu fungsi logika tunggal pada aplikasi basis data, misalnya pentransferan dana dari rekening A ke rekening B. Transaksi harus tetap menjaga prinsip atomisitas dan konsistensi, dalam arti bahwa transaksi tidak melanggar batasan konsistensi basis data. Ini berarti bahwa kondisi basis data harus tetap konsisten sebelum dan sesudah eksekusi transaksi. Oleh karena itu, pemrogram harus secara benar mendefinisikan berbagai transaksi dengan mempertahankan konsistensi basis data.
Memastikan karakteristik atomisitas dan durabilitas adalah tanggung jawab sistem basis data itu sendiri, secara spesifik komponen manajemen transaksi. Pada sistem tanpa kegagalan, semua transaksi diselesaikan sempurna dan atomisitas dicapai dengan mudah. Namun dengan terjadinya kegagalan sistem, transaksi tidak selalu berakhir dengan sempurna. Dalam hal ini, basis data harus kembali ke keadaan sebelum transaksi dimulai. Basis data harus melakukan apa yang dinamakan recovery kegagalan (failure recovery) dimana suatu fungsi tertentu mendeteksi kegagalan sistem, kemudian mengembalikan keadaan basis data ke keadaan sebelum terjadinya kegagalan sistem. Terakhir, ketika beberapa transaksi memperbarui basis data secara konkuren, konsistensi data mungkin tidak dapat dipertahankan, meskipun setiap transaksi individualnya benar. Untuk itu, manajer kendali konkurensi (concurrency-control manager) bertanggung jawab untuk mengendalikan interaksi antara transaksi yang konkuren tersebut untuk memastikan konsistensi basis data.
Sumber: Buku Perancangan dan Implementasi Sistem Basis Data
- Protokol Transaksi Konkuren
Ketika multiple user mengakses multiple objek basis data yang
berada pada multiple site di sistem basis data terdistribusi, maka permasalahan
kontrol konkurensi akan terjadi.Konflik terjadi apabila sekumpulan read dari
satu transaksi berpotongan dengan sekumpulan read dari transaksi lainnya,
dan/atau sekumpulan write dari satu transaksi berpotongan dengan sekumpulan
write dari transaksi lainnya. Transaksi T1 dan T2 dikatakan konflik jika
kedua-duanya dieksekusi pada waktu yang bersamaan. Bila T1 telah selesai
sebelum T2 dikirim ke sistem, dalam kasus ini sekumpulan read dan write saling
memotong, tidak dianggap konflik. Konflik diperhatikan pada sekumpulan write
yang saling memotong di antara dua transaksi. Ada tiga pendekatan secara umum
untuk mendesain algoritma kontrol konkurensi:
1. Wait. Jika dua transaksi konflik, transaksi yang konflik harus menunggu sampai transaksi lainnya selesai.
2. Timestamp. Urutan eksekusi transaksi berdasarkan timestamp. Setiap transaksi memiliki timestamp yang unik dan dua transaksi yang konflik diselesaikan berdasarkan urutan timestamp. Timestamp dapat diletakkan di awal, tengah, atau akhir eksekusi. Pendekatan berdasarkan version digunakan untuk menentukan timestamp objek basis data.
3. Rollback. Dua transaksi yang konflik, salah
satu transaksinya diulang kembali pengerjaannya. Disebut juga optimistic,
karena bila terjadi konflik maka beberapa transaksi akan di-rollback. Algoritma
berdasarkan Mekanisme Wait
Sistem akan melakukan lock pada entitas basis data. Ada dua tipe
lock:
1. Readlock. Transaksi akan mengunci entitas
pada mode shared. Sehingga transaksi lain yang menunggu untuk membaca beberapa
entitas juga bisa mendapatkan readlock.
2. Writelock. Transaksi akan mengunci entitas pada mode eksklusif. Jika ada satu transaksi akan melakukan penulisan pada entitas yang telah di-writelock, maka transaksi lainnya tidak boleh mendapatkan readlock maupun writelock pada entitas ini.
Lock akan menimbulkan masalah baru. Livelock dan deadlock.
Livelock terjadi ketika suatu transaksi berkali-kali gagal dalam mendapatkan
lock. Deadlock terjadi ketika beberapa transaksi melakukan lock pada beberapa
entitas pada saat yang bersamaan; setiap transaksi mendapatkan lock dari
entitas yang berbeda dan saling menunggu transaksi lainnya untuk melepaskan
lock.
Deadlock dapat diatasi dengan:
Deadlock
ini sangat jarang terjadi, sehingga akan lebih efektif
ditanggulangi ketika telah terjadi daripadamelakukantindakan preventif dari
awal yang memakan biaya lebih besar.Protokol sederhana yang diperlukan,
sehingga setiap transaksi dapat memenuhi aturan keberlanjutan adalah two-phase
locking (2PL).
1. Fase locking. Transaksi mengambil lock tanpa melepasnya.
2. Fase unlocking. Dalam fase ini, transaksi
melepaskan lock yang ada dan tidak boleh mengambil lock.
lockpoint merupakan keadaan sesaat sebelum pelepasan lock yang
pertama kali dilakukan. Algoritma berdasarkan Mekanisme Timestamp .Untuk
mendapatkan timestamp unik untuk transaksi pada node berbeda di sistem
terdistribusi, clock setiap node harus disamakan. Untuk menyelaraskan clock
dapat digunakan message passing. Algoritma berdasarkan Mekanisme
Rollback/Optimistic.
Terdapat 4 fase eksekusi transaksi pada pendekatan kontrol
konkurensi optimistic:
1. Read. Proses membaca tidak terlalu dibatasi. Hasilnya diletakkan pada variabel lokal. Sekumpulan read tergantung juga pada proses validasi.
2. Compute. Transaksi menghitung sekumpulan nilai dari data entitas yang disebut sekumpulan write. Hasilnya diletakkan pada variabel lokal.
3. Validate. Sekumpulan write dan read transaksi lokal divalidasi oleh sekumpulan transaksi yang sedang berjalan.
4. Commit and Write. Setelah berhasil divalidasi, akan dijalankan di sistem dan diberikan timestamp. Sekumpulan write akan diubah menjadi variabel global dan nilainya dikirim ke setiap node. Jika tidak berhasil divalidasi, transaksi diulangi lagi dari fase compute atau read.
Evaluasi Performansi dari Algoritma Kontrol Konkurensi
Kontrol Konkurensi yang dapat Disesuaikan
Sistem basis data yang ada, saling terhubung dengan sistem basis
data terdistribusi yang heterogen. Penggunaan konsep sistem basis data
Reliable, Adaptable, Interoperable, Distributed (RAID), menjadi fasilitas dalam
metode kontrol konkurensi. Model umum untuk pendekatan terhadap sistem dan
transaksi yang berbeda adalah dengan generic state, converting state, dan
suffix sufficient state.
Kesimpulan :
Kontrol konkurensi
adalah masalah yang timbul ketika beberapa proses terjadi pada berbagai tempat
di sistem. Solusi awal untuk hal ini adalah dengan memastikan kelas-kelas
serializability, two-phase locking, dan formalisasi pendekatan optimistic.
Mekanisme populer untuk kontrol konkurensi adalah two-phase locking. Kontrol
konkurensi yang dapat disesuaikan diimplementasikan pada sistem RAID.
Penelitian diharapkan berlanjut, pada bidang semantik dari transaksi dan
terutama pada sistem yang berorientasi objek. Pada sistem berskala besar,
sangat sulit untuk mem-blok akses ke objek basis data untuk melakukan transaksi.
Locking pada masa yang akan datang tidak akan relevan lagi pada kasus seperti
ini.
- Recoverability
- Recoverability
Recovery dari kegagalan transaksi artinya database dikembalikan
ke kondisi yang terdahulu,mendekati waktu terjadinya kegagalan.Untuk melakukan
hal tersebut, perlu disimpan informasi mengenai perubahan terhadap data selama
pelaksanaan transaksi di luar database. Informasi tersebut disebut sebagai
sistem log.
Teknik recovery berhubungan erat dengan mekanisme kontrol
konkurensi yang digunakan pada sistem bersangkutan. Sistem Basis Data harus
melaksanakan tindakan tertentu untuk menjamin sifat transaksi yang Atomik dan
Durable.
Bagian terintegrasi dari sebuah Sistem Basis Data adalah sebuah
skema recovery yang dapat memulihkan Basis Data kepada keadaan konsisten
sebelum kegagalan sistem.
Kegagalan sistem saat melakukan transaksi merupakan hal yang
harus diperhatikan secara seksama karena terkait dengan 4 sifat yang harus
dimiliki oleh suatu transaksi, ACID (Atomicity, Consistency, Isolation, dan
Durability), Recovery merupakan solusi dari hampir semua fitur ACID yang harus
dimiliki oleh setiap transaksi.Oleh karena itu, transaksi tidak hanya disebut
sebagai suatu unit pekerjaan, namun juga sebagai suatu unit recovery.
Pada DBMS modern, konsep recovery sangat penting, bahkan konsep
Backup pada DBMS modern tidak akan dapat dimengerti sepenuhnya tanpa
pengetahuan yang cukup mengenai konsep recovery. Hampir seluruh DBMS modern
menggunakan konsep recovery berbasis Log.
- Testing For Serializability
Serializability adalah level isolasi yang menyediakan isolasi transaksi yang paling ketat. Level ini mengemulasikan eksekusi transaksi secara serial, menjadikan transaksi dieksekusi satu setelah yang lainnya,seperti secara serial, bukan secara bersamaan (pararel).
– Serializable berarti jika jadual (nonserial) menghasilkan hasil yg sama seperti halnya jadual serial lainnya.
– Pada saat mendesain skema kontrol konkurensi, kita harus tunjukan bahwa jadwal yang dibuat oleh skema tersebut adalah serializable.
– Terdapat metode simpel dan efisien untuk menentukan conflict serializability dari suatu jadwal.
– Misalkan sebuah jadwal S. Kita dapat membuat suatu grafik langsung yang diberi nama grafik preseden (presedence graph).
– Grafik preseden terdiri dari sepasang G = (V,E), dimana V adalah serangkaian simpul dan E adalah serangkaian tepian / busur.
– Serangkaian simpul terdiri dari semua transaksi yang berperan serta di dalam penjadwalan. Serangkaian tepian / busur terdiri dari semua bentuk Ti -> Tj untuk masing – masing dari ketiga kondisi berikut :
• Ti eksekusi write(Q) sebelum Tj eksekusi read(Q)
• Ti eksekusi read(Q) sebelum Tj eksekusi write(Q)
• Ti eksekusi write(Q) sebelum Tj eksekusi write(Q)
– Jika bentuk Ti -> Tj ada di dalam grafik preseden, maka di setiap jadwal S’ serial yang ekivalen ke jadwal S, Ti harus muncul sebelum Tj.
- Testing For Serializability
Serializability adalah level isolasi yang menyediakan isolasi transaksi yang paling ketat. Level ini mengemulasikan eksekusi transaksi secara serial, menjadikan transaksi dieksekusi satu setelah yang lainnya,seperti secara serial, bukan secara bersamaan (pararel).
– Serializable berarti jika jadual (nonserial) menghasilkan hasil yg sama seperti halnya jadual serial lainnya.
– Pada saat mendesain skema kontrol konkurensi, kita harus tunjukan bahwa jadwal yang dibuat oleh skema tersebut adalah serializable.
– Terdapat metode simpel dan efisien untuk menentukan conflict serializability dari suatu jadwal.
– Misalkan sebuah jadwal S. Kita dapat membuat suatu grafik langsung yang diberi nama grafik preseden (presedence graph).
– Grafik preseden terdiri dari sepasang G = (V,E), dimana V adalah serangkaian simpul dan E adalah serangkaian tepian / busur.
– Serangkaian simpul terdiri dari semua transaksi yang berperan serta di dalam penjadwalan. Serangkaian tepian / busur terdiri dari semua bentuk Ti -> Tj untuk masing – masing dari ketiga kondisi berikut :
• Ti eksekusi write(Q) sebelum Tj eksekusi read(Q)
• Ti eksekusi read(Q) sebelum Tj eksekusi write(Q)
• Ti eksekusi write(Q) sebelum Tj eksekusi write(Q)
– Jika bentuk Ti -> Tj ada di dalam grafik preseden, maka di setiap jadwal S’ serial yang ekivalen ke jadwal S, Ti harus muncul sebelum Tj.
Tidak ada komentar:
Posting Komentar