Konsep transaksi dan properti ACID
Berikut adalah **Modul 6: Transaksi dan Manajemen Konsistensi** yang membahas konsep dasar **transaksi dalam database**, prinsip **ACID**, serta contoh implementasinya menggunakan **MySQL di Ubuntu 24.04**.
---
- ๐ง **Modul 6: Transaksi dan Manajemen Konsistensi**
- ๐ฏ **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**.
---
- ๐ **6.1 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
---
- ๐งฉ **6.2 Properti ACID**
ACID adalah empat properti utama yang memastikan keandalan transaksi.
| 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 |
---
- ๐ ๏ธ **6.3 Implementasi Transaksi di MySQL (Ubuntu 24.04)**
- ๐ง **Langkah Awal: Aktifkan MySQL dan Masuk ke CLI**
```bash sudo systemctl start mysql sudo mysql -u root -p ```
---
- ๐งช **6.4 Studi Kasus: Transfer Saldo**
- ๐ฆ **Tabel: rekening**
```sql CREATE TABLE rekening (
id INT PRIMARY KEY, nama VARCHAR(50), saldo INT
);
INSERT INTO rekening VALUES (1, 'Andi', 100000), (2, 'Budi', 50000); ```
---
- ๐ **6.5 Transaksi di MySQL**
Perintah utama:
- `START TRANSACTION;` - `COMMIT;` - `ROLLBACK;`
---
- โ **Contoh Transaksi: Transfer Rp20.000 dari Andi ke Budi**
```sql -- 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**
```sql 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.
---
- ๐ **6.6 Isolation Level (Opsional)**
Untuk kontrol lebih lanjut, bisa gunakan perintah:
```sql SET TRANSACTION ISOLATION LEVEL REPEATABLE READ; ```
Tersedia 4 level isolasi di MySQL: - `READ UNCOMMITTED` - `READ COMMITTED` - `REPEATABLE READ` (default) - `SERIALIZABLE`
---
- ๐ **6.7 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).
---
Kalau kamu mau saya bantu buat kuis soal ACID atau simulasi kasus transaksi e-commerce menggunakan trigger dan stored procedure, tinggal bilang ya!