Konsep transaksi dan properti ACID

From OnnoWiki
Revision as of 09:07, 13 April 2025 by 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...")
(diff) โ† Older revision | Latest revision (diff) | Newer revision โ†’ (diff)
Jump to navigation Jump to search

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**.

---

    1. ๐Ÿง  **Modul 6: Transaksi dan Manajemen Konsistensi**
      1. ๐ŸŽฏ **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**.

---

    1. ๐Ÿ“š **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).
      1. ๐Ÿ“Œ Contoh Umum Transaksi:

- Transfer uang antar rekening - Pemesanan tiket - Pembelian barang di e-commerce

---

    1. ๐Ÿงฉ **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 |

---

    1. ๐Ÿ› ๏ธ **6.3 Implementasi Transaksi di MySQL (Ubuntu 24.04)**
      1. ๐Ÿ”ง **Langkah Awal: Aktifkan MySQL dan Masuk ke CLI**

```bash sudo systemctl start mysql sudo mysql -u root -p ```

---

    1. ๐Ÿงช **6.4 Studi Kasus: Transfer Saldo**
      1. ๐Ÿฆ **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); ```

---

      1. ๐Ÿ”„ **6.5 Transaksi di MySQL**

Perintah utama:

- `START TRANSACTION;` - `COMMIT;` - `ROLLBACK;`

---

      1. โœ… **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.

---

      1. โŒ **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.

---

    1. ๐Ÿ” **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`

---

    1. ๐Ÿ“Œ **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!