TRANSACTION
Disusun Oleh:
Abid Muhibbuddin (150533601917)
Anidia Wulan Sari
(150533601651)
MODUL VIII
TRANSACTION
A TUJUAN
Memahami konsep dan urgensi transaksi dalam kehidupan sehari-hari,
Mampu mengimplementasikan transaksi basis data,
Mampu menyelesaikan operasi-perasi sensitif 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.
Begitu kedua tahap di atas terlaksana dengan baik, Tono akan merasa lega,
dan Tini pun bersuka cita, karena sebentar lagi dapat memilik i 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 pemadaman listrik dan UPS gagal up, disk pada server penuh, atau ada
cracker yang merusak infrastruktur jaringan. Maka dapat dipastikan bahwa saldo
Tono berkurang, tetapi saldo Tini tidak bertambah. Hal tersebut merupakan
sesuatu yang tidak
diharapkan untuk terjadi.
Dari ilustrasi 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 jargon
all or nothing
1.
Latihan
3.1. Latihan 1
Transaksi di MySQL
1. Langkah-langkah:
a. Tuliskan pernyataan berikut ini pada jendela command prompt
2. Printscreen
3. Keterangan
Perintah di atas digunkan untuk memeriksa dukungan transaksi basis
data. Setelah kita menuliskan pernyataan tersebut maka kita akan
mendapatkan nilai kembalian YES, yang memiliki arti bahwa dukungan
transaksi basis data aktif.
1.2 Latihan 2
Tabel Transaksi
1.
Langkah langkah
a. Buat data base baru denagn nama dtransaksi
b.
c.
d.
e.
Printscreen
3.
Keterangan
Sebelum memulai implementasi transaksi basis data, terlebih dahulu
membuat data base, kemudian gunakan data base, setelah data base
dibuka / digunakan membuat tabel trans_demo. Kemudian membuat
tabel non-transactional
Langkah langkah
a. Aktifkan transaksi basis data
g. Kemudian ketikkan
b.
3.
Keterangan
a. Sebelum mengimplementasikan transaction pertama mengaktifkan
transaction, kemudian menambahkan dua baris data ke tabel
trans_demo, misalnya mysql dan orecle.kemudian memeriksa
hasil penambahan data maka pada kolom nama akan menampilkan
hasil dari penambahan data mysql dan oracle seperti pada gambar
di atas. Kemudian keluar dari mysql, selanjutnya login kembalai
ke basis data kemudian periksa isi tabel maka hasil yang
2.
Printscreen
3.
Keterangan
Mengaktifkan transakasi basisdata, kemudian menamabahka baris
data sybase, dan menambahkan data yang sama untuk kedua
kalinya namun data tersebut tidak diterima karena dianggap
duplikat. Kemudian untuk membatalkan rangkaian perintah maka
digunakanlah pernyataan ROLLBACk, setelah itu kita coba lihat
hasilnya maka data sybase yang tadi kita tambahkan akan terhapus.
Karena pemanggilan START TRANSACTION di akhir transaksi
yang tidak ditutup,misal menggunakan COMMIT, maka akan
mengakibatkan dipanggilnya COMMIT secara implisit. Dengan
demikian tidak dapat lagi memaksa pembatalan melalui pernyataan
ROLLBACK.
1.5 Latihan 5
Checkpointing
1.
Langkah langkah
a. Aktifkan transaksi basis data
h. Tetapkan transaksi
i. Lihat hasilnya
2.
Printscreen
3.
Keterangan
Idealnya ROLLBACK akan menggugurkan keseluruhan perintah
dalam blok transaksi. Dalam kasus ini , kita bisa memanfaatkan fitur
chekpointting. Pada kasus diatas terdapat 3 perintah, yang pertama
menambahkan baris data sybase untuk menandai perintah pertama
maka digunakan pernyataan SAVEPOINT my_point1; kemudian
masukkan data kedua sqlite kemudian periksa hasil, terlihat bahwa
kedua data yang telah dimasukkan telah tersimpan. Selanjutnya
tambahkan perintah ROLLBACK TO SAVE POINT my_point1;
setelah itu tambahkan data ke tiga db2, setelah itu menetapkan
transaksi dengan menambahkan perintah COMMIT; Kemudian lihat
hasil . setelah kita menambahkan perintah ROLLBACK maka
perintah akan terhapus, namun terlihat jelas bahwa data yang terhapus
hanya data yang kita masukkan kedua yaitu sqlite karena data
tersebut sebelumnya telah kita tandai menggunakan perintah
SAVEPOINT my_point1 dan perintah ROLLBACK (ROLLBACK
TO SAVE POINT my_point1;) hanya berlaku pada data yang telah
kita tandai tadi.
2. Tugas Praktikum
Untuk menyelesaikan tugas praktikum, gunakan tabel tabunagn dengan struktur
sebagai berikut :
1.
2.
Printscreen
3.Analisis
Pada tugas praktikum ini, untuk menangani transfer antar rekening, digunakan stored
procedure dan implementasi transaction dalam basis data. Pada stored procedure ini,
parameter IN digunakan untuk menginisialisasi argumen yang dimasukkan saat
pemanggilan prosedur. Transaksi di MySQL diinisialisasi dengan menggunakan
START TRANSACTION dan diakhiri dengan pernyataan COMMIT untuk
menerapkan semua transaksi.
Pada fungsi transaksi ini berisi pemodifan data yakni:a) akan meng-update tabel
tabungan dengan set jumlah=jumlah+jmlh, dimana no_rek=rek_b, dan b) akan mengupdate tabel tabungan dengan set=jumlah-jmlh dimana no_rek=rek_a.
Sebagai contoh seperti gambar di atas, memasukkan dua data pada tabungan dengan isi
no_rek, jumlah, dan trans_id. Kemudian untuk melakukan transaksi, dilakukan
pemanggilan procedure dengan argumen berisi no_rek pengirim, no_rek penerima, dan
jumlah transaksi (transfer/kirim). Dan dapat diketahui pada tabel tabungan setelah
melakukan transaksi, jumlah uang pada rekening penerima berkurang dan jumlah uang
pada rekening penerima bertambah sesuai dengan jumlah yang dimasukkan pada saat
melakukan transaksi dengan menggunakan pemanggilan prosedure transaksi.
1.
Tugas Praktikum 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.
2. PrintScreen
3. Analisis
Pada tugas praktikum ini, untuk menangani penarikan dengan syarat: a) Saldo
mencukupi, b) Menyisakan saldo minimal Rp. 50000, dan c) Jumlah (nominal)
penarikan minimal Rp. 50000 dan maksimal Rp. 500000, digunakan stored procedure
dan implementasi transaction dalam basis data. Pada stored procedure ini, parameter
IN digunakan untuk menginisialisasi argumen yang dimasukkan saat pemanggilan
prosedur. Transaksi
di
MySQL diinisialisasi
dengan
menggunakan
START
a. Tugas Praktikum 3
1. 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, misal 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 (2 x Rp. 100.000). Sisa Rp. 100.000 tidak dapat diambil,
karena harus menyisakan saldo Rp. 50.000.
2. Printscreen
3. Analisis
Pada tugas praktikum ini, untuk menangani penarikan berulang,
digunakan stored procedure dan implementasi transaction dalam basis
data. Pada stored procedure ini, parameter IN digunakan untuk
menginisialisasi argumen yang dimasukkan saat pemanggilan
prosedur. Transaksi di MySQL diinisialisasi dengan menggunakan
START TRANSACTION dan diakhiri dengan pernyataan COMMIT
untuk menerapkan semua transaksi.
Terlebih dahulu dideklarasikan variabel saldo dan variabel ctr
dengan tipe data integer. Dengan set ctr=1. Pada fungsi transaksi ini
berisi perulangan dengan syarat variabel ctr <= variabel banyak.
Kemudian akan melakukan perintah set saldo=(SELECT jumlah
4. Kesimpulan
Berdasarkan hasil dari praktikum yang telah kamu lakukan dapat disimpulkan bahwa
Sebuah transaksi adalah sekelompok berurutan operasi manipulasi database, yang
dilakukan seolah-olah satu unit karya tunggal. Dengan kata lain, transaksi tidak akan
lengkap kecuali setiap operasi individu dalam kelompok berhasil. Jika ada operasi
dalam transaksi gagal, seluruh transaksi akan gagal.
Transaks memiliki empat sifat berikut standar, biasanya disebut dengan akronim ACID:
Atomicity: memastikan bahwa semua operasi dalam unit kerja selesai dengan
sukses, jika tidak, transaksi tersebut dibatalkan pada titik kegagalan, dan operasi
sebelumnya digulung kembali ke keadaan semula.
Durabilitas: memastikan bahwa hasil atau efek dari transaksi yang dilakukan tetap
dalam kasus kegagalan sistem.
Ketika sebuah transaksi yang berhasil selesai, perintah COMMIT harus dikeluarkan
sehingga perubahan pada semua tabel yang terlibat akan diberlakukan.
5. Daftar Pustaka
Tim Asisten Dosen. 2016. Modul VIII.TRANSACTION Malang: Universitas Negeri
Malang.