TRANSAKSI DAN PENGENDALIAN PERSAINGAN
Pengertian Transaksi merupakan bagian dari pengeksekusian sebuah program yang melakukan pengaksesan basis data dan bahkan juga melakukan serangkaian perubahan data. DBMS yang kita gunakan harus bisa menjamin bahwa setiap satuan transaksi harus dapat dikerjakan secara utuh atau tidak sama sekali.
Pelaksanaan sebuah transaksi akan berpeluang untuk mengganggu integritas basis data yang membuat kondisi data atau hubungan antar data berada dalam keadaan salah atau tidak seperti yang seharusnya. Untuk menjamin agar integritas tetap terpelihara, setiap transaksi harus memiliki sifat : atomik, konsisten, terisolasi, bertahan.
Contoh Transaksi Sebuah basis data yang mengelola data simpanan nasabah pada sebuah bank. Selanjutnya diinginkan sebuah transaksi yang melibatkan dua nasabah sekaligus, dimana nasabah pertama akan melakukan transfer sejumlah dana ke nasabah yang lain. Jika transaksi perbankan ingin diimplementasikan sebuah transaksi basis data, maka kita membutuhkan dua buah operasi elementer yaitu read(X) dan write(X).
Contoh Transaksi Jika Ti menyatakan sebuah transaksi basis data yang melakukan transfer uang sebesar Rp. 100.000 (seratus ribu rupiah) dari rekening (milik nasabah pertama) ke rekening nasabah B (milik nasabah kedua), maka Ti dapat didefinisikan melalui rincian operasi : Ti : read (A) A ← A – 100000 write (A) read (B) B ← B + 100000 write (B)
Status Transaksi Secara lengkap, status-status transaksi dapat dicapai oleh sebuah transaksi sejak mulai dilaksanakan hingga selesai atau dibatalkannya transaksi, yaitu : Partially commited commited active aborted failed Prepared by Harsiti 2009
Status Transaksi Jika transaksi berada dalam status “failed” maka DBMS harus menjalankan proses rollback. Proses tersebut bisa berupa : Mengulangi pelaksanaan transaksi (restart), yang dapat dilakukan terhadap operasi yang gagal (failed) akibat kemacetan sistem bukan penghentian transaksi secara sengaja oleh user. Mematikan transaksi (kill), yang dilakukan untuk transaksi yang dihentikan sengaja oleh user atau akibat adanya kesalahan logik dalam penulisan aplikasi,
Persaingan Eksekusi Transaksi Concurrency : banyak transaksi yang dijalankan secara bersamaan. Hampir semua DBMS adalah multiuser, sehingga berpeluang terjadinya inkonsistensi basis data. Maka perlu adanya pengendalian persaingan eksekusi transaksi (concurrency control). Prepared by Harsiti 2009
Persaingan Eksekusi Transaksi Alasan mengapa transaksi yang konkuren banyak dipilih dibandingkan transaksi secara serial: a. Idle time (waktu tunggu) kecil. b. Response time (waktu tanggap) lebih baik Prepared by Harsiti 2009
Contoh Sistem Konkuren Masih menggunakan contoh yang sama dengan contoh transaksi Saldo Nasabah A = Rp. 2.000.000,- Saldo Nasabah B = Rp. 1.000.000,- Transaksi Pentransferan dana dari rekening A ke rekening B. Prepared by Harsiti 2009
Contoh Sistem Konkuren T1 berfungsi untuk mentransfer sebesar Rp. 100.000,- ke rekening B Operasinya : T1 : read (A) A ← A-100000 write (A) read (B) B ← B + 100000 write (B) Prepared by Harsiti 2009
Contoh Sistem Konkuren T2 berfungsi mentransfer dana sebesar 10% dari saldo rekening A ke rekening B. Operasinya : T2 : read (A) temp ← 0.1 * A A ← A – temp write (A) read (B) B ← B + temp write (B) Prepared by Harsiti 2009
Contoh Sistem Konkuren Saldo akhir dari kedua rekening setelah kedua transaksi di atas dikerjakan, tergantung pada bagaimana urutan pengerjaan (schedule) dari transaksi tersebut. Jika transaksi T1 dikerjakan lebih dulu daripada T2, dan kedua transaksi dikerjaan secara serial demi konsistensi basis data secara keseluruhan, maka bentuk operasi dari kedua transaksi tersebut adalah : Prepared by Harsiti 2009
Contoh Sistem Konkuren Schedule 1 T1 T2 read (A) A← A-100000 write (A) read (B) B ← B + 100000 write (B) temp ← 0.1 * A A ← A – temp B ← B + temp Prepared by Harsiti 2009
Contoh Sistem Konkuren Schedule 2 Jika T2 dikerjakan lebih dahulu dari pada T1 T1 T2 read (A) temp ← 0.1 * A A ← A – temp write (A) read (B) B ← B + temp write (B) A← A-100000 B ← B + 100000 Prepared by Harsiti 2009
Contoh Sistem Konkuren Kesimpulanya, bagaimanapun urutan pengerjaan transaksi, selama dikerjakan secara serial maka pada akhir transaksi, kondisi konsiste yang baru akan tetap diperoleh. Prepared by Harsiti 2009
Contoh Sistem Konkuren Pada database terdistribusi memungkin untuk melakukan transaksi secara bersama dan tentu saja pilihan urutan pengerjaan transaksi (schedule) akan lebih banyak lagi. Jika terdapat transaksi sebanyak n, akan ada transaksi lebih dari n! buah alternatif schedule. Prepared by Harsiti 2009
Contoh Sistem Konkuren Schedule 3 T1 T2 read (A) A ← A – 100000 Write (A) temp ← 0.1 * A A ← A – temp write (A) Read (B) B ← B + 100000 Write (B) read (B) B ← B + temp write (B) Prepared by Harsiti 2009
Contoh Sistem Konkuren Schedule 3 Pada Schedule 3 ini, konsistensi hasil transaksi tetap dapat diperoleh kendati kedua transaksi tersebut dikerjakan secara konkuren. Tetapi kondisi di atas belum tentu dapat dipenuhi oleh schedule konkuren lainnya. Prepared by Harsiti 2009
Contoh Sistem Konkuren Schedule 4. T1 T2 I/O read (A) CPU A ← A – 100000 I/0 read (A) I/O write (A) CPU temp ← 0,1 * A CPU A ← A -temp I/O write (A) I/O read (B) I/O read (B) CPU B ← B + temp CPU B ← B + 100000 I/O write (B) I/O write (B) Prepared by Harsiti 2009
Contoh Sistem Konkuren Schedule 4. Bagaimana nilai akhir saldo setelah pelaksanaan transaksi T1 dan T2 selesai dikerjakan? Masih tetap konsistenkah saldonya? Prepared by Harsiti 2009