laporan praktikum viii

30
LAPORANPRAKTIKUM VIII TRANSACTION 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

Upload: muhamad-hakim

Post on 12-Jul-2016

71 views

Category:

Documents


15 download

DESCRIPTION

Laporan Praktikum Viii

TRANSCRIPT

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.