BAB I PENDAHULUAN
2.3 Desain Sistem Basis Data Terdistribusi
Dalam perencanaan dan pembuatan sistem basis data terdistribusi terdapat tiga cara yaitu replikasi, fragmentasi, dan alokasi. Meskipun proses yang digunakan oleh ketiga cara ini untuk mendistribusikan data berbeda, tetapi tujuannya sama yaitu :
1. Referensi lokalitas
2. Meningkatkan kehandalan dan ketersediaan data 3. Meningkatkan unjuk kerja
4. Keseimbangan kapasitas penyimpanan dan biaya 5. Biaya Komunikasi Minimal
Perbedaannya terletak pada proses pendistribusiannya. Replikasi merupakan penduplikasian atau pengkopian basis data di dua atau labih lokasi server
sudah terpecah menjadi beberapa bagian dimana masing-masing basis data yang tersimpan di tempat yang berbeda-beda [H.F. Korth dan Silberscatz. Ambraham, 1986]. Ada dua strategi dasar fragmentasi yaitu fragmentasi vertikal dan fragmentasi horizontal yang secara lengkap akan dibahasi pada sub bab berikutnya. Sedangkan alokasi adalah penempatan fragmen data di suatu tempat.
2.3.1 Fragmentasi
Salah satu cara untuk mendistribusikan basis data adalah dengan metode fragmentasi. Pada sistem basis data terdistribusi relasi diletakkan pada beberapa lokasi basis data server. Alasan yang menyebabkan data dalam suatu tabel dibagi menjadi fragmen data untuk didistribusikan adalah :
a. Penggunaan. Dalam realitas, data yang sering digunakan bukanlah data dalam seluruh tabel, tetapi hanyalah sebagian data atau sering disebut view.
b. Efisiensi. Data disimpan di lokasi yang paling dekat dengan pengguna yang sering mengakses. Sehingga data yang tidak sering dibutuhkan oleh lokasi tertentu tidak disimpan di lokasi yang bersangkutan.
c. Paralel. Karena data yang didistribusikan berupa fragmen data, maka transaksi yang berupa kueri tunggal dapat dipecah menjadi sub-kueri yang dikenakan terhadap fragmen data,
sehingga transaksi dapat dilakukan secara bersamaan (concurrent).
d. Keamanan. Data yang tidak dibutuhkan oleh aplikasi lokal tidak akan disimpan dalam lokasi tersebut, sehingga user yang tidak memiliki hak untuk mengakses tidak akan bisa mengakses data yang lain.
Fragmen data akan mendukung beberapa hal seperti diatas, tetapi penggunaan fragmen data juga memiliki beberapa kelemahan, yaitu : a. Menurunnya unjuk kerja. View yang melibatkan lebih dari satu
fragmen data pada lokasi yang berbeda akan mengalami penurunan unjuk kerja.
b. Integritas. Pengendalian integritas lebih sulit jika atribut yang berperan dalam dependensi didistribusikan ke beberapa lokasi.
Fragmentasi tidak dapat dilakukan secara sembarangan. Untuk memastikan bahwa tidak terdapat perubahan data dalam basis data selama menjalani proses fragmentasi.
Proses fragmentasi harus memenuhi 3 aturan berikut ini:
a. Completeness
i. Jika sebuah relasi R dibagi menjadi fragmen-fragmen R1 , R2 , ..., Rn maka fragmentasi dikatakan komplit jika dan hanya jika setiap item data yang dapat ditemukan dalam R dapat juga ditemukan di dalam satu atau lebih fragmen Ri .
ii. Aturan ini diperlukan untuk memastikan bahwa tidak ada data yang hilang selama proses fragmentasi.
b. Reconstruction
i. Jika sebuah relasi R dibagi menjadi fragmen-fragmen R1 , R2 , ..., Rn maka fragmentasi dikatakan rekonstruksi jika dan hanya jika R dapat dibentuk dari fragmen-fragmen Ri.
ii. Dengan kata lain, bahwa dimungkinkan untuk membentuk sebuah relasi R yang terbentuk dari fragmen-fragmen yang ada. iii. Aturan ini diperlukan untuk memastikan bahwa
ketergantungan secara fungsi (functional dependencies) terpenuhi.
c. Disjointness
i. Jika sebuah relasi R dibagi menjadi fragmen-fragmen R1 , R2 ,..., Rn dan data item di berada di dalam fragmen Rj maka fragmentasi dikatakan disjoint jika dan hanya jika data item di tidak berada di dalam fragmen lain Rk dimana k ≠ j.
ii. Dengan kata lain, jika suatu item data sudah muncul dalam sebuah fragmen, maka item data tersebut tidak boleh muncul lagi di fragmen yang lain.
iii. Fragmentasi secara vertikal adalah perkecualian dalam aturan ini, karena atribut-atribut dari primary key harus diulang untuk dapat melakukan rekonstruksi. Aturan ini diperlukan untuk memastikan terjadinya redundansi data seminimal mungkin.
1. Fragmentasi Vertikal
Fragmentasi vertikal dari table R adalah proses untuk mendapatkan fragmen R1, R2,…, Rn sedemikian rupa sehingga setiap fragmen memuat himpunan bagian dari atribut-atribut R dan kunci primer. (Ozsu, 1999).
Tujuan utama dari fragmentasi vertikal adalah membagi sebuah tabel ke dalam tabel-tabel yang lebih kecil sedemikian rupa sehingga aplikasi user hanya berjalan pada satu tabel. Dengan demikian meminimalkan waktu eksekusi aplikasi yang berjalan dalam fragmen-fragmen tersebut. (Ozsu,1999).
Fragmentasi ini lebih sulit daripada fragmentasi horizontal, karena lebih banyak alternatif hasil yang dapat dibuat dari fragmentasi vertikal ini. Jika sebuah relasi memiliki m atribut bukan kunci primer, maka fragmen yang mungkin adalah B(m), dalam urutan kebenaran dari Bell Number. Untuk nilai yang besarnya m, maka B(m) ≈ mm. ; sebagai contoh, untuk m = 100,
B(m) ≈115,000, untuk m = 15, B(m) ≈ 109, untuk m = 30, B(m) ≈
1023. (Ozsu, 1999).
Terdapat dua pendekatan untuk memperoleh penyelesaian terbaik dari fragmentasi vertikal yaitu :
a. Pendekatan Kelompok (Grouping)
Dimulai dengan menempatkan setiap atribut ke dalam sebuah fragmen. Kemudian setahap demi setahap dilakukan join
dengan beberapa fragmen sampai kriteria yang diinginkan terpenuhi.
b. Pendekatan Pemecahan (Splitting)
Dimulai dengan sebuah tabel dan memutuskan manfaat dari pembagian yang berlandaskan pada jalannya aplikasi yang mengakses atribut-atribut.
Kebutuhan informasi dalam fragmentasi vertikal adalah informasi yang berhubungan dengan aplikasi.
a. Attribute Affinities adalah ukuran yang mengindikasikan
bagaimana relasi antar atribut.
b. Attribute Usage Value apabila diberikan himpunan kueri Q =
{q1, q2, …, qq} yang akan dijalankan pada tabel R[A1, A2, …, An], maka attribute usage value (use) adalah :
Use(qi,Aj) = {1 jika atribut Aj diakses oleh kueri qi
0 jika sebaliknya}
Dalam skripsi ini hanya akan dibahas mengenai fragmentasi yang menggunakan pendekatan pemecahan (splitting).
1.2 Tahap-Tahap Proses Fragmentasi Vertikal
Sebagai gambaran untuk kemudahan dan kejelasan dalam tahap-tahap fragmentasi vertikal akan diberikan contoh kasus. Bila terdapat tabel PROJ sebagai berikut :
Tabel 2.1. Tabel PROJ
Dari tabel tersebut akan dilakukan fragmentasi vertikal. Misalkan terdapat kueri yang dijalankan terhadap tabel PROJ adalah sebagai berikut :
q1 : SELECT Budget FROM PROJ WHERE Pno = Value q2 : SELECT Pname,Budget FROM PROJ
q3 : SELECT Pname FROM PROJ WHERE Loc = Value
q4 : SELECT SUM(Budget) FROM PROJ WHERE Loc = Value
Tahap 1 : Menentukan bagaimana akses kueri (q1) pada setiap atribut (Aj)
Dalam tahap ini akan dibuat matriks use(qi,Aj), matriks tersebut sering disebut Muse, pada baris ke q1 dari kolom A1, isikan angka1 atau 0 :
a. 1 : jika kueri q1 mengakses atribut A1
b. 0 : jika kueri q1 tidak mengakses atribut A1
Dari empat kueri yang dijalankan pada table PROJ akan didapat
Muse sebagai berikut : andaikan A1= Pno, A2= Pname, A3= Budget, A4= Loc
Muse A1 A2 A3 A4 q1 1 0 1 0 q2 0 1 1 0 q3 0 1 0 1 q4 0 0 1 1
Gambar 2.3 . Matrik Muse
Tahap 2 : Menentukan frekuensi akses query qi pada setiap lokasi Lk.
Tahap ini akan dibuat sebuah matrik baru yang menggambarkan berapakali setiap lokasi mengakses kueri-kueri yang ada, matrik ini sering disebut Macc. Dalam kasus ini diandaikan terdapat tiga lokasi yang mengakses, setiap kueri (acci(qi)) di setiap lokasinya adalah sebagai berikut :
L1 L2 L3
q1 15 20 10
q2 5 0 0
q3 25 25 25
q4 3 0 0
Gambar 2.4. Matrik Macc
Tahap 3 : Menentukan seberapa dekat hubungan antar atribut
Matrik Affinitas atau sering disebut Maff ini didapat dari Muse
dari relasi R(A1,A2,…,An) dengan sekumpulan aplikasi Q = {q1,q2,…qn} didefinisikan sebagai berikut :
Aff(Ai Aj,) =
∑ ∑
= ∧ =1 ( , ) 1∀ , ( | ) ( ) ( Aj qk use Ai qk use k Sl qk accl qk refDimana refl(qk) adalah nilai yang terakses ke atribut (Ai,Aj)
untuk setiap penerapan dari aplikasi qk di lokasi Ll dan accl(qk)
adalah ukuran frekuensi aplikasi terakses yang telah dijabarkan dan dimodifikasi untuk mencantumkan frekuensi di lokasi berbeda.
Hasil dari penghitungan adalah matrik n x n, setiap elemen dimana setiap ukuran dijabarkan ke atas. Kita menyebutnya matrik attribute affinity (Maff). Dalam tahap ini berlaku juga sifat simetris, (Ai,Aj) = (Aj,Ai).
A1 A2 A3 A4 A1 45 0 45 0
A2 0 80 5 75
A3 45 5 53 48 A4 0 75 48 78 Gambar 2.5. Matrik Affinitas (Maff)
Dari persamaan di atas dicari ukuran persamaan antara atribut A1 dan A3 sebagai berikut :
aff(A1,A3)=
∑ ∑
1= = = + + = 1 3 1 l ( ) ( 1) ( 2) ( 3) 45k acc qk acc q acc q acc q
Tahap 4 : Menentukan Seberapa Dekat Hubungan Atribut Dengan Bond Energy Algorithm (BEA).
Tugas yang paling mendasar dalam mendesain perhitungan fragmentasi vertikal adalah menemukan beberapa sarana pengelompokan atribut dari sebuah hubungan berdasar pada atribut affinity nilai dalam AA. Bond Energy Algorithm (BEA)
untuk mendapatkan matrik pengelompokan (Mcluster) melakukan tiga langkah :
a. Initialization. Meletakkan dan memperbaiki salah satu kolom
dari AA secara adak ke dalam CA. kolom 1 dipilih dalam algoritma.
b. Iteration. Ambil tiap n yang tersisa dari kolom n-i, dimana i
adalah jumlah kolom-kolom yang telah diletakkan di CA dan meletakkan CA ke dalam partisi i+1 yang tersisa dalam matrik CA. Pilih peletakan yang memberikan nilai yang paling besar kepada penghitungan persamaan global tergambar di atas. Lanjutkan langkah ini sampai tidak ada lagi kolom tersisa untuk ditempati.
c. Row Ordering. Sekali pengaturan kolom ditentukan
penempatan dari baris harus juga diubah sehingga posisi relatif mereka cocok dengan posisi relatif kolom.
Untuk mencari nilai bond antara dua atribut x dan y
didefinisikan sebagai berikut :
bond(Ax,Ay) =
∑
= n z Ay Az aff Ax Az aff 1 ) , ( ) , (cont digunakan untuk mendefinisikan kontribusi dari atribut untuk penempatan setiap atributnya. Didefinisikan dengan rumus :
cont(Ai,Ak,Aj) = 2bond(Ai,Ak)+2bond(Ak,Aj)-2bond(Ai,Aj)
Berdasar langkah initialization, kita mengkopi kolom1 dan 2 matrik AA ke matrik CA dan memulai dengan kolom 3
(contoh : atribut A3). Ada tiga tempat alternatif dimana kolom 3 dapat ditempatkan : di kiri kolom 1, menghasilkan urutan (3-1-2) di antara kolom 1 dan 2 menghasilkan (1-3-2) dan di sebelah kanan kolom 2 menghasilkan (1-2-3). Untuk menghitung kontribusi dari susunan terakhir kita harus menghitung cont(A2,A3,A4) dari pada cont(A1,A2,A3). Lebih jauh lagi dalam konteks ini A4 mengacu pada indeks posisi dalam matrik CA yang kosong (gbr) tidak pada kolom atribut A4 dari matrik AA.
Perhitungan kontribusi dari susunan (0-3-1) adalah sebagai berikut :
cont(A0,A3,A1) = 2bond(A0,A3)+2bond(A3,A1
)-2bond(A0,A1)
dimana kita ketahui nilai bond :
bond(A0,A3) = bond(A0,A1) = 0
bond(A3,A1) = ((45*45)+(5*0)+(53*45)+(3*0)) = 4410
cont(A0,A3,A1) = ((2*0)+(2*4410)-(2*0)) = 8820 Perhitungan kontribusi dari susunan (1-3-2) :
cont(A1,A3,A2) = 2bond(A1,A3)+2bond(A3,A2)-2bond(A1,A2)
dimana kita ketahui nilai bond :
bond(A1,A3) = bond(A3,A1) = 4410
bond(A3,A2) = ((45*0)+(80*5)+(5*53)+(75*3)) = 890
bond(A1,A2) = ((40*0)+(80*0)+(45*5)+(75*0)) = 225
dapat diperoleh nilai cont :
cont(A2,A3,A4) = ((2*890)+(2*0)-(2*0)) = 1780
Kontribusi dari susunan (1-3-2) adalah yang terbesar, kita memilih untuk meletakkan A3 di sebelah kanan A1
(Gambar 2.6b.). Selanjutnya menyisipkan kolom 4. Kontribusi susunan (0-4-1) adalah sebagai berikut :
cont(A0,A4,A1) = 2bond(A0,A4)+2bond(A1,A4)-2bond(A1,A0)
dimana kita ketahui nilai bond :
bond(A0,A4) = bond(A4,A0) = 0
bond(A4,A1) = ((45*0)+(75*0)+(3*45)+(78*0)) = 135
dapat diperoleh nilai cont :
cont(A0,A4,A1) = ((2*0)+(2*135)-(2*0)) = 270
Perhitungan kontribusi susunan (1-4-3) adalah sebagai berikut :
cont(A1,A4,A3) = 2bond(A1,A4)+2bond(A3,A4)-2bond(A1,A3)
dimana kita ketahui nilai bond :
bond(A3,A4) = ((45*0)+(75*5)+(3*53)+(78*3)) = 768
bond(A1,A3) = bond(A3,A1) = 4410 dapat diperoleh nilai cont :
cont(A1,A4,A3) = ((2*135)+(2*768)-(2*4410)) = -7014
Perhitungan dari susunan (3-4-2) adalah sebagai berikut :
cont(A3,A4,A2) = 2bond(A3,A4)+2bond(A2,A4)-2bond(A2,A3)
dimana kita ketahui nilai bond :
bond(A3,A4) = ((45*0)+(75*5)+(3*53)+(78*3)) = 768
bond(A2,A4) = ((0*0)+(75*80)+(3*5)+(78*75)) = 11865
bond(A2,A3) = bond(A3,A2) = 890 dapat diperoleh nilai cont :
cont(A3,A4,A2) = ((2*768)+(2*11865)-(2*890)) = 23486
Perhitungan kontribusi dari susunan (2-4-5) adalah sebagai berikut
cont(A2,A4,A5) = 2bond(A2,A4)+2bond(A5,A4)-2bond(A2,A5)
dimana kita ketahui nilai bond :
bond(A2,A4) = bond(A4,A2) = 11865
bond(A5,A4) = 0
bond(A2,A5) = 0 dapat diperoleh nilai cont :
cont(A2,A4,A5) = ((2*0)+(2*11865)-(2*0)) = 23730
Dari perhitungan kontribusi di atas (2-4-5) memberikan nilai cont terbesar (Gambar 2.6c.). Selanjutnya baris tersusun dalam
susunan yang sama seperti kolom dan hasilnya dapat dilihat dalam gambar . A1 A2 A3 A4 A1 45 0 A2 0 80 A3 45 5 A4 45 75 A1 A3 A2 A4 A1 45 45 0 A2 0 5 80 A3 45 53 5 A4 45 48 75
Gambar 2.6a. Matrik CA(a) Gambar 2.6b. Matrik CA(b)
A1 A3 A2 A4 A1 45 45 0 0 A2 0 5 80 75 A3 45 53 5 3 A4 0 3 75 78 A1 A2 A3 A4 A1 45 45 0 0 A3 45 53 5 3 A2 0 5 80 75 A4 0 3 75 78
Gambar 2.6c. Matrik CA(c) Gambar 2.6d. Matrik CA(d)
Tahap 5 : Menentukan Pemisahan Tabel dengan Mengacu pada Matrik Cluster
Tujuan dari aktifitas pemisahan adalah untuk menemukan pasangan atribut yang diakses atau pada sebagian besar pasangan aplikasi tertentu. Adapun langkah-langkah yang dilakukan pada tahap ini adalah sebagai berikut :
a. Mencari Himpunan Atribut yang Diakses oleh aplikasi qi.
AQ(qi) = {Aj|use (qi,Aj) =1}
Dari contoh matrik use di atas akan dihasilkan atribut untuk setiap aplikasi qi sebagai berikut :
q1= {A1,A3}, q2= {A2,A3}, q3= {A2,A4}, q4= {A3,A4}
b. Mencari Jumlah total frekuensi akses untuk setiap aplikasi qi
pada semua lokasi. Dari matrik acc akan didapat total acc
sebagai berikut :
q1 = 45, q2 = 5, q3 = 75, q4= 3
c. Mencari nilai terbesar partisi dengan menggunakan algoritma partisi. Matrik cluster akan dibagi menjadi 4 dengan 3 macam cara yaitu :
Gambar 2.7. Lokasi pemisahan ke-1
Gambar 2.9. Lokasi pemisahan ke-3 Kemudian mencari TQ, BQ, dan OQ yaitu :
TQ : Aplikasi qi dimana himpunan atribut yang diakses oleh apliaksi qi merupakan himpunan bagian dari TA.
TQ = {qi|AQ(qi) ⊆ TA}
BQ : Aplikasi qi dimana himpunan atribut yang diakses oleh apliaksi qi merupakan himpunan bagian dari BA.
BQ = {qi|AQ(qi) ⊆ BA}
OQ : Aplikasi qi selain TQ dan BQ OQ = Q - {TQ ∪ BQ}
Dari 3 lokasi pemisahan di atas (gambar 2.7; 2.8; 2.9 ) akan didapat TQ, BQ, dan OQ sebagai berikut :
Untuk lokasi pemisahan ke-1 :
TQ : {q1,q2}; BQ : 0 ; OQ : {q3,q4} Untuk lokasi pemisahan ke-2 :
TQ : {q1}; BQ : {q3} ; OQ : {q2,q4} Untuk lokasi pemisahan ke-3 :
d. Hitung jumlah akses total atribut setiap aplikasi dengan mencari : CTQ, CBQ, dan COQ. CTQ adalah jumlah akses total untuk aplikasi qi dari himpunan TQ, CBQ adalah jumlah akses total untuk aplikasi qi dari himpunan BQ, dan COQ adalah jumlah akses total untuk aplikasi qi dari himpunan OQ. Dimana :
CQ =
∑∑
∈ ∀Q qi Sj ) ( ) (qi accj qi refj CTQ =∑∑
∈ ∀Q qi Sj ) ( ) (qi accj qi refj CBQ =∑∑
∈ ∀Q qi Sj ) ( ) (qi accj qi refj COQ =∑∑
∈ ∀Q qi Sj ) ( ) (qi accj qi refjDari 3 lokasi pemisahan diatas didapat CTQ, CBQ, dan COQ sebagai berikut :
Untuk lokasi pemisahan ke-1 :
CTQ = 45+5 = 50; CBQ = 0; COQ = 128-50 = 78 Untuk lokasi pemisahan ke-2 :
CTQ = 45; CBQ = 75; COQ = 128-120 = 8 Untuk lokasi pemisahan ke-3 :
CTQ = 0; CBQ = 5+75+3 = 83; COQ = 128-83 = 50 e. Untuk setiap matrik pemisahan diatas cari nilai matrik
Z = CTQ * CBQ – COQ2
Kemudian nilai z yang terbesar akan menjadi dasar penentuan atribut untuk pembagian matrik secara vertikal. Dari kasus diatas didapat nilai z sebagai berikut :
i. Untuk lokasi pemisahan ke-1 : 50 * 0 – (78)2 = -6084 ii. Untuk lokasi pemisahan ke-2 : 45 * 75 – (8)2 = 3311 iii. Untuk lokasi pemisahan ke-3 : 0 * 83 – (50)2 = -2500
Karena lokasi pemisahan ke-2 menghasilkan nilai z yang terbesar maka fragmentasi yang terbentuk adalah : PROJ1 = {A1,A3}, dan PROJ2 = {A1,A2,A4}.
Setelah didapat fragmen-fragmen data, langkah berikutnya adalah menguji kebenaran fragmentasi, yaitu apakah memenuhi syarat completeness, reconstruction, dan disjoint.
a. Completeness
Hasil fragmentasi diatas sudah memenuhi syarat
completeness, karena tidak ada data yang hilang selama
proses fragmentasi.
b. Recontruction
Syarat reconstruction sudah dipenuhi, karena dari hasil fragmen-fragmen data di atas dapat dibentuk kembali sebuah relasi seperti semula.
c. Disjoint
Langkah pemecahan tabel di atas sudah memenuhi syarat
disjoint, karena tidak ada atribut yang berada pada dua
fragmen, kecuali kunci primer.
2. Fragmentasi Horizontal
Dua syarat informasi untuk fragmentasi horizontal, yaitu:
a. Database information
Database information terdiri dari dua macam informasi yaitu relasi dan kardinalitas. Untuk lebih jelasnya dapat dilihat pada gambar 2.10.
Gambar 2.10. Ekspresi Relasi Antar Tabel Menggunakan Link (Li)
Dengan memberikan link L1 pada gambar, fungsi owner dan
member bernilai :
Owner (L1) = PAY
b. Application information
Informasi kualitatif yang paling mendasar dari sebuah aplikasi adalah predicate yang digunakan dalam kueri. Dari predikat dapat dibentuk :
i. Simple Predicates
Untuk relasi R[A1,A2,A3,…,An], maka simple predicate P, adalah Pj : Ai θ Value. Dimana Ai adalah atribut, θ∈{<, >, ≤, ≥, =, ≠} adalah operasi pembanding, dan Value adalah nilai domain. Untuk relasi R didefinisikan Pr = {P1,P2,P3,…,Pm} (Ozsu, 1999).
Contoh :
p1 : Pname = “ Maintenance” p2 : Budget ≤ 200000
Maka domain dari atribut Pname adalah “Maintenance”, dan domain dari atribut Budget adalah 200000.
ii. Minterm Predicates
Kombinasi atau kumpulan dari simple predicates akan membentuk minterm predicates. Diberikan R dan Pr = {P1,P2,P3,…,Pm}, didefinisikan M= {m1,m2,m3,...,mn} sebagai :
M = {mij|mij = P*ik}, l ≤ k ≤ m , l ≤ j ≤ z Pik∈Pri
Contoh :
m1 : PNAME="Maintenance" ^ BUDGET ≤ 200000 m2 : NOT(PNAME="Maintenance") ^ BUDGET ≤ 200000
m3 : PNAME= "Maintenance" ^ NOT(BUDGET ≤ 200000)
m4 : NOT(PNAME="Maintenance") ^ NOT(BUDGET ≤ 200000)
Dalam hal ini, m1 dan m4 adalah contradictory dengan implikasi l dan dapat di eliminasi dari M [Otzu, 1999]. Informasi kuantitatif dari aplikasi adalah :
i. Selektivitas Minterm (Minterm selectivity)
Jumlah tuple dari relasi yang akan diakses oleh user
berdasarkan minterm predicate.
Contoh : dari minterm pada contoh diatas maka sel(m2 ) = 0, sedangkan sel(m2 ) = 2.
ii. Frekuensi Akses (Access frequency)
Frekuensi aplikasi mengakses mengakses data. Jika Q = {q1,q2,q3,…,qz} adalah himpunan kueri user, maka Acc(qi)
2.A Primary Horizontal Fragmentation (PHF)
1. PHF adalah sebuah fragmentasi dari tabel R yang difragmen menjadi tabel-tabel {R1,R2,, Rw} menurut kueri Fj, dimana kueri Fj adalah minterm predicates (mi) (Ozsu, 1999). 2. Algoritma PHF :
Input : Sebuah table R, dan himpunan simple predicates Pr
Output : Himpunan fragmen R = {R1,R2,…,Rw} yang memenuhi aturan fragmentasi.
Syarat : Pr harus complete, dan Pr harus minimal.
3. Aturan pada himpunan simple predicates
a) complete
Sebuah himpunan simple predicates Pr dikatakan
complete jika dan hanya jika setiap dua tuple pada
fragmen yang sama mempunyai probabilitas yang sama untuk diakses oleh setiap transaksi.
Contoh :
Asumsikan bahwa relasi PROJ [PNO, PNAME, BUDGET, LOC] diakses oleh dua aplikasi :
a. Aplikasi 1 : temukan budget dari setiap project pada masing-masing lokasi
b. Aplikasi 2 : temukan project dengan budget < $200000
Jika berdasar aplikasi 1 maka didapat :
Pr={LOC=”Montreal”,LOC=”New York”, LOC= ”Paris”}
Tetapi tidak complete untuk aplikasi 2. Maka Pr dimodifikasi menjadi :
Pr={LOC=”Montreal”,LOC=”New York”, LOC= ”Paris”, BUDGET ≤ 200000, BUDGET > 200000}
Yang memenuhi sifat complete. b) Minimal
Sebuah simple predicates dikatakan minimal jika dan hanya jika terdapat paling sedikit ada satu transaksi yang mengakses akan menghasilkan akses pada fragmen-fragmen yang berbeda.
Sebagai contoh, jika terdapat dua buah fragmen yang berbeda fi dan fj maka paling sedikit terdapat sebuah aplikasi yang dapat mengakses dua fragmen yang berbeda tersebut.
Contoh :
Pr = {LOC=”Montreal”, LOC=”New York”, LOC=”Paris”, BUDGET ≤ 200000, BUDGET > 200000}
Namun, jika kita tambahkan simple predikat berikut ke Pr :
PNAME =”Instrumentation” maka Pr menjadi tidak minimal.
Contoh Primary Horizontal Fragmentation (PHF)
Sebagai gambaran untuk kemudahan dan kejelasan dalam tahap-tahap fragmentasi horizontal primer (PHF) akan diberikan contoh kasus. Bila terdapat tabel PAY dan PROJ sebagai berikut :
Fragmentasi dari relasi PAY : Relasi PAY adalah sebagai berikut :
Tabel 2.2. Tabel PAY
Aplikasi akan meminta : a. Melihat info gaji.
b. Daftar pegawai berada pada dua aplikasi yang berjalan di dua lokasi
Simple predicates :
p1 : SAL ≤ 30000 p2 : SAL > 30000
Minterm predicates : m1 : (SAL ≤ 30000)
m2 : NOT(SAL ≤ 30000) = (SAL > 30000)
hasil fragmentasi :
Tabel 2.3(a). Tabel PAY1 Tabel 2.3(b). Tabel PAY2
Fragmentasi dari relasi PROJ Aplikasi akan meminta :
a. Cari nama dan budget project yang berada pada tiga lokasi (1)
b. Akses informasi project untuk budget pada satu lokasi ≤ 200000 dan yang lain > 200000 (2)
Simple predicates
Untuk aplikasi (1)
p1 : LOC = “Montreal” p2 : LOC =”New York” p3 : LOC = “Paris” Untuk aplikasi (2)
p4 : BUDGET = 200000 p5 : BUDGET > 200000 Pr = Pr' = {p1,p2,p3,p4,p5}
m1 : (LOC = “Montreal”) ^ (BUDGET ≤ 200000) m2 : (LOC = “Montreal”) ^ (BUDGET > 200000) m3 : (LOC = “New York”) ^ (BUDGET ≤ 200000) m4 : (LOC = “New York”) ^ (BUDGET > 200000) m5 : (LOC = “Paris”) ^ (BUDGET ≤ 200000) m6 : (LOC = “Paris”) ^ (BUDGET > 200000) Hasil Fragmentasi
Tabel 2.4. Tabel Hasil Fragmentasi Horizontal Primer (PHF) PROJ1 PROJ2 PROJ3 PROJ4 Uji kebenaran PHF a. Completeness
Karena Pr' complete dan minimal, maka selection
b. Reconstruction
Jika relasi R dibuat menjadi fragmen FR = {R1,R2,…,Rr} maka R = ∪∀Ri∈FRRi adalah reconstruction.
c. Disjointness
Minterm predicates untuk setiap fragmen adalah mutually exclusive.
2.B Derived Horizontal Fragmentation (DHF)
Derived Horizontal Fragmentation dari tabel R
didefinisikan sebagai :
Dengan R adalah tabel member, Si = σ Fi(S),dimana Fi
merupakan formula yang berdasarkan pada Primary
Horizontal Fragmentation Si mana yang didefinisikan, serta w
adalah jumlah maksimun fragmentasi yang akan didefinisikan pada R.
Derived Horizontal Fragmentation didefinisikan pada link
relasi tabel member menurut pilihan operasi yang spesifik dari tabel owner [Otzu, 1999]. Ada dua poin yang perlu diingat. Pertama, link diantara relasi owner dan member terdefinisi sebagai equi-join. Poin yang kedua menjadi sangat penting ketika akan dilakukan partisi dari dari sebuah relasi member
juga jika diinginkan hasil fragmentasi yang didefinisikan hanya pada attribut relasi tabel member. Link yang dimaksud adalah primary key pada tabel owner kemudian juga menjadi
foreign key pada tabel member. Berikut adalah gambar relasi
tebel owner dan tabel member menurut :
Gambar 2.11 Ekspresi dari relasi tabel owner dan tabel member menggunakan link (Li)
Algoritma DHF :
Input : Tabel member R, fragmen PHF S ={S1,S2,…,Sw} dan atribut penghubung tabel
member R dan tabel owner S.
Output : Himpunan fragmen R ={R1,R2,…,Rw} yang memenuhi aturan fragmentasi.
Syarat : a. Pr harus complete
b. Pr harus minimal
Dari contoh fragmen horisontal primer, kita telah mendapatkan fragmen horisontal dari tabel EMP dan PROJ. Dan dari
gambar 2.11., kita memiliki tabel owner PAY dan tabel member EMP.
Contoh 1 Derived Horizontal Fragmentation
Aplikasi : Diasumsikan bahwa user ingin mengelompokkan data pegawai berdasar gaji yang diterima.
Simple predicates table PAY p1 : SAL ≤30000 p2 : SAL > 30000 PHF tabel PAY
PAY1 = σSAL ≤ 30000 (PAY) PAY2 = σSAL > 30000 (PAY) Derived Fragment table PAY
Hasilnya adalah :
Tabel 2.5. Tabel Hasil Derived Horizontal Fragmentation (DHF) EMP1
EMP2
Contoh 2 Derived Horizontal Fragmentation
Aplikasi :
a. Menemukan data pegawai yang bekerja di suatu lokasi. b. Menampilkan data pegawai yang mengakses proyek
pada lokasi dimana data pegawai di fragmen. PHF tabel PROJ
PROJ1 :σ(LOC=“Montreal”) ^ (BUDGET ≤ 200000) PROJ
PROJ3 :σ (LOC=“New York”) ^ (BUDGET ≤ 200000) PROJ
PROJ4 :σ (LOC=“New York“) ^ (BUDGET > 200000) PROJ
PROJ6 :σ (LOC =“Paris”) ^ (BUDGET > 200000) PROJ Derived Fragment table ASG berdasar PHF PROJ
Hasilnya adalah :
Tabel 2.6. Tabel Derived Fragment ASG berdasar PHF PROJ
ASG1
ASG2
ASG3
ASG4
Derived fragmen tabel ASG berdasar derived fragmen
Hasilnya adalah :
Tabel 2.7. Tabel derived fragmen ASG berdasar derived fragmen EMP
ASG1
ASG2
Uji kebenaran PHF a. Completeness
Karena Pr' complete dan minimal, maka selection
predicates adalah komplit.
b. Reconstruction
Jika relasi R dibuat menjadi fragmen FR = {R1 ,R2 ,…,Rr} maka R = ∪∀Ri∈FRRi adalah reconstruction.
c. Disjointness
Minterm predicates untuk setiap fragmen adalah mutually exclusive.
Aturan Pemilihan Derived Fragmentasi
Terkadang sebuah tabel memiliki lebih dari satu tabel
owner (seperti ASG memiliki table owner EMP dan PROJ),
sehingga akan mendapatkan dua derived fragment.
Jika terdapat lebih dari satu derived fragment maka dapat dipilih salah satu dengan menggunakan kriteria :
a. Fragmentasi akan menghasilkan sifat join yang lebih baik.
b. Fragmentasi digunakan pada lebih banyak aplikasi.
2. Alokasi
Alokasi dalam sistem terdistribusi dapat diartikan dengan peletakan tiap-tiap fragmen pada suatu lokasi dengan distribusi yang optimal (Ozsu, 1999). Ketika kita sudah memfragmen data, masih ada yang perlu dipertimbangkan, yaitu alokasi fragmen data tersebut. Dalam menentukan alokasi, Fragmen(F), lokasi data(S), dan aplikasi(Q) yang ingin ditentukan adalah distribusi paling optimal fragmen F pada lokasi S.
Ukuran optimal yang digunakan adalah : a. Biaya Paling Minimal
Yang dimaksud biaya disini adalah biaya penyimpanan fragmen pada lokasi, biaya kueri fragmen pada setiap lokasi,