Manajemen Transaksi dan properti transaksi ACID

  • Sebuah transaksi adalah unit eksekusi program yang mengakses dan mungkin mungkin mengubah beberapa item data.
  • Suatu transaksi harus melihat database yang konsisten.
  • Selama eksekusi transaksi, database mungkin tidak konsisten.
  • Ketika sebuah transaksi dianggap commit maka database harus konsisten.
  • Dua hal yang berkaitan dengan manajemen transaksi:

–        Kegagalan fungsi (Failures), terdiri dari kegagalan perangkat keras (hardware) dan system crash

–        Eksekusi beberapa transaksi secara bersamaa

Untuk menjaga integritas data, database sistem harus menjamin:

ü   Atomicity. Jika semua operasi pada sebuah transaksi sukses maka transaksi dianggap sukses, jika salahsatu  operasi pada suatu transaksi gagal maka transaksi dianggap gagal.

ü Consistency. Eksekusi sebuah transaksi secara terisolasi bertujuan untuk menjaga konsistensi database.

ü Isolation. Meskipun ada beberapa transaksi yang berlangsung bersamaan, masing-masing transaksi tidak boleh mengetahui transaksi lain yang sedang berlangsung. Hasil transaksi sementara harus disembunyikan dari transaksi lain yang sedang berlangsung.

–        Sehingga, untuk pasangan transaksi Ti dan Tj, yang terlihat oleh Ti adalah Tj selesai melakukan  eksekusi sebelum Ti mulai, atau  Tj memulai eksekusi setelah Ti selesai.

ü Durability. Setelah sebuah transaksi sukses dilakukan, perubahan-perubahan yang dibuatnya terhadap database bersifat permanen, bahkan jika terjadi kegagalan sistem.

  • Contoh. Sebuah transaksi transfer uang
    • Transaksi untuk transfer $50 dari account A ke account B:

1.   read(A)

2.   A := A – 50

3.   write(A)

4.   read(B)

5.   B := B + 50

6.   write(B)

  • Consistency requirement – jumlah A dan B tidak berubah setelah eksekusi transaksi.
  • Atomicity requirement — Jika transaksi gagal dijalankan setelah langkah ke 3 dan sebelum langkah ke 6, maka sistem harus menjamin bahwa perubahan yang terjadi tidak direfleksikan di database, jika hal ini tidak dapat dilakukan maka akan menghasilkan inconsistency.
  • State (keadaan) Transaksi

ü  Active, merupakan keadaan (state) awal; transaksi berada di state ini ketika dia sedang dieksekusi

ü  Partially committed, setelah operasi (statement) terakhir telah dieksekusi.

ü  Failed, setelah diketahui bahwa eksekusi secara normal tidak lagi dapat dilakukan.

ü  Aborted, setelah sebuah transaksi di-roll back (dikembalikan ke kondisi sebelum transaksi). Ada dua pilihan setelah transaksi di-abort :

–        Ulangi transaksi

–        hanya jika tidak ada kesalahan logika internal

ü  Committed, setelah semua operasi selesai dijalankan dengan sukses.

  • State Transaksi

Implementasi Atomicity dan Durability

  • Komponen recovery-management dari suatu sistem database menerapkan dukungan untuk atomicity dan durability.
  • Hal ini dilakukan dengan skema database bayangan  (shadow-database ) :

–        Jika diasumsikan hanya satu transaksi yang aktif pada satu waktu.

–        Sebuah pointer yang disebut db_pointer selalu menunjuk ke salinan (copy) database yang konsisten.

–        Semua perubahan (update) dibuat ke shadow copy, dan db_pointer hanya bisa menunjuk ke shadow copy yang sudah diubah hanya setelah transaksi mencapai state partial commit dan semua perubahan telah dimasukkan ke disk.

–        Jika transaksi gagal, shadow copy konsisten yang lama yang sedang ditunjuk oleh db_pointer dapat digunakan, dan shadow copy yang sekarang dapat dihapus.

Fakta Skema Shadow Database

  • Asumsi disk tidak gagal
  • Berguna untuk teks editor, tetapi sangat tidak efisien untuk database berukuran besar: mengeksekusi sebuah transaksi membutuhkan penyalinan seluruh database.

Eksekusi Secara Bersamaan (Concurrent Executions)

Beberapa transaksi dimungkinkan untuk berjalan secara bersamaan dalam sebuah sistem. Keuntungannya adalah:

–        Menambah utilitas processor dan disk, meningkatkan throughput transaksi: satu transaksi dapat menggunakan CPU sementara yang lain membaca atau menulis ke disk.

–        Mengurangi respons time rata-rata: transaksi-transaksi singkat tidak harus menunggu dibelakang transaksi yang lama.

  • Skema Concurrency control – mekanisme-mekanimsme untuk mencapai isolasi, untuk mengontrol interaksi di antara transaksi yang berjalan bersamaan sehingga dapat mencegah mereka untuk merusak konsistensi database.
  • Schedules – Adalah urut-urutan yang menyatakan urutan secara kronologis bagaimana instruksi-instruksi yang bersamaan dieksekusi

–        Sebuah schedule untuk satu set transaksi harus terdiri dari semua instruksi-instruksi yang ada di transaksi-transaksi pembentuknya.

–        Harus menjaga urutan instruksi di setiap transaksi.

  • Contoh Schedule

ü  Misalkan T1 melakukan transfer $50 daro A ke B, dan T2 melakukan transfer 10% dari saldo A ke B. Schedule ini adalah schedule serial, di mana T1 diikuti oleh T2

Contoh Schedule

  • Untuk transaksi yang sama, tetapi dijalankan dengan schedule yang equivalen

Iklan

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

 
%d blogger menyukai ini: