Anda di halaman 1dari 19

LAPORAN PRAKTIKUM VIII

TRANSACTION

Disusun untuk Memenuhi Matakuliah Praktikum Basis Data


Yang Dibimbing oleh Triyanna Widiyaningtyas, S.T, M.T

Disusun Oleh:
Abid Muhibbuddin (150533601917)
Anidia Wulan Sari

(150533601651)

S1 PTI 2015 OFF A

UNIVERSITAS NEGERI MALANG


FAKULTAS TEKNIK
JURUSAN TEKNIK ELEKTRO
APRIL 2016

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

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 himpunan perintah,


Putuskan di bagian akhir untuk mengeksekusi (commit) atau
membatalkan (rollback) semua perintah.

2 Properti Transaksi Basis Data


Dalam transaksi basis data, terdapat properti-properti yang menjamin
bahwa transaksi dilaksanakan dengan baik. Properti-properti ini dikenal sebagai
ACID (Atomicity, Consistency, Isolation, Durability).
Atomicity
Transaksi dilakukan sekali dan sifatnya atomic, artinya merupakan 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 memastikan 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 sistem.

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.

Gunakan data base tersebut


Buatlah sebuah tabel dengan nama trans_demo
Buatlah sebuah tabel lagi dengan nama no_trans
Ubah enginer tabel tersebut dengan perintah berikut

Dan amati apa yang terjadi


2.

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

dengan nama non_trans dengan ENGINE

MyISAM. Setelah itu masukkan perintah ALTER TABLE non Engine


= InnoDB; perintah ini di gunakan untuk mengubah engine tabel
non trans menjadi InnoDB. Jika perintah telah berhasil maka akan
ditandai dengan Query Ok, seperti pada gambar di atas.
1.3 Latihan 3
Implementasi Transaksi
1.

Langkah langkah
a. Aktifkan transaksi basis data

b. Tambahkan dua baris data ke tabel trans_demo

c. Periksa hasil penambahan data

d. Keluar dari terminal

e. Login kembali ke basis data yang sama, kemudian periksa isi


tabel trans_demo

f. Ulangi langkah nomer dua dengan menambahkan dua baris


data ke tabel trans_demo

g. Kemudian ketikkan

h. Keluar dari terminal kembali


i. Masuk ke data base kemudian periksa isi trans_demo
kembali
Autocommit Mode
a. Periksa nilai variabel autocommit

b. Tetapkan nilai autocommit menjadi 0 (mode transaksion)


c. Tambahkan data berikut ini pada tabel trans_demo

d. Keluar dari prompt mysql, kemudian login kembali dan periksa


e.
f.
g.
h.
2.
a.

hasil penambahan data


Amati apa yang terjadi
Periksa nilai variabel autocommit
Lakukan langkah nomor 4, kemudian periksa
Berikan kesimpulan
Printscreen

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

ditampilkan kosong karena tidak diterapkannya transaksi dengan


memanggil COMMIT, sehingga penutupan prompt mysql
mengakibatkan transaksi di rollback secara implisit. Namun
setelah di ulangi langkah nomor 2 kemudian setelah itu detambah
dengan mengetikkan pernyataan COMMIT , maka setelah prompt
mysql yang telah ditutup di buka kembali data telah tersimpan
(tidak di rollback)
b. Ketika kita melakukan penambahan data db2 dengan
menampilkan semua datapada tabel trans_demo maka data
penambahan db2 tidak akan langsung hilang namun jika kita
menambahakan data db2 setelah itu exit maka data yang telah
anda tambah akan hilang/ tidak tersimpan. Karena pengaturan
variabel autocommit berlaku untuk satu sesilogin jadi, login ulang
meskipun di terminal yang sama, maka akan mengakibatkan
nilainya di reset.
1.4 Latihan 4
Rollback Transaksi
1.
Langkah langkah
a. Aktifkan transaksi basis data
b.Periksa nilai di tabel trans_demo

c.Tambahkan baris data berikut ini

d. Tambahkan lagi baris data, namaun dengan nilai yang sama

e.Berikan perintah ROLLBACK untuk membatalkan rangkaian


perintah dalam satu transaksi,
f. Sampai langkahini seharusnya tidak ada penambahan data baru yang
tersimpan

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

b. Terlebih dahulu periksa nilai di tabel trans_demo

c. Tambahkan baris data berikut

d. Gunakan pernyataan SAVEPOINT untuk menandai perintah


pertama,
e. Tambahkan lagi baris baru

f. Berikan perintah ROLLBACK ke SAVEPOINT my_point1

g. Tambahakan lagi sebuah baris baru

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 :

3.2 Tugas Praktikum 1

1.

Definisikan stored procedure untuk menangani transfer antar rekening


dengan mengimplementasikan transaksi basis data. Setelah transfer
uang berhasil, tampilkan sisa saldo rekening pengirim!

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

TRANSACTION dan diakhiri dengan pernyataan COMMIT untuk menerapkan semua


transaksi.
Terlebih dahulu dideklarasikan variabel saldo bertipe data integer. Pada fungsi transaksi
ini berisi perintah set saldo=(SELECT jumlah FROM tabungan WHERE no_rek=rek),
artinya saldo akan berisi hasil dari perintah mengambil data field jumlah dari tabel
tabungan dimana no_rek=rek. Operasi kondisinya yakni jika variabel jmlh >= 50000
dan variabel jmlh <= 500000 maka jika variabel saldo > variabel jmlh dan varaibel
saldo variabel jmlh > 50000, maka akan meng-update tabel tabungan dengan set
jumlah=jumlah-jmlh dimana no_rek=rek.
Sebagai contoh untuk malakukan transaksi penarikan dengan syarat tersebut yakni
dengan memanggil stored procedure penarikan dengan argumen berisi no_rek dan
jumlah penarikan. Pada contoh di atas, pemanggilannya berisi argumen (960517,
200000). Maka pada saat mengecek data pada tabel tabungan, data dengan no_rek
960517 yang awalnya jumlah uangnya 4700000, berubah menjadi 4500000.

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

FROM tabungan WHERE no_rek=rek), artinya saldo akan berisi hasil


dari perintah mengambil data field jumlah dari tabel tabungan dimana
no_rek=rek. Operasi kondisinya yakni jika variabel jmlh >= 50000
dan variabel jmlh <= 500000 maka jika variabel saldo > variabel jmlh
dan varaibel saldo variabel jmlh > 50000, maka akan meng-update
tabel tabungan dengan set jumlah=jumlah-jmlh dimana no_rek=rek,
dan terakhir set ctr=+1.
Sebagai contoh untuk melakukan penarikan berulang, seperti
gambar di atas, terlebih dahulu memasukkan data baru pada tabel
tabungan dengan isi no_rek, jumlah, dan kode transkasi. Kemudian
untuk melakukan penarikan berulang, dilakukan pemanggilan strored
procedure penarikan_berulang dengan isi argumen no_rek, jumlah,
dan banyak. Argumen banyak ini merupakan angka untuk pengali
jumlah penarikan. Misal jumlah penarikan= 150000, dan banyak= 2,
berarti penarikan uang sejumah 150000 dilakukan sebanyak 2 kali
atau sama dengan 300000.

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.

Konsistensi: memastikan bahwa database dengan benar perubahan negara atas


transaksi yang berhasil dilakukan.

Isolasi: memungkinkan transaksi untuk beroperasi secara independen dan


transparan dari satu sama lain.

Durabilitas: memastikan bahwa hasil atau efek dari transaksi yang dilakukan tetap
dalam kasus kegagalan sistem.

COMMIT dan ROLLBACK:


Kedua kata kunci Komit dan Rollback terutama digunakan untuk Transaksi MySQL.

Ketika sebuah transaksi yang berhasil selesai, perintah COMMIT harus dikeluarkan
sehingga perubahan pada semua tabel yang terlibat akan diberlakukan.

Jika kegagalan terjadi, perintah ROLLBACK harus dikeluarkan untuk kembali


setiap meja direferensikan dalam transaksi tersebut ke keadaan sebelumnya.

5. Daftar Pustaka
Tim Asisten Dosen. 2016. Modul VIII.TRANSACTION Malang: Universitas Negeri
Malang.

Anda mungkin juga menyukai