BAB 8 DISTRIBUTED TRANSACTIONS



DISTRIBUTED TRANSACTIONS

1.Distributed Transactions
● Proses transaksi (flat / nested) yang mengakses object yang dikelola oleh beberapa server
● Konsep atomicity tetap berlaku (all or nothing)
● Diperlukan sebuah coordinator untuk memastikan konsep atomicity
● Menggunakan protokol yang sudah disepakati sejak awal (twophase commit protocol)
● Memerlukan concurrency control

2.Flat Transaction (1)
● Sebuah client melakukan request pada lebih dari satu server
● Sebuah transaksi diselesaikan dahulu sebelum meminta ke server berikutnya (sequential)
● Jika menggunakan konsep locking, maka sebuah transaksi hanya bisa menunggu satu obyek saja
3.Nested Transactions (1)
● Top level transaction bisa membuat sub transaksi
● Sub transaksi pada level yang sama bisa berjalan secara concurrent (parallel)
● Mampu memanfaatkan utilitas prosessor (pada kasusmulti processor)

 4.PROSES TRANSAKSI
● Client mengirimkan request openTransaction pada coordinator pada sembarang server
● Coordinator yang dituju mengembalikan identifier transaction yang unik pada client
● Client bekerjasama dengan coordinator dengan commit protocol

5.Coordinator (1)
● Sebuah host/system yang menjadi "mandor" untukmenyelesaikan sebuah transaksi terdistribusi
● Bertanggung jawab untuk mengambil keputusan commit/abort
● Selama terjadi transaksi, coordinator mencatat daftar referensi dari partisipan dan vice versa
● Coordinator tahu semua daftar peserta dan vice Versa
 6.Atomic Commit Protocols
● Dikembangkan awal 1970an
● Bertujuan untuk memastikan bahwa setiap perubahan terjadi pada semua systematau tidak sama sekali (all or nothing)
● Terdapat tiga jenis
- One phase commit protocol
- Two phase commit protocol
- Three phase commit protocol
● Berakhir setelah transaksi di commit/abort

7.One Phase Commit Protocol
● Coordinator mengirimkan pesan commit atau abort pada semua partisipan
● Proses diulang terus menerus sampe semua sudah membalas
● Masalah : Tidak mungkin melakukan abort setelah ada permintaan untuk commit
● Solusi : Two Phase Commit

7.1.Two Phase Commit Protocol (1)
● Fase 1 (voting)
- Coordinator mengirimkan request canCommit pada setiap partisipan
- Partisipan memilih yes/no dan mengirim balik pada coordinator. Jika yes, maka menyimpan obyek pada penyimpanan permanen. Jika tidak, abort

7.2.Two Phase Commit Protocol (2)
● Fase 2
- Coordinator mengumpulkan hasil voting
- Jika semua setuju, coordinator memutuskan commit dan mengirimkan doCommit pada semua partisipan
- Selain itu, coordinator memutuskan abort dan mengirimkan doAbort pada semua partisipan yang memilih yes
- Partisipan yang memilih yes menunggu doCommit/ doAbort dari coordinator

7.3.Two Phase Commit Protocol (3)
● Setelah menerima salah satu dari pesan diatas, partisipanmenjalankan perintah sesuai dengan pesan yang diterima
● Jika dilakukan perintah commit, maka partisipanmengirimkan pesan haveCommitted pada coordinator sebagai konfirmasi bahwa proses sudah dilaksanakan
 8.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

8.1.Three Phase Commit
● Mencoba mengatasi masalah blocking
● 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 aksi (commit/abort)

8.2.Masalah pada Three Phase Commit
● Susah implementasinya
● Harus memastikan bahwa state harus tetap konsistenmeskipun terdapat perbedaan hasil (transaksi dicommit di satu site dan abord di site yang lain sebagai akibat dari network partitioning)
● Terlalu banyak overhead

9.Concurrency Control
● Setiap server mengelola sekumpulan obyek dan bertanggung jawab untuk memastikan
tetap konsisten ketika diakses oleh transaksi concurrent
● Jenis
- Locking
- Timestamp ordering concurrency control
- Optimistic concurrency control
● Baca materi minggu kemarin

10.Distributed Locking (1)
● Lock pada obyek dikendalikan secara lokal oleh
local lock manager
- Memberikan akses untuk lock
- Membuat transaksi yang meminta request menunggu
● Tidak bisa melepas lock sampai ada kepastian
abort/commit pada semua server
● Bisa menimbulkan distributed deadlock

11.Phantom Deadlock (1)
● Deadlock yang terdeteksi tetapi bukan merupakan sebuah deadlock
● Terjadi karena adanya delay pada saat pengiriman informasi deadlock pada jaringan
 

11.1Phantom Deadlock (2)
● Transaksi U melepas obyek pada server X
● Transaksi U meminta V pada server Y
● Asumsi
- Server Y diterima terlebih dahulu dibandingkan server X
● T >U >V >T
● T >U sudah tidak ada lagi

12.Logging
● Semua transaksi yang commit dicatat pada log
● Urutan entry menggambarkan urutan transaksi
● Setelah crash, semua transaksi yang tidak memiliki status committed akan dibatalkan