Permasalahan
penggunaan dan pengolahan
data terdistribusi
Deadlock (Deadly Embrace)
Keadaan yang timbul pada saat proses update dimana suatu record dibaca tetapi tidak mungkin diupdate sampai record lain dibaca. sedangkan record tersebut harus dikunci selama proses update.
dapat digambarkan sebagai berikut:
Transaksi A :
Kunci record Y
Baca record Y
Baca record Z
Update record Y
Buka kunci record Y
Transaksi B :
Kunci record Z
Baca record Z
Baca record Y
Update record Z
Buka kunci record Y
Keadaan deadlock akan timbul jika transaksi lain mengunci record Z dan tidak dibuka sampai transaksi ini telah membaca record Y. Proses untuk transaksi B adalah sebagai berikut:
Transaksi A mengunci record Y
Transaksi A membaca record Y
Transaksi B mengunci record Z
Transaksi B membaca record Z
Transaksi A mecoba untuk membaca record Z tetapi record tersebut terkunci.
Transaksi B mencoba untuk membaca record Y tetapi record tersebut terkunci.
Kedua transaksi menunggu untuk record yang diinginkan tetapi ternyata record tersebut terkunci tidak ada program untuk membuka record yang terkunci.
Ada dua cara untuk mengatasi masalah deadlock :
Pertama : memundurkan kembali pemrosesan pada saat deadlock terjadi dan
Kedua : mencegah terjadinya deadlock secara keseluruhan.
Untuk mengatasi deadlock perangkat lunak harus dapat mendeteksi suatu transaksi yang tergantung (hang up), dan menghentikan sementara salah satu program yang menyebabkan terjadinya deadlock. Dalam hal ini seluruhnya harus dimundurkan pada saat terjadinya program yang terhenti tanpa mempengaruhi integritas dari data yang disimpan.
Sistem akan memundurkan program deadlock sampai pada synchronization point dan kemudian memulai kembali program tersebut.
Memundurkan kembali dari suatu deadlock dapat menjadi kompleks pada lingkungan distribusi maka lebih baik adalah mencegah terjadinya deadlock. Hal ini dapat dilakukan melalui timestamping transaksi dan memastikan operasi datanya dilakukan dalam urutan timestamp.
penggunaan dan pengolahan
data terdistribusi
- Update transaksi : Dua buah transaksi mungkin meng update item data yang sama, sehingga menghasilkan data yang salah, hal ini dapat dicegah dengan penguncian dan protokol yang tepat.
- Pembacaan yang tidak konsisten : Dengan lebih dari satu salinan data kadang-kadang satu salinan dari data terdistribusi dapat menghasilkan informasi yang tidak konsisten pada saat pembacaan data. atau dari masalah pengaturan waktu data yang dibaca menjadi salah. Masalah ini dapat dicegah dengan penguncian atau protokol yang tepat.
- Timbulnya Deadlock : Penguncian pada data terdistribusi untuk mencegah terjadinya gangguan update dapat menyebabkan timbulnya deadlock hal ini dapat diatasi dengan protokol yang tepat.
- Biaya protokol : Penggunaan protokol untuk mengupdate yang salah pembacaan yang tidak konsisten dan timbulnya deadlock dapat membuat pengeluaran biaya yang berlebihan terutama jika salinan data replikasi multiple digunakan.
- Recovery (Pemulihan) : Setelah terjadinya kegagalan perlu dikontrol sehingga pengupdate-an tidak menjadi hilang atau proses dua kali.
- Recovery dari salinan multiple : Salinan data multiple mungkin berada dalam keadaan update yang berbeda setelah jangka waktu terjadinya kegagalan. Hal ini perlu dikembalikan kekeadaan yang sama tetapi sangat kompleks untuk dikerjakan pada saat transaksi realtime sedang diproses.
- Pengauditan : Sangat sulit pada beberapa sistem terdistribusi untuk mengetahui siapa yang sedang memproses data. Dalam hal ini perlu rancangan yang tepat untuk pengauditan kadang kadang lemah
Deadlock (Deadly Embrace)
Keadaan yang timbul pada saat proses update dimana suatu record dibaca tetapi tidak mungkin diupdate sampai record lain dibaca. sedangkan record tersebut harus dikunci selama proses update.
dapat digambarkan sebagai berikut:
Transaksi A :
Kunci record Y
Baca record Y
Baca record Z
Update record Y
Buka kunci record Y
Transaksi B :
Kunci record Z
Baca record Z
Baca record Y
Update record Z
Buka kunci record Y
Keadaan deadlock akan timbul jika transaksi lain mengunci record Z dan tidak dibuka sampai transaksi ini telah membaca record Y. Proses untuk transaksi B adalah sebagai berikut:
Transaksi A mengunci record Y
Transaksi A membaca record Y
Transaksi B mengunci record Z
Transaksi B membaca record Z
Transaksi A mecoba untuk membaca record Z tetapi record tersebut terkunci.
Transaksi B mencoba untuk membaca record Y tetapi record tersebut terkunci.
Kedua transaksi menunggu untuk record yang diinginkan tetapi ternyata record tersebut terkunci tidak ada program untuk membuka record yang terkunci.
Ada dua cara untuk mengatasi masalah deadlock :
Pertama : memundurkan kembali pemrosesan pada saat deadlock terjadi dan
Kedua : mencegah terjadinya deadlock secara keseluruhan.
Untuk mengatasi deadlock perangkat lunak harus dapat mendeteksi suatu transaksi yang tergantung (hang up), dan menghentikan sementara salah satu program yang menyebabkan terjadinya deadlock. Dalam hal ini seluruhnya harus dimundurkan pada saat terjadinya program yang terhenti tanpa mempengaruhi integritas dari data yang disimpan.
Sistem akan memundurkan program deadlock sampai pada synchronization point dan kemudian memulai kembali program tersebut.
Memundurkan kembali dari suatu deadlock dapat menjadi kompleks pada lingkungan distribusi maka lebih baik adalah mencegah terjadinya deadlock. Hal ini dapat dilakukan melalui timestamping transaksi dan memastikan operasi datanya dilakukan dalam urutan timestamp.