DATABASE CONTROL
(Pengontrolan Terhadap
Basis Data)
1. TRANSAKSI
Apa itu TRANSAKSI?
Transaksi merupakan bagian dari
pengeksekusian sebuah program yang melakukan pengaksesan basis data.
Transaksi juga melakukan serangkaian perubahan data.
Umumnya terdiri atas sejumlah operasi yang membentuk satuan kerja lojik.
Apa itu TRANSAKSI?
DBMS harus menjamin bahwa setiap satuan transaksi harus dapat dikerjakan utuh atau tidak sama sekali
Tidak boleh ada transaksi yang hanya
dikerjakan sebagian (dapat mengakibatkan inkonsistensi data)
Apa itu TRANSAKSI?
Pada bahasa pemrograman, biasanya ada fasilitas untuk menyatakan adanya transaksi secara eksplisit yang dinyatakan melalui blok perintah yang diawali dengan begin
transaction dan diakhiri dengan end transaction
Satu kesatuan operasi yang terdapat didalam blok perintah tersebut merupakan sebuah
transaksi
Sebuah transaksi yang dilaksanakan akan berpeluang ‘mengganggu’ integritas basis data
Akibatnya kondisi data atau hubungan antar data berada dalam keadaan salah atau tidak seperti yang seharusnya
Agar integritas tersebut terpelihara, maka transaksi harus memiliki sifat-sifat ACID
SIFAT TRANSAKSI (ACID)
1. Atomik (Atomicity)
Semua operasi-operasi dalam transaksi dapat dikerjakan seluruhnya atau tidak sama sekali.
2. Konsisten (Consistency)
setiap eksekusi transaksi secara tunggal
harus dapat menjamin data tetap konsisten setelah transaksi berakhir.
SIFAT TRANSAKSI (ACID)
3. Terisolasi (Isolation)
Jika pada sebuah sistem basis data terdapat sejumlah transaksi yang dilaksanakan secara bersamaan, maka semua transaksi yang
dilaksanakan pada saat yang bersamaan tersebut harus dapat dimulai dan bisa
berakhir.
SIFAT TRANSAKSI (ACID)
4. Bertahan (Durability)
Perubahan data yang terjadi setelah sebuah transaksi berakhir dengan baik, harus dapat bertahan (permanen) bahkan jika seandainya sistem menjadi mati.
Contoh Kasus
(basis data pada sebuah Bank)
Misal sebuah transaksi yang melibatkan dua nasabah sekaligus, dimana nasabah pertama akan melakukan transfer sejumlah dana ke nasabah yang lain saldo nasabah pertama akan berkurang sebesar jumlah yang
ditransfer dan menambah saldo nasabah kedua dengan jumlah yang sama
Contoh Kasus
(basis data pada sebuah Bank)
Jika diimplementasikan sebagai sebuah
transaksi basis data, maka dibutuhkan dua buah operasi elementer terhadap basis data berikut ini :
a. read(X b. Write(X)
Contoh Kasus
(basis data pada sebuah Bank)
a. read(X)
berupa operasi untuk membaca nilai X dari basis data (dalam disk) dan menampungnya pada sebuah lokasi (buffer) di memori
b. write(X)
berupa operasi untuk mengambil nilai X ddari sebuah lokasi (buffer) di memori dan kemudian menuliskannya di basis data
Contoh Kasus
(basis data pada sebuah Bank)
Jika Ti menyatakan sebuah transaksi basis data yang melakukan transfer uang sejumlah Rp.100000 dari rekening A (milik nasabah
pertama) ke rekening B (milik nasabah
kedua), maka rincian operasi sebagai berikut:
Ti: read (A)
A A – 100000 write (A)
read (B)
B B + 100000 write (B)
Kaitan kasus (transfer dana) dengan sifat ACID
Keatomikan
sebelum transaksi dilaksanakan, rek. A = Rp.2000000 dan rek. B = Rp.1000000.
Jika pada saat operasi write(A) baru saja
dikerjakan terjadi kemacetan/kegagalan sistem, maka kondisi nilai untuk A telah berubah dari Rp.2000000 menjadi Rp.1900000 tetapi nilai B belum mengalami perubahan, tetap Rp.1000000.
(kondisi salah)
Kaitan kasus (transfer dana) dengan sifat ACID
Keatomikan
Maka sistem akan mengembalikan nilai-nilai yang telah berubah akibat dieksekusinya
transaksi diatas kepada nilai-nilai awalnya. Jadi transaksi tersebut dianggap belum dilakukan
sama sekali (sesuai kaidah sifat Atomik,
dikerjakan seluruhnya (utuh) atau tidak sama sekali).
Kaitan kasus (transfer dana) dengan sifat ACID
Konsistensi
Transaksi dikatakan telah konsisten jika total saldo rekening A dan saldo rekening B setelah terjadinya transaksi harus sama dengan total saldo keduanya rekening setelah transaksi dieksekusi.
Kaitan kasus (transfer dana) dengan sifat ACID
Isolasi
Pada saat operasi write(A) baru dikerjakan, nilai A+B pada saat itu berbeda dengan nilai A+B mula- mula. Jika pada saat tersebut ada transaksi lain, misal Tj yang juga sedang dieksekusi dan
melakukan pembacaan nilai A dan B, maka
transaksi Tj tidak mendapatkan informasi yang benar/konsisten basis data menjadi tidak konsisten
Kaitan kasus (transfer dana) dengan sifat ACID
Isolasi
Solusi agar kedua transaksi tersebut dapat selesai : - menerapkan suatu mekanisme kendali persaingan pengaksesan data (concurency control) untuk
menjamin terpeliharanya konsistensi basis data secara keseluruhan,
- mekanisme ini membuat eksekusi setiap transaksi tidak terganggu oleh eksekusi transaksi yang lain.
Kaitan kasus (transfer dana) dengan sifat ACID
Ketahanan
Jika transaksi pentransferan dana dari rekening A ke rekening B telah selesai dikerjakan, harus dapat dijamin agar nilai-nilai baru untuk A dan B (semua data yang telah berubah) dapat terus
bertahan.
STATUS TRANSAKSI
Terhentinya atau tidak sempurnanya pelaksanaan sebuah transaksi dapat diakibatkan oleh:
- kemacetan sistem operasi (hang), keputusan
penghentian transaksi oleh DBMS akibat adanya kondisi yang tak diinginkan, misal terlewatinya batas waktu (time out) pelaksanaan transaksi yang telah ditetapkan, dll
- insiden pada perangkat keras, matinya daya listrik, kerusakan harddisk (bad sector), dll
- aksi user itu sendiri, misalnya sengaja menghentikan eksekusi transaksi
STATUS TRANSAKSI
1. Aktif (Active)
merupakan status awal (initial state) sebuah transaksi yang menunjukkan transaksi
tersebut masih berlangsung (dieksekusi) 2. Berhasil sebagian (Partially Committed)
yaitu keadaan yang dicapai transaksi tepat pada saat operasi/instruksi terakhir dalam transaksi selesai dikerjakan
STATUS TRANSAKSI
3. Gagal (Failed)
merupakan keadaan dimana sebuah transaksi terhenti pengeksekusiannya sebelum tuntas sama sekali.
STATUS TRANSAKSI
4. Batal (Aborted)
yaitu keadaan dimana sebuah transaksi
dianggap tidak/belum dikerjakan yang tentu dengan terlebih dahulu diawali dengan
mengembalikan semua data yang telah
diubah oleh transaksi tersebut ke nilai-nilai semula (yang menjadi tanggung jawab
DBMS).
STATUS TRANSAKSI
5. Berhasil sempurna (Committed)
merupakan keadaan dimana transaksi telah dinyatakan berhasil dikerjakan seluruhnya dan basis data telah merefleksikan
perubahan-perubahan yang memang diinginkan transaksi.
Diagram Status Transaksi
active
aborted committed
failed partially committed
Keterangan :
Ketika sebuah transaksi mulai dikerjakan, maka
transaksi tersebut segera berada dalam status aktif (active).
Jika terjadi penghentian sebelum operasi terakhir dalam transaksi, maka transaksi segera beralih ke status baru, yaitu gagal (failed).
Jika keseluruhan operasi dalam transaksi selesai
dikerjakan, maka transaksi tersebut dinyatakan berada dalam status berhasil sebagian (partially committed), dimana perubahan-perubahan data masih berada
didalam memori utama yang bersifat volatile (tidak permanen)
Keterangan :
Transaksi dalam status partially committed masih
memiliki kemungkinan untuk berpindah ke status failed (karena ada pembatalan transaksi baik sengaja atau tidak sengaja).
Jika status partially committed tidak beralih ke status
failed, maka nilai-nilai data yang baru yang masih ada di memori utama akan disalin//direkam ke dalam disk yang bersifat permanen. Begitu proses perekaman selesai
dikerjakan, maka transaksi beralih ke status baru, yaitu berhasil sempurna (committed).
Keterangan :
Untuk transaksi yang berada dalam status failed, maka DBMS harus menjalankan proses rollback, berupa :
- mengulangi pelaksanaan transaksi (restart), yang dapat dilakukan terhadap transaksi yang gagal akibat
kemacetan sistem (hardware ataupun software) - mematikan transaksi (kill), yang dilakukan untuk
transaksi yang dihentikan secara sengaja oleh user atau akibat adanya kesalahan lojik dalam penulisan aplikasi.
Begitu salah satu dari pilihan proses tersebut selesai dilakukan, maka transaksi berpindah ke status batal (aborted).
EVALUASI
1. Jelaskan apa yang dimaksud dengan transaksi dalam basis data
2. Sebutkan sifat-sifat (ACID) yang harus dimiliki oleh sebuah transaksi agar
integritas basis data tetap terpelihara.
Jelaskan satu diantaranya
3. Jelaskan secara singkat apa yang akan terjadi jika sebuah transaksi tidak
dilaksanakan secara utuh
EVALUASI
4. Sebutkan hal atau kejadian apa saja yang dapat mengakibatkan pelaksanaan
transaksi terhenti atau tidak sempurna
5. Gambarkan diagram status transaksi dan jelaskan secara singkat mengenai status berhasil sebagian (partially committed)