Difference between revisions of "Konsep transaksi dan properti ACID"
Onnowpurbo (talk | contribs) (Created page with "Berikut adalah **Modul 6: Transaksi dan Manajemen Konsistensi** yang membahas konsep dasar **transaksi dalam database**, prinsip **ACID**, serta contoh implementasinya menggun...") |
Onnowpurbo (talk | contribs) |
||
Line 1: | Line 1: | ||
− | + | ==Tujuan Pembelajaran== | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
Setelah mempelajari modul ini, mahasiswa diharapkan mampu: | Setelah mempelajari modul ini, mahasiswa diharapkan mampu: | ||
− | + | * Menjelaskan konsep '''transaksi''' dalam basis data. | |
− | + | * Memahami prinsip '''ACID''' untuk menjaga konsistensi data. | |
− | + | * Mengimplementasikan transaksi menggunakan '''MySQL di Ubuntu 24.04'''. | |
− | |||
− | |||
− | |||
− | + | ==Apa Itu Transaksi?== | |
− | + | '''Transaksi''' adalah satu unit kerja logis dalam sistem basis data yang mencakup satu atau lebih perintah SQL. Transaksi dianggap '''berhasil''' jika semua perintah di dalamnya berhasil dijalankan. Jika salah satu gagal, seluruh transaksi harus dibatalkan (rollback). | |
− | |||
− | |||
− | |||
− | - | + | '''Contoh Umum Transaksi:''' |
+ | * Transfer uang antar rekening | ||
+ | * Pemesanan tiket | ||
+ | * Pembelian barang di e-commerce | ||
− | + | ==Properti ACID== | |
ACID adalah empat properti utama yang memastikan keandalan transaksi. | ACID adalah empat properti utama yang memastikan keandalan transaksi. | ||
− | | Properti | + | {| class="wikitable" |
− | |- | + | ! Properti !! Penjelasan |
− | | | + | |- |
− | | | + | | '''A'''tomicity || Seluruh transaksi dijalankan sepenuhnya atau tidak sama sekali |
− | | | + | |- |
− | | | + | | '''C'''onsistency|| Menjaga integritas data sebelum dan sesudah transaksi |
− | + | |- | |
− | + | | '''I'''solation || Transaksi berjalan seolah-olah satu per satu (tidak saling mengganggu) | |
− | + | |- | |
− | + | | '''D'''urability || Hasil transaksi tetap ada meskipun terjadi crash setelah commit | |
+ | |} | ||
− | + | ==Implementasi Transaksi di MySQL (Ubuntu 24.04)== | |
− | |||
− | |||
− | |||
− | |||
− | + | '''Langkah Awal: Aktifkan MySQL dan Masuk ke CLI''' | |
− | + | sudo systemctl start mysql | |
+ | sudo mysql -u root -p | ||
− | + | ===Studi Kasus: Transfer Saldo== | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | '''Tabel: rekening''' | |
− | |||
− | + | CREATE TABLE rekening ( | |
+ | id INT PRIMARY KEY, | ||
+ | nama VARCHAR(50), | ||
+ | saldo INT | ||
+ | ); | ||
+ | |||
+ | INSERT INTO rekening VALUES (1, 'Andi', 100000), (2, 'Budi', 50000); | ||
− | + | ==Transaksi di MySQL== | |
Perintah utama: | Perintah utama: | ||
− | + | * `START TRANSACTION;` | |
− | + | * `COMMIT;` | |
− | + | * `ROLLBACK;` | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | '''Contoh Transaksi: Transfer Rp20.000 dari Andi ke Budi''' | |
− | |||
− | -- Selesaikan transaksi | + | -- Mulai transaksi |
− | COMMIT; | + | START TRANSACTION; |
− | + | ||
+ | -- Kurangi saldo Andi | ||
+ | UPDATE rekening SET saldo = saldo - 20000 WHERE id = 1; | ||
+ | |||
+ | -- Tambah saldo Budi | ||
+ | UPDATE rekening SET saldo = saldo + 20000 WHERE id = 2; | ||
+ | |||
+ | -- Selesaikan transaksi | ||
+ | COMMIT; | ||
> Jika ada error, gunakan `ROLLBACK;` untuk membatalkan transaksi. | > Jika ada error, gunakan `ROLLBACK;` untuk membatalkan transaksi. | ||
− | + | '''Contoh dengan ROLLBACK''' | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | START TRANSACTION; | |
+ | |||
+ | UPDATE rekening SET saldo = saldo - 20000 WHERE id = 1; | ||
+ | |||
+ | -- Simulasi kesalahan | ||
+ | -- ERROR: tabel tidak ditemukan | ||
+ | UPDATE rekening_tidak_ada SET saldo = saldo + 20000 WHERE id = 2; | ||
+ | |||
+ | -- Batalkan seluruh transaksi | ||
+ | ROLLBACK; | ||
− | + | > Saldo Andi akan '''kembali ke semula''' karena transaksi dibatalkan. | |
− | + | ==Isolation Level (Opsional)== | |
Untuk kontrol lebih lanjut, bisa gunakan perintah: | Untuk kontrol lebih lanjut, bisa gunakan perintah: | ||
− | + | SET TRANSACTION ISOLATION LEVEL REPEATABLE READ; | |
− | SET TRANSACTION ISOLATION LEVEL REPEATABLE READ; | ||
− | |||
Tersedia 4 level isolasi di MySQL: | Tersedia 4 level isolasi di MySQL: | ||
− | + | * `READ UNCOMMITTED` | |
− | + | * `READ COMMITTED` | |
− | + | * `REPEATABLE READ` (default) | |
− | + | * `SERIALIZABLE` | |
− | |||
− | |||
− | + | ==Kesimpulan== | |
− | + | * Transaksi penting untuk memastikan konsistensi dan keandalan sistem basis data. | |
− | + | * Properti '''ACID''' menjamin bahwa transaksi aman dijalankan. | |
− | + | * MySQL mendukung transaksi menggunakan perintah `START TRANSACTION`, `COMMIT`, dan `ROLLBACK`. | |
− | + | * Pastikan engine tabel yang digunakan adalah '''InnoDB''', bukan MyISAM (yang tidak mendukung transaksi). | |
− | + | ==Pranala Menarik== | |
− | + | * [[Database: Kuliah]] |
Revision as of 08:23, 14 April 2025
Tujuan Pembelajaran
Setelah mempelajari modul ini, mahasiswa diharapkan mampu:
- Menjelaskan konsep transaksi dalam basis data.
- Memahami prinsip ACID untuk menjaga konsistensi data.
- Mengimplementasikan transaksi menggunakan MySQL di Ubuntu 24.04.
Apa Itu Transaksi?
Transaksi adalah satu unit kerja logis dalam sistem basis data yang mencakup satu atau lebih perintah SQL. Transaksi dianggap berhasil jika semua perintah di dalamnya berhasil dijalankan. Jika salah satu gagal, seluruh transaksi harus dibatalkan (rollback).
Contoh Umum Transaksi:
- Transfer uang antar rekening
- Pemesanan tiket
- Pembelian barang di e-commerce
Properti ACID
ACID adalah empat properti utama yang memastikan keandalan transaksi.
Properti | Penjelasan |
---|---|
Atomicity | Seluruh transaksi dijalankan sepenuhnya atau tidak sama sekali |
Consistency | Menjaga integritas data sebelum dan sesudah transaksi |
Isolation | Transaksi berjalan seolah-olah satu per satu (tidak saling mengganggu) |
Durability | Hasil transaksi tetap ada meskipun terjadi crash setelah commit |
Implementasi Transaksi di MySQL (Ubuntu 24.04)
Langkah Awal: Aktifkan MySQL dan Masuk ke CLI
sudo systemctl start mysql sudo mysql -u root -p
=Studi Kasus: Transfer Saldo
Tabel: rekening
CREATE TABLE rekening ( id INT PRIMARY KEY, nama VARCHAR(50), saldo INT ); INSERT INTO rekening VALUES (1, 'Andi', 100000), (2, 'Budi', 50000);
Transaksi di MySQL
Perintah utama:
- `START TRANSACTION;`
- `COMMIT;`
- `ROLLBACK;`
Contoh Transaksi: Transfer Rp20.000 dari Andi ke Budi
-- Mulai transaksi START TRANSACTION; -- Kurangi saldo Andi UPDATE rekening SET saldo = saldo - 20000 WHERE id = 1; -- Tambah saldo Budi UPDATE rekening SET saldo = saldo + 20000 WHERE id = 2; -- Selesaikan transaksi COMMIT;
> Jika ada error, gunakan `ROLLBACK;` untuk membatalkan transaksi.
Contoh dengan ROLLBACK
START TRANSACTION; UPDATE rekening SET saldo = saldo - 20000 WHERE id = 1; -- Simulasi kesalahan -- ERROR: tabel tidak ditemukan UPDATE rekening_tidak_ada SET saldo = saldo + 20000 WHERE id = 2; -- Batalkan seluruh transaksi ROLLBACK;
> Saldo Andi akan kembali ke semula karena transaksi dibatalkan.
Isolation Level (Opsional)
Untuk kontrol lebih lanjut, bisa gunakan perintah:
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
Tersedia 4 level isolasi di MySQL:
- `READ UNCOMMITTED`
- `READ COMMITTED`
- `REPEATABLE READ` (default)
- `SERIALIZABLE`
Kesimpulan
- Transaksi penting untuk memastikan konsistensi dan keandalan sistem basis data.
- Properti ACID menjamin bahwa transaksi aman dijalankan.
- MySQL mendukung transaksi menggunakan perintah `START TRANSACTION`, `COMMIT`, dan `ROLLBACK`.
- Pastikan engine tabel yang digunakan adalah InnoDB, bukan MyISAM (yang tidak mendukung transaksi).