MANAJEMEN TRANSAKSI BASISDATA -...

20
MANAJEMEN TRANSAKSI BASISDATA 1

Transcript of MANAJEMEN TRANSAKSI BASISDATA -...

Page 1: MANAJEMEN TRANSAKSI BASISDATA - dinus.ac.iddinus.ac.id/repository/docs/ajar/transaction_management_#1.pdf · 1 atau lebih transaksi lain yang selesai menggunakan data tersebut. Contoh

MANAJEMEN TRANSAKSI BASISDATA

1

Page 2: MANAJEMEN TRANSAKSI BASISDATA - dinus.ac.iddinus.ac.id/repository/docs/ajar/transaction_management_#1.pdf · 1 atau lebih transaksi lain yang selesai menggunakan data tersebut. Contoh

Konsep Transaksi

State Transaksi

Implementasi Atomik dan Durabilitas

Eksekusi Konkuren

Serializability

Recoverability

Implementasi Isolasi

Definisi Transaksi di SQL

Tes Serializability

2

Page 3: MANAJEMEN TRANSAKSI BASISDATA - dinus.ac.iddinus.ac.id/repository/docs/ajar/transaction_management_#1.pdf · 1 atau lebih transaksi lain yang selesai menggunakan data tersebut. Contoh

Transaksi Dalam istilah database, adalah “aksi membaca dari atau menulis ke database”.

Transaksi adalah pekerjaan yang harus sepenuhnya diselesaikan atau dibatalkan. Transaksi yang berhasil tetap menghasilkan kondisi database yang konsisten (dimana semua batasan integritas data terpenuhi).

Transaksi dapat mencakup:

o Pernyataan SELECT untuk menampilkan isi tabel o Pernyataan UPDATE untuk mengubah nilai atribut dalam tabel o Pernyataan INSERT untuk menambah baris ke 1 atau lebih tabel o Kombinasi dari pernyataan SELECT, UPDATE, & INSERT

Transaksi terdiri dari semua operasi yang dieksekusi diantara begin transaction dan end transaction (pada Oracle).

3

Page 4: MANAJEMEN TRANSAKSI BASISDATA - dinus.ac.iddinus.ac.id/repository/docs/ajar/transaction_management_#1.pdf · 1 atau lebih transaksi lain yang selesai menggunakan data tersebut. Contoh

4

ANSI (The American National Standards Institute) mendefinisikan standar

yang mengawal transaksi database SQL.

Standar tersebut menyebutkan ketika serangkaian transaksi diberikan oleh

user atau program aplikasi, maka urutan tersebut harus dieksekusi terus

sampai salah satu dari 4 kejadian berikut ini muncul :

1. Adanya pernyataan COMMIT yang mengakhiri transaksi SQL.

2. Adanya pernyataan ROLLBACK yang membatalkan semua perubahan &

database dikembalikan ke kondisi konsisten sebelumnya.

3. Akhir dari program tercapai dimana semua perubahan tersimpan dalam

database (sama dengan COMMIT).

4. Program diberhentikan dimana semua perubahan dibatalkan & database

dikembalikan ke kondisi konsisten sebelumnya (sama dengan

ROLLBACK).

Page 5: MANAJEMEN TRANSAKSI BASISDATA - dinus.ac.iddinus.ac.id/repository/docs/ajar/transaction_management_#1.pdf · 1 atau lebih transaksi lain yang selesai menggunakan data tersebut. Contoh

5

Atomicity: Semua operasi (permintaan SQL) dari transaksi harus diselesaikan; jika tidak maka transaksi dibatalkan.

Consistency: Ketika transaksi diselesaikan, database harus dalam kondisi konsisten; jika ada bagian transaksi yang melanggar batasan integritas maka seluruh transaksi dibatalkan.

Isolation: Data yang digunakan selama eksekusi transaksi tidak dapat digunakan oleh transaksi kedua

sampai transaksi pertama selesai. Berguna dalam database multiuser karena beberapa user dapat mengakses & mengupdate database pada waktu yang sama.

Durability: Memastikan bahwa ketika perubahan transaksi dilakukan & dicommit, maka tidak dapat dibatalkan atau dihilangkan, bahkan ketika terjadi kegagalan sistem.

Serializability: Memastikan bahwa jadwal untuk eksekusi konkurensi dari transaksi menghasilkan hasil

yang konsisten. Penting dalam database multiuser & terdistribusi dimana terdapat beberapa transaksi yang dieksekusi sekaligus.

Page 6: MANAJEMEN TRANSAKSI BASISDATA - dinus.ac.iddinus.ac.id/repository/docs/ajar/transaction_management_#1.pdf · 1 atau lebih transaksi lain yang selesai menggunakan data tersebut. Contoh

Secara default, skenario transaksi adalah Auto Commit, yaitu semua proses yang berhasil dilaksanakan akan secara otomatis disimpan dalam database secara fisik .

Jika diinginkan mulai dari posisi tertentu Auto Commit tidak berfungsi, dapat gunakan perintah Start Transaction (pada Mysql)

Seluruh perintah setelah Start Transaction akan ditunda untuk disimpan, sampai bertemu pernyataan Commit yang akan menyimpan seluruh proses yang tertunda.

6

Page 7: MANAJEMEN TRANSAKSI BASISDATA - dinus.ac.iddinus.ac.id/repository/docs/ajar/transaction_management_#1.pdf · 1 atau lebih transaksi lain yang selesai menggunakan data tersebut. Contoh

Seluruh perintah setelah Start Transaction akan ditunda untuk disimpan, sampai bertemu pernyataan Rollback yang akan membatalkan seluruh proses yang tertunda.

Perintah berikut tidak dapat di rollback, karena mengandung

fungsi commit secara implisit : Alter Table Create Index / Table / Database Drop Index / Table / Database Loack / Unlock Tables Start Transaction

7

Page 8: MANAJEMEN TRANSAKSI BASISDATA - dinus.ac.iddinus.ac.id/repository/docs/ajar/transaction_management_#1.pdf · 1 atau lebih transaksi lain yang selesai menggunakan data tersebut. Contoh

8

Page 9: MANAJEMEN TRANSAKSI BASISDATA - dinus.ac.iddinus.ac.id/repository/docs/ajar/transaction_management_#1.pdf · 1 atau lebih transaksi lain yang selesai menggunakan data tersebut. Contoh

Pada saat eksekusi transaksi, database bisa saja menjadi tidak

konsisten. Namun pada saat transaksi sampai pada level commit,

maka databasenya harus konsisten.

Dua hal utama yang mungkin akan dihadapi pada saat melakukan

transaksi :

Terjadinya berbagai macam kegagalan, yang bisa disebabkan

karena kegagalan hardware, system crash, dll

Eksekusi konkuren (secara bersama) yang melibatkan banyak

transaksi

9

Page 10: MANAJEMEN TRANSAKSI BASISDATA - dinus.ac.iddinus.ac.id/repository/docs/ajar/transaction_management_#1.pdf · 1 atau lebih transaksi lain yang selesai menggunakan data tersebut. Contoh

10

DBMS menggunakan log transaksi untuk menelusuri

semua transaksi yang mengupdate database. DBMS menggunakan informasi yang tersimpan dalam

log ini untuk pemulihan yang dipicu oleh perintah ROLLBACK, program diberhentikan, atau kegagalan sistem seperti terputusnya jaringan atau system crash.

Page 11: MANAJEMEN TRANSAKSI BASISDATA - dinus.ac.iddinus.ac.id/repository/docs/ajar/transaction_management_#1.pdf · 1 atau lebih transaksi lain yang selesai menggunakan data tersebut. Contoh

11

Record untuk awal transaksi. Untuk tiap komponen transaksi (pernyataan SQL): Jenis operasi yang dijalankan (INSERT, UPDATE, DELETE). Nama objek yang dipengaruhi oleh transaksi (nama tabel). Nilai sebelum & sesudah untuk field yang diupdate. Pointer ke entri log transaksi sebelumnya & selanjutnya

untuk transaksi yang sama. Akhir dari transaksi (COMMIT).

Walaupun penggunaan log transaksi meningkatkan overhead pemrosesan dari DBMS, tetapi sebanding dengan kemampuannya untuk memulihkan database yang korup.

Log transaksi menyimpan :

Page 12: MANAJEMEN TRANSAKSI BASISDATA - dinus.ac.iddinus.ac.id/repository/docs/ajar/transaction_management_#1.pdf · 1 atau lebih transaksi lain yang selesai menggunakan data tersebut. Contoh

12

Page 13: MANAJEMEN TRANSAKSI BASISDATA - dinus.ac.iddinus.ac.id/repository/docs/ajar/transaction_management_#1.pdf · 1 atau lebih transaksi lain yang selesai menggunakan data tersebut. Contoh

13

Kontrol Konkurensi

Kontrol konkurensi adalah pengaturan dari eksekusi transaksi yang berkelanjutan dalam sistem database multiuser.

Tujuan dari kontrol konkurensi adalah untuk

memastikan serializability dari transaksi dalam lingkungan multiuser.

Tiga masalah utama: lost updates, uncommitted data,

& inconsistent retrievals.

Page 14: MANAJEMEN TRANSAKSI BASISDATA - dinus.ac.iddinus.ac.id/repository/docs/ajar/transaction_management_#1.pdf · 1 atau lebih transaksi lain yang selesai menggunakan data tersebut. Contoh

14

Kontrol Konkurensi

Muncul ketika 2 transaksi konkuren, T1 & T2 mengupdate elemen data yang sama & salah satu update hilang (ditimpa oleh transaksi lain).

Contoh ilustrasi pada tabel PRODUCT: Asumsikan nilai produk (PROD_QOH) adalah 35. Terdapat 2 transaksi, T1 & T2, muncul & mengupdate nilai PROD_QOH. T1 menambah 100 unit sementara T2 mengurangi 30 unit ke nilai PROD_QOH.

Lost Updates

Page 15: MANAJEMEN TRANSAKSI BASISDATA - dinus.ac.iddinus.ac.id/repository/docs/ajar/transaction_management_#1.pdf · 1 atau lebih transaksi lain yang selesai menggunakan data tersebut. Contoh

15

Kontrol Konkurensi

Lost Updates

Page 16: MANAJEMEN TRANSAKSI BASISDATA - dinus.ac.iddinus.ac.id/repository/docs/ajar/transaction_management_#1.pdf · 1 atau lebih transaksi lain yang selesai menggunakan data tersebut. Contoh

16

Kontrol Konkurensi

Uncommitted Data

Muncul ketika 2 transaksi, T1 & T2, dieksekusi secara

bersamaan & transaksi pertama (T1) dikembalikan

setelah transaksi kedua (T2) mengakses data yang tidak

dicommit – sehingga melanggar properti isolation dari

transaksi.

Transaksi mengakses data dengan operasi :

read(X), mentransfer data item X dari database ke local buffer yang dimiliki oleh transaksi

yang mengeksekusi operasi pembacaan (read).

write(X), mentransfer data item X dari local buffer dari aksi transaksi yang mengeksekusi

perintah penulisan kembali ke database (write)

Page 17: MANAJEMEN TRANSAKSI BASISDATA - dinus.ac.iddinus.ac.id/repository/docs/ajar/transaction_management_#1.pdf · 1 atau lebih transaksi lain yang selesai menggunakan data tersebut. Contoh

17

Kontrol Konkurensi

Uncommitted Data

Page 18: MANAJEMEN TRANSAKSI BASISDATA - dinus.ac.iddinus.ac.id/repository/docs/ajar/transaction_management_#1.pdf · 1 atau lebih transaksi lain yang selesai menggunakan data tersebut. Contoh

18

Kontrol Konkurensi

Inconsistent Retrievals

Muncul ketika transaksi mengakses data sebelum & sesudah 1 atau lebih transaksi lain yang selesai menggunakan data tersebut. Contoh : jika transaksi TI menghitung fungsi summary (aggregate) pada serangkaian data sementara transaksi lain (T2) mengupdate data yang sama. Masalahnya transaksi mungkin membaca beberapa data sebelum diubah & beberapa data setelah diubah, sehingga menghasilkan hasil yang salah.

Page 19: MANAJEMEN TRANSAKSI BASISDATA - dinus.ac.iddinus.ac.id/repository/docs/ajar/transaction_management_#1.pdf · 1 atau lebih transaksi lain yang selesai menggunakan data tersebut. Contoh

19

Kontrol Konkurensi

Inconsistent Retrievals

Page 20: MANAJEMEN TRANSAKSI BASISDATA - dinus.ac.iddinus.ac.id/repository/docs/ajar/transaction_management_#1.pdf · 1 atau lebih transaksi lain yang selesai menggunakan data tersebut. Contoh

20

Tugas Praktikum

Tugas ini dikerjakan secara bekelompok. a. Mempraktekan masalah-masalah utama pada kontrol konkurensi : lost updates, uncommitted data, & inconsistent retrievals. b. Setelah database server MySQL Saudara sudah dapat diakses dari beberapa klien, buatlah database dan beberapa tabel pada database tersebut. (database dan tabel-tabel terserah Saudara). c. Buatlah user dengan access privileges tertentu sehingga database tersebut dapat diakses dari klien-klien (anggota kelompok Saudara yang lain). d. Lakukan beberapa transaksi dengan mengacu pada contoh-contoh transaksi di atas (lost updates, uncommitted data, & inconsistent retrievals). e. Buatlah laporan yang berisi catatan-catatan dari kejadian-kejadian (masalah-masalah) yang muncul dari transaksi-transaksi tersebut dan langkah untuk menyelesaikannya. Didalam laporan ditampilkan hasil dari screenshot dari kejadian / masalah yang muncul dan cara mengatasinya. f. Laporan dicetak dan dikumpulkan paling lambat Hari Senin, 4 Desember 2017.