Lewati ke isi
ORACLEDECK

Topik 05

Basis Data Relasional Terdistribusi

Fragmentasi horizontal, vertikal, turunan, dan campuran; aturan kebenaran; alokasi dan replikasi.

Kemampuan akhir yang diharapkan. Memahami penerapan basis data relasional dalam sistem terdistribusi.

Mengapa relasi dipecah

Pada DBMS terdistribusi, relasi disimpan di beberapa tempat. Mengakses relasi yang disimpan di sisi jauh menimbulkan biaya pengiriman pesan. Untuk menguranginya, relasi dipartisi atau difragmentasi, lalu fragmen dikirim ke tempat fragmen itu paling sering diakses.

Empat jenis fragmentasi

JenisOperatorIsi fragmenRekonstruksi
Horizontal primerσ (selection)Subset baris dari relasi asalUNION seluruh fragmen
Vertikalπ (projection)Subset kolom, selalu memuat kunciNATURAL JOIN atas kunci
Horizontal turunan⋉ (semijoin)Baris anak yang induknya ada di fragmen indukUNION seluruh fragmen
Campuran (hybrid)σ∘πVertikal lalu horizontal, atau sebaliknyaKebalikan urutan pembentukannya

Tiga aturan kebenaran fragmentasi

AturanHorizontalVertikal
KelengkapanSetiap tupel relasi asal ada di minimal satu fragmenSetiap atribut relasi asal ada di minimal satu fragmen
RekonstruksiR = F₁ ∪ F₂ ∪ … ∪ FₙR = F₁ ⋈ F₂ ⋈ … ⋈ Fₙ atas kunci
KedisjoinanFragmen tidak tumpang tindih (disjoint)Hanya atribut kunci yang boleh berulang

Untuk menjamin fragmentasi vertikal bersifat lossless-join, sistem wajib menyediakan id tupel yang unik pada setiap fragmen. Tanpa kunci di setiap fragmen, hasil join kembali bukan relasi aslinya.

Contoh dari Modul 6 dan 7

STAFF dipecah vertikal menjadi S1 dan S2, lalu S2 dipecah horizontal per cabang menjadi S21, S22, dan S23. Inilah fragmentasi campuran. Lab Fragmentasi menjalankan skema persis ini atas data sungguhan dan memeriksa ketiga aturan kebenarannya.

S1  = π staffno, position, sex, DOB, salary (STAFF)        ditempatkan di site 3
S2  = π staffno, fname, lname, branchno, sex, DOB, salary (STAFF)

S21 = σ Bno = B3 (S2)     ditempatkan di site 3
S22 = σ Bno = B5 (S2)     ditempatkan di site 5
S23 = σ Bno = B7 (S2)     ditempatkan di site 7

Alokasi dan replikasi

Setelah relasi dipecah, tiap fragmen harus ditempatkan. Keputusannya menyangkut tiga hal sekaligus: di situs mana, berapa salinan, dan siapa yang menanggung biaya pembaruan.

StrategiBiaya bacaBiaya tulisKetersediaanCocok untuk
Terpusat (satu situs)Mahal untuk situs jauhMurah — satu salinanRendahSistem kecil, satu lokasi dominan
Terfragmentasi tanpa replikaMurah bila akses lokalMurahSedangData yang jelas terpisah per wilayah
Replikasi penuhSangat murahSangat mahal — semua salinan disentuhTinggiTabel referensi yang jarang berubah
Replikasi selektifMurah untuk fragmen panasSedangTinggi untuk yang direplikasiPilihan praktis pada hampir semua kasus

Coba di terminal

Kueri di bawah memperagakan konsep topik ini pada data sungguhan. Tekan ▶ Jalankan untuk membukanya di Terminal SQL, lalu ubah sesuka hati — sesi terminal adalah salinan pribadi di peramban Anda.

Kelengkapan: gabungan fragmen = relasi global

Aturan kelengkapan dan rekonstruksi: UNION ALL ketiga fragmen harus sama dengan pasien. terdistribusi

SELECT COUNT(*) AS global FROM pasien;
SELECT COUNT(*) AS jumlah_fragmen FROM (
  SELECT id_pasien FROM pasien@jakarta
  UNION ALL SELECT id_pasien FROM pasien@bandung
  UNION ALL SELECT id_pasien FROM pasien@surabaya
) f;

Kedisjoinan: tidak ada pasien di dua fragmen

Irisan antarfragmen horizontal harus kosong. terdistribusi

SELECT id_pasien FROM pasien@jakarta
INTERSECT
SELECT id_pasien FROM pasien@bandung;

Fragmentasi vertikal lewat CREATE TABLE AS

Kunci primer disalin ke setiap fragmen vertikal agar join rekonstruksinya lossless. rumahsakit

CREATE TABLE pasien_v1 AS SELECT id_pasien, nama_pasien, kota FROM pasien;
CREATE TABLE pasien_v2 AS SELECT id_pasien, penyakit, no_hp FROM pasien;
SELECT COUNT(*) AS hasil_join FROM pasien_v1 a JOIN pasien_v2 b ON a.id_pasien = b.id_pasien;

Jalankan sendiri

Sumber: Modul 1 (RPS pekan 5), Modul Pertemuan 7 bagian Alokasi Data