Difference between revisions of "Replikasi dan fragmentasi data"

From OnnoWiki
Jump to navigation Jump to search
(Created page with "Berikut adalah **Modul 11 (Lanjutan): Sistem Basis Data Terdistribusi**, dengan fokus pada **Replikasi dan Fragmentasi Data**, serta **contoh implementasi di MySQL Ubuntu 24.0...")
 
Line 1: Line 1:
Berikut adalah **Modul 11 (Lanjutan): Sistem Basis Data Terdistribusi**, dengan fokus pada **Replikasi dan Fragmentasi Data**, serta **contoh implementasi di MySQL Ubuntu 24.04**.
+
Berikut adalah '''Modu: Sistem Basis Data Terdistribusi''', dengan fokus pada '''Replikasi dan Fragmentasi Data''', serta '''contoh implementasi di MySQL Ubuntu 24.04'''.
  
---
+
==Sistem Basis Data Terdistribusi==
 +
Replikasi dan Fragmentasi Data
  
## 🌐 **Modul 11: Sistem Basis Data Terdistribusi** 
+
==Tujuan Pembelajaran==
### 📌 Topik: Replikasi dan Fragmentasi Data
 
 
 
---
 
 
 
### 🎯 **Tujuan Pembelajaran**
 
 
Setelah mempelajari bagian ini, mahasiswa diharapkan mampu:
 
Setelah mempelajari bagian ini, mahasiswa diharapkan mampu:
- Menjelaskan konsep replikasi dan fragmentasi data dalam sistem terdistribusi.
+
* Menjelaskan konsep replikasi dan fragmentasi data dalam sistem terdistribusi.
- Membedakan jenis-jenis fragmentasi dan replikasi.
+
* Membedakan jenis-jenis fragmentasi dan replikasi.
- Mengimplementasikan contoh replikasi dan fragmentasi di MySQL Ubuntu 24.04.
+
* Mengimplementasikan contoh replikasi dan fragmentasi di MySQL Ubuntu 24.04.
 
 
---
 
  
## 🔁 **11.6 Replikasi Data (Data Replication)**
+
==Replikasi Data (Data Replication)==
  
**Replikasi** adalah proses menyalin dan menyinkronkan data dari satu node ke node lain agar tetap konsisten.
+
'''Replikasi''' adalah proses menyalin dan menyinkronkan data dari satu node ke node lain agar tetap konsisten.
  
### 🧩 Tujuan:
+
==Tujuan:==
- Meningkatkan **ketersediaan**
+
* Meningkatkan '''ketersediaan'''
- Menyediakan **backup real-time**
+
* Menyediakan '''backup real-time'''
- Mempercepat akses baca (read scalability)
+
* Mempercepat akses baca (read scalability)
  
### ⚙️ Jenis Replikasi:
+
==Jenis Replikasi:==
| Jenis Replikasi  | Penjelasan                                                                |
 
|-------------------|------------------------------------------------------------------------------|
 
| **Master-Slave**  | Master menerima tulis; slave hanya baca                                    |
 
| **Master-Master** | Dua node saling sinkron (dua arah)                                          |
 
| **Asynchronous**  | Slave menyalin data dengan keterlambatan                                    |
 
| **Synchronous**  | Master menunggu semua slave menyelesaikan update sebelum commit (tidak umum di MySQL Community)
 
  
---
+
{| class="wikitable"
 +
! Jenis Replikasi  !! Penjelasan
 +
|-
 +
| '''Master-Slave'''  || Master menerima tulis; slave hanya baca
 +
|-
 +
| '''Master-Master''' || Dua node saling sinkron (dua arah)
 +
|-
 +
| '''Asynchronous'''  || Slave menyalin data dengan keterlambatan
 +
|-
 +
| '''Synchronous'''  || Master menunggu semua slave menyelesaikan update sebelum commit (tidak umum di MySQL Community)
 +
|}
  
### ✅ **Contoh: MySQL Master–Slave Replikasi** (ringkasan)
 
  
> Sudah dibahas di Modul 11.4. Langkah utama:
+
==Contoh: MySQL Master–Slave Replikasi==
- Konfigurasi `server-id`, `log_bin`, dan `relay-log`
 
- Buat user `REPLICATION SLAVE`
 
- Gunakan `CHANGE MASTER TO` pada slave
 
- Periksa status `SHOW SLAVE STATUS\G`
 
  
---
+
> Sudah dibahas di Modul sebelumnya. Langkah utama:
 +
* Konfigurasi `server-id`, `log_bin`, dan `relay-log`
 +
* Buat user `REPLICATION SLAVE`
 +
* Gunakan `CHANGE MASTER TO` pada slave
 +
* Periksa status `SHOW SLAVE STATUS\G`
  
## 🧩 **11.7 Fragmentasi Data (Data Fragmentation)**
+
==Fragmentasi Data (Data Fragmentation)==
  
**Fragmentasi** adalah pemecahan satu tabel menjadi beberapa bagian agar dapat disimpan di lokasi berbeda.
+
'''Fragmentasi''' adalah pemecahan satu tabel menjadi beberapa bagian agar dapat disimpan di lokasi berbeda.
  
### 🧠 Tujuan:
+
'''Tujuan:'''
- Meningkatkan efisiensi query
+
* Meningkatkan efisiensi query
- Mengurangi transfer data antarlokasi
+
* Mengurangi transfer data antarlokasi
- Menyesuaikan data dengan lokasi geografis pengguna
+
* Menyesuaikan data dengan lokasi geografis pengguna
  
---
+
'''Jenis Fragmentasi:'''
  
### 📂 Jenis Fragmentasi:
+
{| class="wikitable"
 +
! Jenis Fragmentasi       !! Penjelasan
 +
|-
 +
| '''Horizontal'''          || Setiap fragmen menyimpan subset baris (ROW)
 +
|-
 +
| '''Vertical'''            || Setiap fragmen menyimpan subset kolom
 +
|-
 +
| '''Hybrid/Mixed'''        || Gabungan horizontal dan vertical
 +
|-
 +
| '''Derived Fragmentation'''|| Fragment berdasarkan entitas lain (misalnya foreign key)
 +
|}
  
| Jenis Fragmentasi      | Penjelasan                                                                |
+
'''Contoh Fragmentasi Horizontal di MySQL'''
|--------------------------|------------------------------------------------------------------------------|
 
| **Horizontal**          | Setiap fragmen menyimpan subset baris (ROW)                                |
 
| **Vertical**            | Setiap fragmen menyimpan subset kolom                                      |
 
| **Hybrid/Mixed**        | Gabungan horizontal dan vertical                                            |
 
| **Derived Fragmentation**| Fragment berdasarkan entitas lain (misalnya foreign key)
 
 
 
---
 
 
 
### ✅ **Contoh Fragmentasi Horizontal di MySQL**
 
  
 
Misalnya, data mahasiswa dibagi berdasarkan lokasi kampus:
 
Misalnya, data mahasiswa dibagi berdasarkan lokasi kampus:
  
```sql
+
-- Kampus A
-- Kampus A
+
CREATE DATABASE kampus_a;
CREATE DATABASE kampus_a;
+
USE kampus_a;
USE kampus_a;
+
CREATE TABLE mahasiswa (
CREATE TABLE mahasiswa (
+
    nim VARCHAR(10), nama VARCHAR(100), prodi VARCHAR(50)
    nim VARCHAR(10), nama VARCHAR(100), prodi VARCHAR(50)
+
);
);
+
INSERT INTO mahasiswa VALUES ('A101', 'Andi', 'TI');
INSERT INTO mahasiswa VALUES ('A101', 'Andi', 'TI');
 
 
 
-- Kampus B
 
CREATE DATABASE kampus_b;
 
USE kampus_b;
 
CREATE TABLE mahasiswa (
 
    nim VARCHAR(10), nama VARCHAR(100), prodi VARCHAR(50)
 
);
 
INSERT INTO mahasiswa VALUES ('B101', 'Budi', 'SI');
 
```
 
 
 
---
 
  
### ✅ **Contoh Fragmentasi Vertical di MySQL**
+
-- Kampus B
 +
CREATE DATABASE kampus_b;
 +
USE kampus_b;
 +
CREATE TABLE mahasiswa (
 +
    nim VARCHAR(10), nama VARCHAR(100), prodi VARCHAR(50)
 +
);
 +
INSERT INTO mahasiswa VALUES ('B101', 'Budi', 'SI');
  
```sql
+
'''Contoh Fragmentasi Vertical di MySQL'''
-- Tabel data pribadi
 
CREATE TABLE mahasiswa_pribadi (
 
    nim VARCHAR(10) PRIMARY KEY,
 
    nama VARCHAR(100),
 
    alamat TEXT
 
);
 
  
-- Tabel data akademik
+
-- Tabel data pribadi
CREATE TABLE mahasiswa_akademik (
+
CREATE TABLE mahasiswa_pribadi (
    nim VARCHAR(10) PRIMARY KEY,
+
    nim VARCHAR(10) PRIMARY KEY,
    prodi VARCHAR(50),
+
    nama VARCHAR(100),
    ipk DECIMAL(3,2)
+
    alamat TEXT
);
+
);
  
-- Bisa digabung dengan JOIN
+
-- Tabel data akademik
SELECT p.nama, a.ipk
+
CREATE TABLE mahasiswa_akademik (
FROM mahasiswa_pribadi p
+
    nim VARCHAR(10) PRIMARY KEY,
JOIN mahasiswa_akademik a ON p.nim = a.nim;
+
    prodi VARCHAR(50),
```
+
    ipk DECIMAL(3,2)
 +
);
  
---
+
-- Bisa digabung dengan JOIN
 +
SELECT p.nama, a.ipk
 +
FROM mahasiswa_pribadi p
 +
JOIN mahasiswa_akademik a ON p.nim = a.nim;
  
### ⚠️ **Tantangan Fragmentasi:**
 
- Kompleksitas query lintas fragmen
 
- Konsistensi antar node
 
- Desain awal harus dipikirkan matang
 
  
---
+
==Tantangan Fragmentasi:==
 +
* Kompleksitas query lintas fragmen
 +
* Konsistensi antar node
 +
* Desain awal harus dipikirkan matang
  
## 📌 **11.8 Kesimpulan**
+
==Kesimpulan==
  
| Konsep            | Penjelasan                                                               |
+
{| class="wikitable"
|--------------------|--------------------------------------------------------------------------|
+
| Konsep            || Penjelasan
| **Replikasi**     | Menyalin data dari satu node ke node lain untuk ketersediaan dan kecepatan |
+
|-
| **Fragmentasi**   | Memecah data menjadi bagian (baris/kolom) untuk efisiensi dan lokalisasi |
+
| '''Replikasi'''     || Menyalin data dari satu node ke node lain untuk ketersediaan dan kecepatan
| **MySQL**         | Mendukung replikasi master-slave dan fragmentasi manual                 |
+
|-
 +
| '''Fragmentasi'''   || Memecah data menjadi bagian (baris/kolom) untuk efisiensi dan lokalisasi
 +
|
 +
| '''MySQL'''         || Mendukung replikasi master-slave dan fragmentasi manual
 +
|}
  
---
+
==Pranala Menarik==
  
Kalau kamu ingin saya bantu buatkan **simulasi replikasi master-master** atau **arsitektur basis data terdistribusi lengkap antar kota/kampus**, tinggal bilang ya!
+
* [[Database]]
 +
* [[Database | Kuliah]]

Revision as of 11:05, 6 May 2025

Berikut adalah Modu: Sistem Basis Data Terdistribusi, dengan fokus pada Replikasi dan Fragmentasi Data, serta contoh implementasi di MySQL Ubuntu 24.04.

Sistem Basis Data Terdistribusi

Replikasi dan Fragmentasi Data

Tujuan Pembelajaran

Setelah mempelajari bagian ini, mahasiswa diharapkan mampu:

  • Menjelaskan konsep replikasi dan fragmentasi data dalam sistem terdistribusi.
  • Membedakan jenis-jenis fragmentasi dan replikasi.
  • Mengimplementasikan contoh replikasi dan fragmentasi di MySQL Ubuntu 24.04.

Replikasi Data (Data Replication)

Replikasi adalah proses menyalin dan menyinkronkan data dari satu node ke node lain agar tetap konsisten.

Tujuan:

  • Meningkatkan ketersediaan
  • Menyediakan backup real-time
  • Mempercepat akses baca (read scalability)

Jenis Replikasi:

Jenis Replikasi Penjelasan
Master-Slave Master menerima tulis; slave hanya baca
Master-Master Dua node saling sinkron (dua arah)
Asynchronous Slave menyalin data dengan keterlambatan
Synchronous Master menunggu semua slave menyelesaikan update sebelum commit (tidak umum di MySQL Community)


Contoh: MySQL Master–Slave Replikasi

> Sudah dibahas di Modul sebelumnya. Langkah utama:

  • Konfigurasi `server-id`, `log_bin`, dan `relay-log`
  • Buat user `REPLICATION SLAVE`
  • Gunakan `CHANGE MASTER TO` pada slave
  • Periksa status `SHOW SLAVE STATUS\G`

Fragmentasi Data (Data Fragmentation)

Fragmentasi adalah pemecahan satu tabel menjadi beberapa bagian agar dapat disimpan di lokasi berbeda.

Tujuan:

  • Meningkatkan efisiensi query
  • Mengurangi transfer data antarlokasi
  • Menyesuaikan data dengan lokasi geografis pengguna

Jenis Fragmentasi:

Jenis Fragmentasi Penjelasan
Horizontal Setiap fragmen menyimpan subset baris (ROW)
Vertical Setiap fragmen menyimpan subset kolom
Hybrid/Mixed Gabungan horizontal dan vertical
Derived Fragmentation Fragment berdasarkan entitas lain (misalnya foreign key)

Contoh Fragmentasi Horizontal di MySQL

Misalnya, data mahasiswa dibagi berdasarkan lokasi kampus:

-- Kampus A
CREATE DATABASE kampus_a;
USE kampus_a;
CREATE TABLE mahasiswa (
    nim VARCHAR(10), nama VARCHAR(100), prodi VARCHAR(50)
);
INSERT INTO mahasiswa VALUES ('A101', 'Andi', 'TI');
-- Kampus B
CREATE DATABASE kampus_b;
USE kampus_b;
CREATE TABLE mahasiswa (
    nim VARCHAR(10), nama VARCHAR(100), prodi VARCHAR(50)
);
INSERT INTO mahasiswa VALUES ('B101', 'Budi', 'SI');

Contoh Fragmentasi Vertical di MySQL

-- Tabel data pribadi
CREATE TABLE mahasiswa_pribadi (
    nim VARCHAR(10) PRIMARY KEY,
    nama VARCHAR(100),
    alamat TEXT
);
-- Tabel data akademik
CREATE TABLE mahasiswa_akademik (
    nim VARCHAR(10) PRIMARY KEY,
    prodi VARCHAR(50),
    ipk DECIMAL(3,2)
);
-- Bisa digabung dengan JOIN
SELECT p.nama, a.ipk
FROM mahasiswa_pribadi p
JOIN mahasiswa_akademik a ON p.nim = a.nim;


Tantangan Fragmentasi:

  • Kompleksitas query lintas fragmen
  • Konsistensi antar node
  • Desain awal harus dipikirkan matang

Kesimpulan

Konsep Penjelasan
Replikasi Menyalin data dari satu node ke node lain untuk ketersediaan dan kecepatan
Fragmentasi Memecah data menjadi bagian (baris/kolom) untuk efisiensi dan lokalisasi MySQL Mendukung replikasi master-slave dan fragmentasi manual

Pranala Menarik