Senin, 02 Mei 2016

Transaksi Sistem Terdistribusi

Salam sehat para pembaca sekalian. Kali ini saya akan menuliskan tentang Transaksi Sistem Terdistribusi. Materi ini berkaitan dengan Mata Kuliah Sistem Terdistribusi. Nanti akan saya uraikan mengenai Sifa-sifat Transaksi, Model Transaksi, Klasifikasi Transaksi dan Status Transaksi.

A. Pengertian
 

Transaksi Sistem terdistribsi dikenal juga dengan istilah Transaksi Tersebar, yaitu eksekusi program yang mengakses data yang digunakan bersama di banyak situs, menjamin semua situs yang terlibat transaksi mencapai keputusan konsisten menganai kommit atau abort. Sumber lain yang menyebutkan, Transaksi adalah satu atau beberapa aksi program aplikasi yang mengakses/mengubah isi basis data. Jenis Transaksi terbagi menjadi :
  1. Transaksi Lokal yaitu Transaksi yang mengakses data pada suatu simpul (mesin/server) yang sama dengan simpul dari mana transaksi tersebut dijalankan.
  2. Transaksi Global yaitu Transaksi yang membutuhkan pengaksesan data di simpul yang berbeda dengan simpul dimana transaksi tersebut dijalankan, atau transaksi dari sebuah simpul yang membutuhkan pengaksesan data ke sejumlah simpul lainnya.
B. Klasifikasi Transaksi Sistem Terdistribusi.

Sebuah transaksi klien menjadi terdistribusi jika ia melibatkan beberapa operasi pada beberapa server. Ada dua cara dimana transaksi terdistribusi dibentuk, yakni nested transaction dan flat transaction. Biasanya transaksi flat atau nested mengakses objek yang berada pada satu server tunggal. Namun, dalam kebanyakan hal, sebuahtransaksi ,apakah itu nested atau flat, akan mengakses objek yang ditempatkan pada server yang berbeda-beda.
  1. Flat Transaksi. utama dari flat transaction adalah bahwa mereka tidak memungkinkan hasil parsial yang akan dilakukan atau dibatalkan. Dengan kata lain, kekuatan milik atomicity flat transaction juga sebagiandari kelemahannya. Pada flat transaction, sebuah client membuat request lebih dari satu server. Sebagai contoh pada gambar berikut, transaksi T merupakan transaksi flat yang melibatkan operasi-operasi terhapdap objek-objek pada server X, Y, dan Z. Sebuah flat transaction melengkapi tiap-tiap requestnya sebelum bernangkat ke transaksi selanjutnya. Oleh karenanya, tipa-tiap trnasaksi mengakses objek server secara sekuensial. Ketika sebuah server dikunci, maka transaksi hanya bias menunggu satu objek saja pada satu waktu. Lihat gambar dibawah ini :
  2. Nested Traksaksi. Pada nested transaction, transaksi yang beradapada level atas dapat membuka beberapa sub-transaksi dan tiap-tiap sub-transaksi tersebut dapat juga membuka sub-transaksi lagi seterusnya sampai beberapa tingkat. Gambar (b) menunjukkan trnasaksi klien T yang membuka dua sub transaksi T1 dan T2, yang mengakses objek pada server X dan Y. Sub-transaksi T1 dan T2 tersebut membuka sub-transaksilagi, yakni T11, T12, T21, dan T22 yagn mengakses objek pada server M, N, dan P. Dalam kasus transakasi bertingka seperti ini, sub transaksi yang beradapada level yang sama dapat berjalan secara serrempak (konkuren), sehingga T1 dan T2 konkuren, dan karena mereka melibatkan objek pada server yang berbeda, maka mereka dapat nerjalan secara paralel.
C. Model Transaksi

Model Transaksi atau disebut juga Distribusi Commit. Phase commit merupakan operasi dimana satu set perubahan yang nyata juga diterapkan sebagai operasi tunggal. Jika perubahan yang diterapkan maka commit atomis dikatakan telah berhasil. Jika ada kegagalan sebelum commit atomis dapatdi selesaikan maka semua perubahan selesai maka semua perubahan diselesaikan dalam commit atomis reserved. Hal ini memastikan bahwa sistem selalu ditinggalkan dalam keadaan konsisten.

Dalam hal ini dijelaskan oleh Atomik yang merupakan salah satu sifat Transaksi yaitu yang bertujuan memastikan bahwa setiap perubahan terjadi pada semua sistem atau tidak sama sekali.

Ada tiga phase commit yaitu :
1.    One Phase Commit Protokol
 ● Coordinator mengirimkan pesan commit atau abort pada semua partisipan
● Proses diulang terus menerus sampai semua sudah membalas
Masalah : Tidak mungkin melakukan abort setelah ada permintaan untuk commit
Solusi : Two Phase Commit

2.    Two Phase Commit Protokol
Two-phase commit adalah protocol yang paling sederhana untuk menjaga commitment atomic dari transaksi trdistribusi. Ini memperlebar efek dari aksi local atomic commit pada transaksi terdistribusi dengan semua site pada saat melakukan eksekusi distribusi setuju untuk melakukan commit sebelum efek tersebut menjadi permanent. Jika seluruh site setuju melakukan commit maka semua aksi dari transaksi terdistribusi baru mendapatkan efek. Jika tidak ada satupun site yang mengkomit operasi tersebut maka semua operasi harus membatalkan transaksi tersebut. Oleh karenanya dasar dari aturan 2PC menyatakan:
  • Jika tidak satupun site yang menyatakan commit maka transaksi dibatalkan.
  • Jika semua site melakukan commit maka transaksi tersebut dijalankan.

Two-Phase Commit Protocol (2PC) memiliki dua jenis simpul untuk menyelesaikan proses–prosesnya: koordinator dan bawahan. (Mohan dkk, 1986.). Protokol dua Tahap Komit melewati dua tahap. Fase pertama adalah fase persiapan, dimana koordinator transaksi mengirimkan pesan mempersiapkan. Fase kedua adalah fase pengambilan keputusan, dimana koordinator mengeluarkan pesan COMMIT.
a)    Fase 1 (voting)
Coordinator mengirimkan request canCommit pada setiap partisipan kemudian partisipan memilih yes/no dan mengirim balik pada coordinator. Jika yes, maka menyimpan obyek pada penyimpanan permanen.
b)    Fase 2
Coordinator mengumpulkan hasil voting, jika semua setuju coordinator memutuskanuntuk commit (menjalankan) dan mengirimkan do Commit pada semua partisipan.Selain itu, coordinator memutuskan abort dan mengirimkan do Abort pada semuapartisipan yang memilih yes. Partisipan yang memilih yes menunggu doCommit/doAbort dari coordinator Setelah menerima salah satu dari pesan diatas, partisipan menjalankan perintah sesuai dengan pesan yang diterima Jika dilakukanperintah commit, maka partisipan mengirimkan pesan have Committed pada coordinator sebagai konfirmasi bahwa proses sudah dilaksanakan.
Phase Commit dapat dilakukan dengan salah satu dari metode berikut: Sentralisasi 2PC, Linear 2PC, dan Distributed 2PC, (Ozsu et al., 1991)

Masalah pada Two Phase Commit :
  • Susah memastikan semua partisipan sudah melakukan vote dan mendapatkan hasil yang sama
  • Jika proses mengalami kegagalan (terjadi network partitioning), maka tidak akan didapatkan konsensus, karena partisipan yang lain akan saling menunggu (blocking).
  • Solusi : Three phase commit
Masalah utama dengan komit dua fase terjadi ketika salah satu node yang berpartisipasi dalam transaksi terdistribusi gagal sementara transaksi dalam keadaan READY.
Ketika kegagalan dalam jangka waktu lama, maka data terkunci pada semua node lain, tidak akan tersedia untuk transaksi lainnya. Hal ini akan menyebabkan banyak transaksi untuk rollback karena deadlock.

Penanganan Kegagalan pada 2PC :
1.    Kegagalan pada salah satu situs yg berpartisipasi
  • Masalah: situs yg selesai melakukan recovery harus memeriksa log utk menentukan status transaksi
  • Jika commit, situs melakukan redo(T)
  • Jika abort, situs melakukan undo(T)
2.    Kegagalan pada Koordinator
  • Masalah: situs yg berpartisipasi harus menentukan nasib T
  • Jika salah satu situs berisi record atau maka coordinator akan mengikuti hasilnya
  • Jika ada situs yg belum berisi maka koordinator tdk dpt memutuskan
3.    Kegagalan pada Jaringan
  • Masalah: pesan yg dikirimkan tidak sampai
  • Jika beberapa link terputus dapat dilakukan partisi jaringan
3.    Three Phase Commit Protokol
Mencoba mengatasi masalah blocking (menunggu) yaitu dengan menggunakan asumsi tidak lebih dari k site fail (k adalah angka yang sudah disetujui). Coordinator memastikan bahwa paling tidak k site lain tahu bahwa coordinator akan melakukan commit. Jika coordinator fail, site yang lain melakukan election coordinator baru dan melihat status Terakhir dan menentukan keputusan yang akan diambil (commit/abort).

Masalah pada Three Phase Commit :
  • Susah implementasinya
  • Harus memastikan bahwa state harus tetap konsisten meskipun terdapat perbedaan hasil (transaksi di commit di satu site dan abort di site yang lain sebagai akibat dari network partitioning)
  • Terlalu banyak overhead
D. Sifat-sifat Transaksi.
 Sebuah transaksi berpeluang untuk ‘mengganggu’ integritas basis data yang dapat membuat kondisi/hubungan antar data tidak seperti seharusnya.  Untuk menjamin agar integritas dapat tetap terpelihara maka setiap transaksi harus memiliki sifat-sifat :
  1. Atomik, dimana semua operasi dalam transaksi dapat dikerjakan seluruhnya atau tidak sama sekali.
  2. Konsisten, dimana eksekusi transaksi secara tunggal harus dapat menjamin data tetap konsisten setelah transaksi berakhir.
  3. Terisolasi, jika pada sebuah sistem basis data terdapat sejumlah transaksi yang dilaksanakan secara bersamaan, maka semua transaksi yang dilaksanakan pada saat yang bersamaan tersebut harus dapat dimulai dan bisa berakhir.
  4. Bertahan, dimana perubahan data yang terjadi setelah sebuah transaksi berakhir dengan baik, harus dapat bertahan bahkan jika seandainya sistem menjadi mati

Terhentinya suatu transaksi tidak selalu diakibatkan oleh kegagalan insidental baik dari perangkat keras (crash) ataupun kemacetan sistem operasi (hang).  Tapi lebih sering terjadi karena user sengaja menghentikan transaksi atau karena penghentian transaksi oleh DBMS (Database Management System)  akibat adanya kondisi tak diinginkan, seperti deadlock atau timeout. Sebuah transaksi dapat menghasilkan dua kemungkinan:
  • Jika dilaksanakan lengkap seluruhnya, transaksi tersebut telah di commit dan basis data mencapai keadaan konsisten baru.
  • Jika transaksi tidak sukses, maka transaksi dibatalkan dan basis data dikembalikan ke keadaan konsisten sebelumnya (rollback).
Transaksi yang sudah di commit tidak dapat dibatalkan lagi.  Jika ada kesalahan, maka harus dilakukan transaksi lain yang membalik dampak transaksi sebelumnya.

E. Status Transaksi.
 Tiap situs memiliki koordinator transaksi yg berfungsi menjamin atomisitas eksekusi transaksi, dengan cara:
  • Memulai eksekusi transaksi.
  • Memecah menjadi beberapa sub-transaksi dan mendistribusikannya pada situs-situs yg cocok utk dieksekusi.
  • Mengkoordinasikan terminasi transaksi (commit, atau abort).
  • Tiap situs menyimpan log untuk tujuan recovery.
Status-status yang dapat dicapai oleh sebuah transaksi sejak mulai dilaksanakan hingga selesai atau batal adalah:
  1. Aktif (Active), yang merupakan status awal (initial state) sebuah transaksi yang menunjukkan transaksi tersebut masih dieksekusi.
  2. Berhasil Sebagian (Partially Committed), yaitu keadaan yang dicapai transaksi tepat pada saat operasi terakhir dalam transaksi selesai dikerjakan.
  3. Gagal (Failed), yang merupakan keadaan dimana sebuah transaksi terhenti pengeksekusiannya sebelum tuntas sama sekali.
  4. Batal (Aborted), yaitu keadaan dimana sebuah transaksi dianggap tidak/belum dikerjakan yang tentu dengan terlebih dahulu diawali dengan mengembalikan semua data yang telah diubah ke nilai-nilai semula. (yang menjadi tanggung jawab DBMS).
  5. Berhasil Sempurna (Committed), keadaan dimana transaksi telah dinyatakan berhasil dikerjakan seluruhnya dan basis data telah merefleksikan perubahan-perubahan yang memang diinginkan transaksi.

Ketika sebuah transaksi mulai dikerjakan, maka transaksi itu berada dalam status aktif.  Jika terjadi penghentian sebelum operasi berakhir, maka transaksi segera beralih ke status gagal/failed.  Namun, bila keseluruhan transaksi selesai dikerjakan, maka transaksi itu berada pada status berhasil sebagian/partially committed, dimana perubahan-perubahan data masih berada di dalam memori utama yang bersifat volatile/tidak permanen.  Transaksi dalam status ini masih mungkin untuk pindah ke status failed, karena ada pembatalan transaksi baik sengaja maupun tidak.  Jika tidak beralih ke status failed, maka nilai-nilai data yang ada di memori utama akan direkam ke dalam disk yang bersifat permanen.  Begitu proses perekaman selesai, maka transaksi beralih ke status committed.  Sementara itu, transaksi yang berada pada status failed, maka DBMS harus menjalan proses rollback.  Proses tersebut dapat berupa:
  • Mengulangi pelaksanaan transaksi / restart, yang dilakukan pada transaksi yang failed akbiat kemacetan perangkat keras ataupun perangkat lunak dan bukannya penghentian transaksi secara sengaja oleh user.
  • Mematikan transaksi / kill, yang dilakukan untuk transaksi yang dihentikan secara sengaja oleh user atau akibat adanya kesalahan lojik dalam penulisan aplikasi.
Begitu salah satu dari pilihan proses tersebut selesai dilakukan, maka transaksi berpindah ke status batal (aborted).  Status berhasil sempurna/committed maupun batal/aborted merupakan status terminasi, yaitu status akhir dalam pelaksanaan transaksi.

Referensi :
Adikartakusuma. “Materi VIII Terdistributed “.https://adikartakusuma.wordpress.com . 13 Sep 2015. Web. 5 Jan 2016
Hadira. “Pertemuan VIII Sistem Terdistribusi”. http://esetblog.blogspot.co.id . 22 Jan 2014. Web. 6 Januari 2016
_______. “Pertemuan XII Sistem Terdistribusi http://esetblog.blogspot.co.id.  22 Jan 2014. Web. 6 Januari 2016
Hanif, Ibnu dan Muhammad Rijalul Kahfi. “Distributed Transactions”. http://te.ugm.ac.id.   Teknik Elektro FT UGM, Jogja. Web. 4 Januari 2016
Raharjo, Willy Sugiarto. “Sistem Terdistribus : Distributed Trunsactions”.htpp:// www.wiwied.staff.gunadarma.ac.id.  Teknik Informatika UKDW. Web. 3 Januari 2016
Sagita, Arul. “Sistem Basis Data Terdistribusi”. http://arulsagita.blogspot.co.id. Mei 2012. Web. 2 Jan 2016
Zonne, Chess. “Pengertian Transaksi Dalam Sistem Terdistribusi”. http://cheesterzone.blogspot.co.id. 15 April 2011. Web. 1 Jan 2016

2 komentar: