DBMS Terdistribusi - Protokol Komit

Dalam sistem database lokal, untuk melakukan transaksi, manajer transaksi hanya perlu menyampaikan keputusan untuk berkomitmen kepada manajer pemulihan. Namun, dalam sistem terdistribusi, manajer transaksi harus menyampaikan keputusan untuk berkomitmen ke semua server di berbagai situs tempat transaksi dijalankan dan secara seragam menegakkan keputusan tersebut. Saat pemrosesan selesai di setiap situs, itu mencapai status transaksi setengah berkomitmen dan menunggu semua transaksi lain untuk mencapai status berkomitmen sebagian mereka. Ketika menerima pesan bahwa semua situs siap untuk melakukan, itu mulai melakukan. Dalam sistem terdistribusi, semua situs berkomitmen atau tidak ada yang melakukannya.

Berbagai protokol komit terdistribusi adalah -

  • Komit satu fase
  • Komit dua fase
  • Komit tiga fase

Komit Satu Fase Terdistribusi

Komit satu fase terdistribusi adalah protokol komit paling sederhana. Mari kita pertimbangkan bahwa ada situs pengendali dan sejumlah situs budak tempat transaksi dijalankan. Langkah-langkah dalam komit terdistribusi adalah -

  • Setelah setiap budak menyelesaikan transaksinya secara lokal, ia mengirimkan pesan "SELESAI" ke situs pengendali.

  • Para budak menunggu pesan "Komit" atau "Batalkan" dari situs pengendali. Waktu tunggu ini disebutwindow of vulnerability.

  • Ketika situs pengendali menerima pesan "SELESAI" dari setiap budak, itu membuat keputusan untuk melakukan atau membatalkan. Ini disebut titik komit. Kemudian, ia mengirimkan pesan ini ke semua budak.

  • Saat menerima pesan ini, seorang budak melakukan atau membatalkan dan kemudian mengirimkan pesan pengakuan ke situs pengendali.

Komit Dua-fase Terdistribusi

Komit dua fase terdistribusi mengurangi kerentanan protokol komit satu fase. Langkah-langkah yang dilakukan dalam dua tahap tersebut adalah sebagai berikut -

Phase 1: Prepare Phase

  • Setelah setiap budak menyelesaikan transaksinya secara lokal, ia mengirimkan pesan "SELESAI" ke situs pengendali. Ketika situs pengendali telah menerima pesan "SELESAI" dari semua budak, itu mengirimkan pesan "Siapkan" ke budak.

  • Para budak memilih apakah mereka masih ingin berkomitmen atau tidak. Jika seorang budak ingin berkomitmen, ia mengirimkan pesan "Siap".

  • Seorang budak yang tidak ingin melakukan mengirimkan pesan "Not Ready". Ini mungkin terjadi ketika budak memiliki transaksi bersamaan yang bertentangan atau ada waktu tunggu.

Phase 2: Commit/Abort Phase

  • Setelah situs pengontrol menerima pesan "Siap" dari semua budak -

    • Situs pengontrol mengirimkan pesan "Komitmen Global" kepada para budak.

    • Budak menerapkan transaksi dan mengirim pesan "Komit ACK" ke situs pengendali.

    • Ketika situs pengendali menerima pesan "Commit ACK" dari semua budak, itu menganggap transaksi tersebut telah dilakukan.

  • Setelah situs pengontrol menerima pesan "Belum Siap" pertama dari budak mana pun -

    • Situs pengendali mengirimkan pesan "Global Abort" kepada para budak.

    • Budak membatalkan transaksi dan mengirim pesan "Batalkan ACK" ke situs pengendali.

    • Ketika situs pengendali menerima pesan "Batalkan ACK" dari semua budak, itu menganggap transaksi itu dibatalkan.

Komit Tiga-fase Terdistribusi

Langkah-langkah dalam komit tiga fase terdistribusi adalah sebagai berikut -

Phase 1: Prepare Phase

Langkah-langkahnya sama seperti pada komit dua fase terdistribusi.

Phase 2: Prepare to Commit Phase

  • Situs pengendali mengeluarkan pesan siaran "Enter Prepared State".
  • Situs budak memilih "OK" sebagai tanggapan.

Phase 3: Commit / Abort Phase

Langkah-langkahnya sama dengan komit dua fase, kecuali pesan "Komit ACK" / "Batalkan ACK" tidak diperlukan.