School of Information Systems

Advanced Transaction Models dan Nested Transaction Model Sagas

      Advanced transaction models atau model transaksi tingkat tinggi adalah suatu model yang dibentuk untuk memudahkan pembuat database atau perusahaan mengelola transaksi sehingga segala kemungkinan yang ada dapat teratasi. Model transaksi sangat berperan penting dalam pembentukan transaksi dalam DBMS, Transaksi harus meyakinkan bahwa efek dalam transaksi tersebut dapat selalu terjamin tidak akan gagal dan hal ini bergantung pada terciptanya level isolasi, atau Isolation Level, dimana terdapat level atau model-model yang berperan untuk menjamin tidak gagalnya sebuah transaksi. Model Transaksi tingkat tinggi dapat dibedakan menjadi beberapa jenis. Beberapa contohnya yaitu Nested Transaction Model dan Sagas. Berikut lebih lengkapnya mengenai model transaksi tersebut.

Nested Transaction Model

     Nested transaction adalah transaksi berbasis data yang dimulai dengan intruksi transaksi yang sudah dimulai, nested transaction di implementasikan secara berbeda di database yang berbeda. Namun, mereka memiliki kesamaan bahwa perubahan tidak dibuat terlihat oleh transaksi yang tidak terkait sampai transaksi terluar telah dilakukan. Ini berarti bahwa komit dalam transaksi dalam tidak selalu bertahan pembaruan untuk sistem.

  1. Jika suatu program sudah dieksekusi dalam suatu transaksi dan mengeluarkan perintah Mulai, maka Mulai membuat subtransaksi dari transaksi induknya, daripada membuat transaksi baru yang independen. Misalnya, jika DebitChecking dipanggil dari PayLoanFromChecking, Start di DebitChecking memulai subtransaksi.
  2. Jika suatu program belum mengeksekusi di dalam transaksi dan mengeluarkan perintah Mulai, maka Mulai membuat transaksi baru yang independen, disebut transaksi tingkat atas, yang bukan merupakan subtransaksi dari transaksi lain. Misalnya, Mulai di PayLoanFromChecking membuat transaksi tingkat atas.
  3. .Operasi Komit dan Batalkan yang dijalankan oleh transaksi tingkat atas memiliki semantik yang biasa. Artinya, Berkomitmen menginstal pembaruan transaksi secara permanen dan memungkinkannya dibaca oleh transaksi lain. Batalkan membatalkan semua pembaruan transaksi. Misalnya, Komit dan Batalkan di PayLoanFromChecking memiliki efek ini.
  4. Jika suatu subtransaksi S dibatalkan, maka semua operasi S dibatalkan. Ini termasuk semua subtransaksi dari S. Namun, pembatalan itu tidak menyebabkan pembatalan orangtua S. Orang tua hanya diberitahu bahwa subtransaksi anaknya dibatalkan. Misalnya, Batalkan di DebitChecking membatalkan subtransaksi, tetapi tidak transaksi induknya yang dimulai oleh PayLoanFromChecking.
  5. Sementara subtransaksi dieksekusi, item data yang telah diperbarui terisolasi dan karenanya tidak terlihat oleh transaksi dan subtransaksi lainnya (seperti model transaksi flat). Misalnya, jika PayLoanFromChecking mengeksekusi subtransaksinya DebitChecking dan PayLoan secara bersamaan dan subtransaksi tersebut membaca dan menulis beberapa data bersama, maka DebitChecking tidak akan melihat pembaruan PayLoan hingga setelah PayLoan berkomitmen, dan PayLoan tidak akan melihat DebitChecking. pembaruan hingga setelah DebitChecking berkomitmen.
  6. Ketika subtransaksi dilakukan, item data yang telah diperbarui dibuat terlihat oleh subtransaksi lainnya. Misalnya, setelah PayLoan melakukan, data apa pun yang diperbarui akan terlihat oleh DebitChecking (jika mereka berbagi data).

Aturan (5) adalah persyaratan tentang perilaku isolasi transaksi nested. Jika penguncian dua fase adalah mekanisme yang digunakan untuk mendapatkan isolasi, maka itu perlu dimodifikasi sedikit untuk memenuhi aturan (5).

  • Transaksi tingkat atas mengatur kunci dengan cara yang sama seperti yang mereka lakukan dalam model transaksi non-nested.
  • Ketika subtransaksi S melakukan atau membatalkan, kunci-kuncinya diwarisi oleh induk S, yang merupakan transaksi tingkat atas atau subtransaksi lainnya yang satu tingkat lebih tinggi dalam hierarki nested.
  • Permintaan untuk mengunci item data x atas nama subtransaksi S dikabulkan jika kunci yang saling bertentangan pada x, jika ada, dipegang oleh leluhur S dalam hierarki nested.

      Efek dari (ii) dan (iii) adalah bahwa subtransaksi dari induk yang sama dikunci dua fase terhadap satu sama lain dan karenanya serializable terhadap satu sama lain. Oleh karena itu, walaupun subtransaksi dapat dilakukan bersamaan dengan banyak interleaving dari operasinya, pada akhirnya orang dapat memikirkan subtransaksi dari induk yang sama dengan operasi terisolasi.

Sagas

      Sagas adalah sebuah rangkaian transakti tetap yang bisa disisipi oleh transaksi lain. Dalam model Sagas, DBMS akan menjamin semua transaksi dalam model saga selesai atau DBMS akan menjalankan transaksi kompensasi untuk membatalkan transaksi yang tereksekusi secara parsial. Model saga terdiri dari rangkaian beberapa sub transaksi sehingga transaksi dapat disisipkan tanpa merusak keseluruhan transaksi. Akan tetapi, sebagai akibat dari terdiri atas sub-sub transaksi, model sagas tidak memiliki properti isolasi sehingga saga dapat melihat hasil dari saga lain yang baru selesai parsial.

      Apabila suatu sub transaksi gagal maka keseluruhan saga ikut gagal, hal ini berarti bahwa efek dari sub transaksi yang sudah dieksekusi harus dibatalkan. Akan tetapi, karena transaksi tersebut sudah dicommit maka untuk tiap-tiap sub transaksi perlu diberikan transaksi kompensasi untuk membatalkan efek dari eksekusi transaksi tersebut.

Keuntungan menggunakan model Sagas:

1) Mendukung transaksi jangka panjang.

2) Atomitas transaksi

3) Tidak ada lock panjang pada suatu transaksi karena transaksi berjalan secara paralel

Kerugian menggunakan model Sagas:

1) Sulit untuk di debug, terutama apabila terdapat banyak sub transaksi

2) Tidak memiliki properti isolasi

3) Mendefinisikan transasksi kompensasi untuk tiap sub transaksi sulit dan memerlukan waktu cukup lama.

Sumber/Referensi

– https://www.sciencedirect.com/topics/computer-science/nested-transaction

-https://developers.redhat.com/blog/2018/10/01/patterns-for-distributed-transactions-within-a-microservicesarchitecture/#:~:targetText=One%20big%20advantage%20of%20the,continue%20waiting%20for%20user%20input

– http://lig-membres.imag.fr/krakowia/Files/MW-Book/Chapters/Transact/transact.html

Yael Raharja, Jonathan Anson, Andreas