Download - Laporan Praktikum Viii
LAPORANPRAKTIKUM VIIITRANSACTION
Disusun untuk Memenuhi Matakuliah Praktikum Basis Data
Yang Dibimbing oleh Utomo Pujianto,S.Kom, M.Kom
Disusun Oleh:
Muhamad Hakim (150533601053)
Muhammad Bakhrur Rizki (150533604505)
Musfiratus Solehah (150533602144)
S1 PTI 2015OFF C
UNIVERSITAS NEGERI MALANG
FAKULTAS TEKNIK
JURUSAN TEKNIK ELEKTRO
APRIL 2016
MODUL VIII
“TRANSACTION”
A. TUJUAN
1.1. Memahami konsep dan urgensi transaksi dalam kehidupan sehari-hari.
1.2. Mampu mengimplementasikan transaksi basis data.
1.3. Mampu menyelesaikan operasi-operasi sensitive dengan memanfaatkan
transaksi basis data.
B. DASAR TEORI
1. Transaksi Basis Data
Pada suatu hari, Tono ingin mentransfer uang ke rekening adiknya, Tini, sebesar
Rp. 9.000.000. Diilustrasikan secara sederhana, proses yang terjadi adalah sebagai
berikut :
1) Saldo Tono dikurangi sebesar Rp. 9.000.000,
2) Saldo Tini ditambah sebesar Rp. 9.000.000.
Kedua tahap di atas terlaksana dengan baik, Tono akan merasa lega, dan
Tini pun bersuka cita, karena sebentar lagi dapat memiliki laptop baru yang telah
lama dimimpikannya. Namun, pertimbangkan jika di antara langkah (1) dan (2)
terjadi hal-hal buruk yang tidak diinginkan, misalnya saja mesin ATM crash,
terjadi pemadaaman listrik dan UPS gagal up, disk pada server penuh, atau ada
cracker yang merusak infrakstruktur jaringan. Maka dapat dipastikan bahwa
saldo Tono berkurang, tetapi saldo Tini tidak bertambah. Hal tersebut merupakan
sesuatu yang tidak diharapkan untuk terjadi.
Dari ilustrasu di atas, maka dapat disimpulkan bahwa solusi yang tepat
adalah memperlakukan perintah-perintah sebagai satu kesatuan operasi.
Sederhananya, lakukan semua operasi atau tidak sama sekali, biasa juga dikenal
dengan “all or nothing”.
Uniknya, konsep penyelesaian di atas sudah dikemukakan oleh para ahli
sejak puluhan tahun silam. Konsep yang disebut transaksi basis data (database
transaction) ini sebenarnya cukup sederhana, antara lain :
Tandai bagian awal dan akhir perintah,
Putuskan di bagian akhir untuk mengeksekusi (commit) atau membatalkan
(rollback) semua perintah.
2. Property Transaksi Basis Data
Dalam transaksi basis data, terdapat property-properti yang menjamin
bahwa transaaksi dilaksanakan dengan baik. Property-properti ini dikenal sebagai
ACID (Atomicity, Consistency, Isolation, Durabilaty).
Atomicity
Transaksi dilakukan sekali dan sifatnya atomic, artinya merupaka satu
kesatuan tunggal yang tidak dapat dipisah, baik itu pekerjaan yang
dilaksanakan secara keseluruhan, ataupun tidak satupun.
Consistency
Jika basis data pada awalnya dalam keadaan konsisten, maka pelaksanaan
transaksi dengan sendirinya juga harus meninggalkan basis data tetap
dalam status konsisten.
Isolation
Isolasi memastika bahwa secara bersamaan (konkuren) eksekusi transaksi
terisolasi dari yang lain.
Durability
Begitu transaksi telah dilaksanakan (di-commit), maka perubahan yang
diakibatkan tidak akan hilang atau tahan lama (durable), sekalipun
terdapat kegagalan system.
C. LATIHAN
1. Transaksi di MySQL
MySQL mendukung transaksi melalui storage engine InnoDB (full ACID
compliance) dan BDB (BerkeleyDB) sejak versi 4.0. Oleh karena itu, untuk dapat
mengimplentasikan transaksi, DBMS MySQL harus mendukung salah satu atau
kedua engine transactional.
Untuk memeriksa dukungan ttransaksi basis data, gunakan perintah berikut
ini :
SQL Query
HASIL
Apabila nilai yang dikembalikan YES, berarti dukungan transaksi basis data
telah aktif. Idealnya, engine InnoDB akan menjadi default engine di MySQL.
2. Tabel Transaksi
Sebelum memulai implementasi transaksi basis data, terlebih dahulu buat
database sebagai berikut :
SQL Query
HASIL
Setelah database “dtransaksi” telah berhasil dibuat. Berikutnya adalah
gunakan database tersebut sebagai berikut :
SQL Query
HASIL
Setelah database “dtransaksi” telah berhasil dibuka/digunakan, berikutnya
adalah mebuat sebuah table sebagai berikut:
SQL Query
HASIL
Jika sudah memiliki table non-transactional dan ingin mengubahnya
menjadi transactional, gunakan perintah ALTER. Sebagai contoh, perintah
berikut akan mengubah engine table non-trans menjadi InnoDB :
SQL Query
HASIL
3. Implementasi Transaksi
Transaksi di MySQL diinisiasi dengan menggunakaan pernyataan START
TRANSACTION atau BEGIN dan diakhiri dengan COMMIT untuk menerapkan
semua transaksi.
Sebagai ilustrasi, ikuti dan pahami contoh kasus berikut ini :
1) Aktifkan transaksi basis data,
SQL Query
HASIL
2) Tambahkan dua baris data ke table trans_demo, misalnya mysql dan oracle,
SQL Query
HASIL
3) Periksa hasil penambahan data,
SQL Query
HASIL
4) Keluar dari terminal,
SQL Query
HASIL
5) Login kembeli ke basis data yang sama, kemudian periksa isi table”
trans_demo”.
SQL Query
HASIL
Dapat diperlihatkan pada gambar di atas, bahwa table “trans_demo” kosong.
Hal tersebut dikarenakan tidak diterapkannya transaksi dengan memanggil
COMMIT. Adapun penutupan prompt mysql mengakibatkan transaksi di-
rollback secara implicit.
Sekarang ulangi langkah nomer 2, namun pada langkah nomer 4, ketikkan
pernyataan COMMIT sebagai berikut :
SQL Query
HASIL
Dari hasil di atas, telah dilakukan penutupan prompt mysql dan dibuka
kembali. Ketika telah digunakan COMMIT, maka setelah prompt mysql yang
telah ditutup di buka kembali, data telah tersimpan (tidak di-rollback).
Autocommit Mode
Selain menggunakan START TRANSACTION, juga dapat menggunakan
pernyataan SET untuk mengatur nilai variable autocommit. Nilai default
autocommit adalah 1, yang menyatakan bahwa transaksi basis data tidak aktif.
Dengan kata lain, setiap perintah langsung diterapkan secara permanen.
1. Terlebih dahulu periksa nilai variable autocommit,
SQL Query
HASIL
2. Tetapkan nilai autocommit menjadi 0 (mode transaksi on),
SQL Query
HASIL
3. Tambahkan data berikut ini pada table “trans_demo”,
SQL Query
HASIL
4. Keluar dari prompt mysql, kemudian login kembali dan periksa hasil
penambahan data, seharusnya, hasil penambahan tidak akan diterapkan secara
permanen di basis data,
5. Amati apa yang terjadi ketika melakukan langkah nomor 3 dengan
menampilkan semua data pada table “trans_demo”,
6. Periksa nilai variable autocommit,
7. Lakukan langkah nomor 4, kemudian periksa nilai variable autocommit,
8. Berikan kesimpulan dari langkah nomor 5 sampai dengan langkah nomor 7
pada laporan.
Kesimpulan : saat menggunakan autocommit penambahan data yang dilakukan
sebelum exit akan hilang, karena penambahan tersebut tidak disimpan secara
permanen di basis data. Nilai autocommit pun akan kembali 1 ketika dilakukan
exit kemudian login kembali pada database yang sama, itu terjadi karena variable
autocommit ter-reset saat exit. Walaupun login pada database yang sama variable
autocommit tetap kembali pada nilai publiknya, itu terjadi karena variable
autocommit berlaku untuk satu sesi lgin saja.
4. Rollback Transaksi
Akhir pernyataan transaksi dapat berupa COMMIT atau ROLLBACK,
tergantung pada kondisinya. Pernyataan ROLLBACK digunakan untuk
mengugurkan rangkaian perintah. ROLLBACK akan dilakukan manakala ada
satu atau lebih perintah yang gagal dilaksanakan. Di samping itu, ROLLBACK
juga dapat dilakukan secara eksplisit dengan memanggil pernyataan
ROLLBACK.
1) Aktifkan transaksi basis data,
SQL Query
HASIL
2) Terlebih dahulu periksa nilai di table “trans_demo”,
SQL Query
HASIL
3) Tambahkan baris data berikut ini,
SQL Query
HASIL
4) Tambahkan lagi baris data, namun dengan nilai yang sama,
SQL Query
HASIL
5) Berikan pernyataan ROLLBACK untuk membatalkan rangkaian perintah
dalam satu transaksi,
SQL Query
HASIL
6) Sampai langkah ini, sehaarusnya tidak ada data baru yang tersimpan.
SQL Query
HASIL
Pemanggilan START TRANSACTION di akhir transaksi yang tidak
ditutup, misalnya menggunakan COMMIT, maka akan mengakibatkan
dipanggilanya COMMIT secara implicit. Dengan demikian, tidak dapat lagi
memaksa pembatalan melalui pernyataa ROLLBACK.
5. Checkpointing
Idealnya, ROLLBACK akan menggurkan keseluruhan perintah dalam blok
transaksi. Kondisi ini terkadang tidak dikehendaki, missal terdapat tiga perintah,
namun kita hanya ingin menggugurkan perintah setelah perintah kedua (perintah
pertama masih ada). Salam kasus ini, kita bisa memanfaatkan fitur checkpointing.
1) Aktifkan transaksi basis data,
SQL Query
HASIL
2) Terlebih dahulu periksa nilai di table “trans_demo”,
SQL Query
HASIL
3) Tambahkan baris data berikut,
SQL Query
HASIL
4) Gunakan pernyataan SAVEPOINT untuk menandai perintah pertama,
SQL Query
HASIL
5) Tambahkan lagi baris baru,
SQL Query
HASIL
6) Berikan perintah ROLLBACK ke SAVEPOINT my_point1,
SQL Query
HASIL
7) Tambahkan lagi sebuah baris baru,
SQL Query
HASIL
8) Terapkan transaksi,
SQL Query
HASIL
9) Lihat hasilnya.
SQL Query
HASIL
Sampai di sini seharusnya Anda dapat memahami fungsi checkpointing.
Jika Anda masih belum memahami fungsi checkpointing, ulangi langkah-langkah
di atas hingga benar-benar paham.
D. TUGAS PRAKTIKUM
Untuk menyelesaikan tugas praktikum, gunakan table tabungan dengan
struktur sebagai berikut :
Pernyataan Query
Printscreen
1) Definisikan stored procedure untuk menangani transfer antar rekening dengan
mengimplementasikan transaksi basis data. Setelah transfer uang berhasil,
tampilkan sisa saldo rekening pengirim!
(point : 20)
Pernyataan Query
Printscreen
Analisis
Pada praktikum ini menggunakan fungsi dari procedure yang didalamnya
terdapat fungsi transaksi yang digunakan untuk mentransfer uang, seperti
contoh diatas, proses transaksi berhasil dilakukan hal itu bisa dilihat nomer
rekenig 123 yang mulanya mempunyai saldo 1000000 menjadi 750000, dan
nomor rekening 456 yangmulanya mempunyai saldo 500000 menjadi
750000.
2) Definisikan stored procedure untuk menangani penarikan tabungan dengan
mengimplementasikan transaksi basis data. Skenarionya adalah penarikan hanya
dapat dilakukan jika :
Saldo mencukupi,
Menyisakan saldo minimal Rp. 50.000, dan
Jumlah (nominal) penarikan minimal Rp. 50.000 dan maksimal Rp.
500.000.
(point : 30)
Pernyataan Query
Printscreen
Analisis
Pada praktikum ini digunakan untuk proses penarikan uang dengan
menggunakan fungsi procedure yang didalamnya terdapat fungsi transaksi
dan didalam query ini terdapat ketentuan–ketentuan seperti pada soal
sehingga penarikan uang akan terlaksana apabila ketentuan-ketentuannya
terlaksana.
3) Definisikan stored procedure untuk menangani penarikan berulang. Artinya,
penarikan tabungan dengan nominal tertentu yang dispesifikasikan akan
dilakukan sebanyak iterasi yang dispesifikasikan juga. Aturan penarikan tabungan
pada soal nomor 2 masih berlaku di sini. Sebagai ilustrasi, missal Tono memiliki
saldo Rp. 300.000, kemudian melakukan penarikan melalui stored procedure
berulang dengan nominal Rp. 100.000 sebanyak 3 kali, maka stored procedure
hanya akan mengcommit penarikan Rp. 200.000 (2x Rp. 100.000). Sisa Rp.
100.000 tidak dapat di ambil, karena harus menyisakan saldo Rp. 50.000.
(point : 50)
Pernyataan Query
Printscreen
Analisis
Pada praktikum ini digunakan untuk proses penarikan uang secara
berulang dengan menggunakan fungsi procedure yang didalamnya terdapat
fungsi transaksi dan didalam query ini terdapat ketentuan–ketentuan seperti
pada soal no dua sehingga penarikan uang akan terlaksana apabila ketentuan-
ketentuannya terlaksana, dan kita bisa menentukan berapa kali kita ingin
menarik uang.
E. KESIMPULAN
1. Konsep yang disebut transaksi basis data ini sebenarnya cukup sederhana antara lain :
tandai bagian awal dan akhir himpunan perintah, dan putuskan di bagian akhir untu
mengeksekusi atau membatalkan semua perintah.
2. Property-properti dalam transaksi basis data dikenal sebagai ACID (Atomicity,
Consistency, Isolation, Durability).
3. Atomicity merupakan satu kesatua tunggal yang tidak dapat dipisahkan, baik itu
pekerjaan yang dilaksanakan secara keseluruhan atau tidak satupun.
4. Consistency adalah jika basis data pada awalnya dalam keadaan konsisten, maka
pelaksanaan transaksi dengan sendirinya juga harus meninggalkan basis data
tetap dalam status konsisten.
5. Isolation memastikan bahwa secara bersamaan (konkuren) eksekusi transaksi
terisolasi dari yang lain.
6. Durability adalah begitu transaksi telah dilaksanakan (di-commit) maka
perubahan yang diakibatkan tidak akan hilang atau tahan lama (durable)
sekalipun terdapat kegagalan sistem.
F. Daftar Pustaka
1.1 Tim Asisten Dosen. 2016. Modul 1 Instalasi dan Konfigurasi XAMPP. Basis
Data. Malang: Universitas Negeri Malang.
2.1 Tim Asisten Dosen. 2016. Modul 2 DDL dan DML. Basis Data. Malang:
Universitas Negeri Malang.
3.1 Tim Asisten Dosen. 2016. Modul 3 Fungsi Agregat. Basis Data. Malang:
Universitas Negeri Malang.
4.1 Tim Asisten Dosen. 2016. Modul 4 Join dan Union. Basis Data. Malang:
Universitas Negeri Malang.
5.1 Tim Asisten Dosen. 2016. Modul 4 Sub Query & View. Basis Data. Malang:
Universitas Negeri Malang.
6.1 Tim Asisten Dosen. 2016. Modul 6 Trigger. Basis Data. Malang: Universitas
Negeri Malang.
7.1 Tim Asisten Dosen. 2016. Modul 7 Stored Procedure. Basis Data. Malang:
Universitas Negeri Malang.
8.1 Tim Asisten Dosen. 2016. Modul 8 Transaction. Basis Data. Malang:
Universitas Negeri Malang.