Oleh :
TH 2020/2019
Assalamualaikum wr. Wb
Puji syukur saya panjatkan kehadirat Allah SWT yang telah memberikan rahmat serta
karunia-Nya kepada saya sehingga saya berhasil menyelesaikan Makalah ini yang
alhamdulillah tepat pada waktunya.
Diharapkan Makalah ini dapat memberikan informasi kepada kita semua tentang
Optimasi Querry terdistribusi. Penulis menyadari bahwa makalah ini masih jauh dari
sempurna, oleh karena itu kritik dan saran dari semua pihak yang bersifat membangun selalu
saya harapkan demi perbaikan dari kesalahan-kesalahan dalam penulisan makalah ini.
Akhir kata, Saya sampaikan terima kasih kepada semua pihak yang telah berperan
serta dalam penyusunan makalah ini dari awal sampai akhir. Semoga Allah SWT senantiasa
meridhai segala usaha kita. Amin.
Wasalamualaikum wr.wb.
Penyusun,
DAFTAR ISI
Kata Pengantar
Daftar isi
BAB I PENDAHULUAN
BAB II PEMBAHASAN
A. Kesimpulan
DAFTAR PUSTAKA
BAB I
PENDAHULUAN
1.1 pengertian basis data
Data adalah representasi fakta dunia nyata yang mewakili suatu objek seperti manusia
(pegawai, siswa, pembeli, pelanggan), barang, hewan, peristiwa, konsep, keadaan, dan
sebagainya, yang diwujudkan dalam bentuk angka, huruf, simbol, teks, gambar, bunyi, atau
kombinasinya.
Basis data (database) adalah kumpulan dari berbagai data yang saling berhubungan
satu dengan yang lainnya. Basis data tersimpan di perangkat keras, serta dimanipulasi
dengan menggunakan perangkat lunak. Pendefinisian basis data meliputi spesifikasi dari
tipe data, struktur dan batasan dari data atau informasi yang akan disimpan. Database
merupakan salah satu komponen yang penting dalam sistem informasi, karena merupakan
basis dalam menyediakan informasi pada para pengguna atau user. Tujuan utama DBMS
adalah untuk menyediakan tinjauan abstrak dari data bagi user. Jadi sistem
menyembunyikan informasi mengenai bagaimana data disimpan dan dirawat, tetapi data
tetap dapat diambil dengan efisien. (Hednrifadilah, 2008)
Dari daftar diatas , ada 2 aspek esensial dari proses query dalam lingkungan terdistribusi,
yaitu :
1. Data dan pesan ditransmisikan melalui jalur komunikasi, hal ini akan berakibat pada
lambatnya proses.
2. Keberadaan banyak prosedur dalam jaringan, hal ini akan menimbulkan adanya oportunisi
utuk terjadinya paralle-processing dan transaksi data sehingga akan menaikkan speed-up.
BAB II
PEMBAHASAN
Dengan semakin berkembangnya teknologi, penggunaan sistem basis data dapat memiliki
peranan penting dalam menunjang kegiatan suatu instansi terutama instansi yang memiliki
jumlah data yang besar. Universitas sebagai salah satu contohnya, dapat dipastikan memiliki
sistem basis data yang menyimpan data-data penting yang berhubungan dengan universitas.
Sistem basis data yang digunakan dapat berupa basis data tersentralisasi atau basis data
terdistribusi. Sistem Basis data tersentralisasi adalah sistem basis data yang secara fisik
terletak dan dipelihara pada satu tempat atau situs. Sedangkan sistem basis data terdistribusi
adalah sistem basis data yang secara fisik tersebar ke dalam beberapa situs namun secara
logis terhubung menjadi satu kesatuan basis data dan digunakan bersama-sama dimana
terhubung dalam suatu jaringan komputer .
optimasi query adalah sebuah prosedur untuk meningkatkan strategi evaluasi dari suatu
query untuk membuat evaluasi tersebut menjadi lebih efektif . optimasi query dalam basis
data terdistribusi menggunakan metode Fragment and Replicate Strategy (FRS) oleh
Alom,B.M.M. Prinsip kerja metode ini adalah melokalkan fragmen yang ada dengan metode
replikasi sehingga biaya komunikasi bisa diminimumkan ketika melakukan eksekusi query.
Namun Fragment and Replicate Strategy (FRS) dalam implementasinya membutuhkan
storage yang besar. Penelitian sebelumnya yang lain, untuk optimasi query dalam basis data
terdistribusi menggunakan metode Semi Join Based Approach (SBA). Metode SBA adalah
metode berbasiskan biaya yang menerapkan projection dan selection secara tepat. Dalam
metode ini dilakukan pemetaan berbentuk tree terhadap kemungkinan model akses yang ada.
Dari beberapa kemungkinan yang ada akan dihitung dan model yang optimal adalah model
dengan biaya terendah. Metode ini menguntungkan apabila biaya (cost) untuk menghasilkan
dan mengirimkan ke situs lain kurang dari biaya pengiriman seluruh relasi operan dan
melakukan join yang sebenarnya. Pada penelitian ini akan menggunakan metode lain yaitu
Dynamic Approach. Metode Dynamic Approach akan mengoptimalkan eksekusi query
dengan menggunakan algoritma INGRES yang berfungsi untuk memecah query menjadi
beberapa bagian agar eksekusi query lebih cepat dan mengurangi pengaruh biaya komunikasi
untuk mentransfer data dengan melakukan pemilihan situs yang akan memproses atau
mengeksekusi query yang disebut sebagai situs pemrosesan.
Berdasarkan uraian dalam latar belakang maka rumusan masalah penelitian ini adalah
bagaimana mengimplementasikan optimasi query pada sistem basis data terdistribusi dengan
menggunakan metode Dynamic Approach dan bagaimana analisa hasil metode Dynamic
Approach ketika diimplementasikan dalam basis data terdistribusi.
Search Space
Cost Model
Model yang memprediksi biaya yang harus dikeluarkan dari suatu query yang akan
dieksekusi. Terdiri dari cost function, statistic database, dan formula. Merupakan
sekumpulan alternatif perencanaan eksekusi yang merepresentasikan query. Seluruh
alternatif adalah ekuivalen, yaitu memberikan hasil yang sama dengan urutan
pengoperasian, pengimplementasian, dan performance yang berbeda.
Search Strategi
Search strategy mengeksplorasi search space dan memilih strategi terbaik dari
alternatif yang ada menggunakan cost model.
Search Strategy yang dapat digunakan adalah dynamic programming yang bersifat
determenistik, di mana menghasilkan solusi terbaik, dan randomized strategies yang
berkonsentrasi pada pencarian solusi optimal dengan menghindari biaya tinggi dalam
optimasi.
Structured Query Language (SQL) adalah bahasa pemrograman yang memiliki tujuan khusus
untuk mengelola data dalam sistem manajemen basis data relasional (DBMS). Operasi yang
paling umum dari SQL adalah query. Query adalah perintah-perintah dengan kriteria khusus
yang bertujuan untuk mengambil data dari suatu basis data . Query secara konvensional
adalah query yang tidak menggunakan teknik khusus untuk mengambil data dari suatu basis
data .
Agar operasi query tidak lambat diperlukan metode yang dapat mengoptimalkan operasi join
query tersebut. Suatu metode optimasi query mencoba untuk menentukan cara yang paling
optimal untuk mengeksekusi query yang diberikan dengan mempertimbangkan rencana query
yang mungkin.
Terdapat beberapa metode optimasi query untuk basis data terdistribusi diantaranya Dynamic
Approach, static approach, semi join based approach dan hybrid approach. Optimasi query
pada penelitian ini akan menggunakan metode Dynamic Approach dimana metode ini
memanfaatkan pemecahan query menggunakan algoritma INGRES.
Algoritma INGRES
Algoritma INGRES merupakan salah satu metode untuk mengoptimasi query pada sistem
basis data tersentralisasi, namun dapat juga diaplikasikan pada sistem basis data terdistribusi.
Algoritma INGRES melakukan pemecahan query secara rekursif untuk mendapatkan ukuran
query yang lebih kecil yang nanti dieksekusi secara berurutan.
Query diurai menjadi query yang berurutan dan memiliki relasi unik. Apabila ketika
menguraikan dapat menghasilkan monorelasi query maka monorelasi query tersebut
dijadikan indeks awal untuk acuan pecahan query selanjutnya. Monorelasi query sendiri
adalah query yang bersifat operasi unary yang hasilnya didapat dari satu tabel. Apabila tidak
terdapat monorelasi query, maka pemecahan query dilakukan secara berurutan tanpa acuan.
Query hasil pemecahan yang bukan monorelasi disebut multirelasi query. Multirelasi query
adalah query yang bersifat operasi binary yang hasilnya didapat dari dua tabel yang berelasi.
Algoritma INGRES akan mengeksekusi monorelasi query (jika ada) dan mencoba untuk
meminimalkan ukuran dan mengurutkan multirelasi query berikutnya. Ringkasnya, sebuah
query n-relasi q dipecah menjadi subquery n yaitu q1→q2→…..→qn, dimana hasil query
terakhir (qn) merupakan hasil final. Algoritma INGRES dapat diperlihatkan dalam bentuk
SQL sebagai berikut :
Dimana Ai dan Ai’ adalah daftar atribut dari relasi Ri. Pi adalah atribut dari relasi R1, dan P2
adalah atribut dari R1.A1, R2.A2, …. , Rn.An . Query q tersebut akan dipecah menjadi dua
subquery q’ kemudian q’’, dengan pemecahan dari relasi R1.
Dimana R1’ merupakan relasi sementara yang isinya adalah informasi yang dibutuhkan untuk
query selanjutnya. Query q’ merupakan bentuk monorelasi query.
Algoritma Ingres menggunakan algoritma optimasi dinamis yang memecah query kalkulus
ke dalam bagian yang lebih kecil secara rekursif. Mengombinasikan dua tahapan
yaitu dekomposisi dan optimasi kalkulus-aljabar.
Dynamic Approach untuk optimasi query sistem basis data terdistribusi memiliki
tujuan untuk meminimalkan waktu komunikasi dan waktu respon. Metode Dynamic
Approach mengoptimalkan eksekusi query dengan menggunakan algoritma INGRES agar
eksekusi query lebih cepat dan mengurangi pengaruh biaya komunikasi untuk mentransfer
data dengan pemilihan situs pemrosesan.
Metode Dynamic Approach mengambil keuntungan dari fragmentasi, namun hanya
fragmentasi horizontal agar lebih ringkas. Hal ini dikarenakan metode ini membutuhkan
setiap atribut dari tiap row tabel hasil fragmentasi dimana fragmentasi horizontal tidak
membagi atribut-atribut tersebut.
Metode Dynamic Approach juga mengambil keuntungan terhadap topologi jaringan
yang digunakan pada sistem basis data terdistribusi karena unit data yang sama dapat
dipindah atau dikirimkan dari satu situs ke situs lain melalui satu transfer tunggal.
[Langkah 1] Jika terdapat query monorelasi yang dapat dilepas (detachable), query tersebut
[Langkah 2] Dilakukan teknik reduksi (algoritma INGRES) terhadap query asli sehingga
mengisolasi semua subquery yang tidak dapat direduksi (MRQ atau
multirelasi query)
[Langkah 3.1] Dilakukan pemilihan terhadap MRQ yang berdasarkan daftar MRQ dari
langkah. Hasil dinamakan MRQ'.
[Langkah 3.2] Memilih strategi terbaik untuk memproses MRQ'. Strateginya berupa
pemilihan F dan S dimana F adalah fragmen untuk memindahkan ke S atau
situs pemrosesan atau situs pemrosesan
[Langkah 3.3] Mengirimkan semua fragmen ke situs pemrosesan yang sudah ditentukan
sebelumnya
[Langkah 3.4] Setiap MRQ' tadi dieksekusi. Jika terdapat subquery, algoritma akan
mengulang ke langkah 3.1 dan kemudian melakukan iterasi selanjutnya
hingga tidak terdapat subquery lagi.
Optimasi terjadi pada langkah 3.2 yaitu pemilihan situs pemrosesan. Pemilihan situs
pemrosesan sangat penting karena besar data yang ditransfer dari situs lain dapat
mempengaruhi eksekusi query. Semakin besar data yang ditransfer maka semakin berkurang
kecepatan eksekusi query jadi situs pemrosesan sebaiknya memiliki data yang paling besar.
Dalam basis data terdistribusi, proses query berlangsung pada beberapa lapisan.
Lapisan-lapisan tersebut terdiri atas 3 lapisan di situs utama dan 1 lapisan di situs lokal.
Lapisan pertama disebut query decomposition adalah lapisan yang memecah query kalkulus
menjadi query aljabar pada relasi global. Lapisan kedua adalah data localization, dimana
input dari lapisan ini adalah query aljabar pada relasi global hasil pengubahan dari lapisan
pertama. Fungsi lapisan kedua ini adalah untuk melokalkan data hasil query menggunakan
skema fragmen. Lapisan ketiga adalah global queryoptimization dengan input dari layer ini
adalah query aljabar dalam fragmen. Lapisan ketiga bertujuan untuk menemukan strategi
eksekusi yang dapat meminimalkan cost function dari CPU cost dan communication cost.
Lapisan keempat adalah distributed query execution. Dikarenakan setiap situs lokal memiliki
lapisan ini, maka hasil dari lapisan-lapisan sebelumnya akan dieksekusi oleh setiap situs
lokal. Setiap subquery yang mengeksekusi pada satu situs, disebut local query, lalu
dioptimalkan menggunakan local schema dari situs dan dieksekusi
Gambar 1 Proses Query Pada Sistem Basis Data Terdistribusi (Valuriez, 2011)
Ingres query processor :
Algoritma Sistem R
Sistem R merupakan optimasi query statis yang didasarkan pada exhaustive search
dari ruang solusi yang ada. Input untuk optimizer dengan sistem R adalah pohon relasi
aljabar yang dihasilkan dari dekomposisi dari sebuah query SQL. Kemudian output
dari sistem merupakan rencana eksekusi yang mengimplementasikan pohon relasi
aljabar yang optimal. Optimizer menetapkan biaya (dalam hal waktu) dari masing-
masing pohon kandidat dan mempertahankan pohon dengan biaya yang terkecil.
Contoh :
SELECT EMP.ENAME
FROM EMP,ASG,PROJ
WHERE EMP.ENO=ASG.ENO
AND ASG.PNO=PROJ.PNO
AND PNAME=’’CAD/CAM’’
3. Join Ordering
Join ordering merupakan aspek yang penting dalam suatu optimasi query, terlebih
pada query terdistribusi. Join ordering menjadi lebih penting ketika query merupakan
query terdistribusi karena akan mempengaruhi communication time. Join ordering
dapat dilakukan secara langsung, maupun dengan mengombinasikan dengan
semijoins di mana akan meminimalisasi communication cost.
Site 1 Site 2
EMP1 EMP2
ASG PROJ
5. Algoritma R*
merupakan substansial ekstensi dari teknik yang dikembangkan untuk optimizer sistem R.
Algoritma ini menggunakan pendekatan kompilasi di mana suatu exhaustive search dari
Relation Size Site seluruh alternative strategi dilakukan untuk
memilih salah satu dengan biaya terendah.
EMP 8 1 Algoritma Sistem R* tidak mendukung
PAY 4 2 pengimplementasian baik dalam fragmentasi
PROJ 1 3 maupun replikasi. Input untuk algoritma ini
ASG 10 4 adalah query yang sudah dilokalisasi yang
direpresentasikan dalam pohon relasi
aljabar(query tree), lokasi relasi, dan statistiknya.
Contoh :
Query yang terdiri dari penggabungan dari relasi PROJ, eksternal relasi, dan ASG,
internal relasi pada PNO. Kita asumsikan bahwa PROJ dan ASG disimpan dalam site
yang berbeda dan terdapat index pada atribut PNO untuk relasi ASG. Strategi eksekusi
yang memungkinkan untuk query tersebut :
1. Mengirimkan keseluruhan PROJ ke site dari ASG
2. Mengirimkan keseluruhan ASG ke site dari PROJ
3. Mengambil tupel ASG yang dibutuhkan untuk masing-masing tupel PROJ
4. Memindah ASG dan PROJ ke site ketiga
Algoritma R* memprediksi total waktu dari masing-masing strategi dan memilih yang
paling sedikit.
6. Algoritma SDD-1
Algoritma SDD-1 berasal dari metode yang disebut sebagai algoritma ‘hill-climbing’,
yang memiliki keistimewaan sebagai algoritma pemrosesan query terdistribusi yang
pertama. Dalam algoritma ini, perbaikan dari solusi layak awal dihitung secara rekursif
sampai tidak ada lagi perbaikan biaya yang dapat dilakukan. Input untuk algoritma ini
termasuk query graph, lokasi relasi, dan statistik dari relasi.
Contoh :
Asumsikan bahwa TMSG = 0 dan TTR = 1.
PAY à site 4
PROJ à site 4
Total.cost(ES0) = 4+8+1=13
Alternatif Splitting :
Total.cost(ES’) = 4+8+1 = 13
1 = relation cardinality
Desain aplikasi saja tidak cukup untuk meningkatkan kerja harus didukung dengan
optimasi dari perintah SQL yang digunakan pada aplikasi tersebut. Dalam mendesain
database, seringkali lokasi fisik data tidak menjadi perhatian penting. Karena hanya desain
logik saja yang diperhatikan. Padahal untuk menampilkan hasil query dibutuhkan pencarian
yang melibatkan struktur fisik penyimpanan data. Inti dari optimasi query adalah
meminimalkan “jalur” pencarian untuk menemukan data yang disimpan dalam lokasi fisik.
1. Tips Optimasi Query MySQL
Index
Index adalah objek pada MySQL yang berisi data yang terurut dari nilai-nilai pada
satu atau lebih field dalam suatu table. Sama seperti daftar isi pada sebuah buku,
index terutama digunakan untuk mempercepat pencarian terhadap suatu set data
dengan kondisi tertentu yang melibatkan kombinasi field yang sudah didefinisikan
dalam suatu index.
Menentukan Tipe Data
Menentukan tipe data yang tepat memerlukan ketelitian dan analisa yang baik.
Sebagai contoh, kita perlu mengetahui kapan kita menggunakan tipe data char atau
varchar. Keduanya menampung karakter, bedanya char menyediakan ukuran
penyimpanan yang tetap (fixed-length), sedangkan varchar menyediakan ukuran
penyimpanan sesuai dengan isi data (variable-length).
Jangan Izinkan Allow Null
Jika memungkinkan, kurangi penggunaan field yang memperbolehkan nilai null.
Sebagai gantinya, dapat memberikan nilai default pada field tersebut. Nilai null
kadang rancu dalam intepretasi programer dan dapat mengakibatkan kesalahan
logika pemrograman. Selain itu, field null mengonsumsi byte tambahan sehingga
menambah beban pada query yang mengaksesnya.
Query yang Mudah Terbaca
Query panjang yang ditulis dalam 1 baris jelas akan menyulitkan modifi kasi dan
pemahaman, akan jauh lebih baik jika menuliskan query dalam format yang mudah
dicerna. Pemilihan huruf besar dan kecil juga dapat mempermudah pemba5aan,
misalnya dengan konsisten menuliskan keybord SQL dalam huruf kapital, dan
tambahkan komentar bilamana diperlukan.
Hindari Select*
SELECT* digunakan untuk melakukan query semua field yang terdapat pada sebuah
table, tetapi jika hanya ingin memproses feld tertentu, maka sebaiknya Anda
menuliskan field yang ingin diakses saja, sehingga query Anda menjadi SELECT
field1, field2, field3 dan seterusnya (jangan pedulikan kode program yang menjadi
lebih panjang!). Hal ini akan mengurangi beban lalu lintas jaringan, terutama jika
table tersebut memiliki banyak field dan berukuran besar.
Batasi Order By
Penggunaan ORDER BY yang berfungsi untuk mengurutkan data, ternyata memiliki
konsekuensi menambah beban query, karena akan menambah satu proses lagi, yaitu
proses sort. Karena itu gunakan ORDER BY hanya jika benar-benar dibutuhkan oleh
aplikasi Anda. Atau jika dimungkinkan, Anda dapat melakukan pengurutan ada sisi
5lient dan tidak -ada sisi serer. Misalnya dengan menam-ung data terlebih dahulu
pada komponen grid dan melakukan sortir pada grid tersebut sesuai kebutuhan
pengguna.
Subquery Atau JOIN
Adakalanya sebuah instruksi dapat dituliskan dalam bentuk subquery atau perintah
JOIN, disarankan untuk memprioritaskan penggunaan JOIN karena dalam kasus
yang umum akan menghasilkan performa yang lebih cepat.
Gunakan WHERE dalam SELECT
Menulis suatu kondisi yang pasti bernilai true, misalnya SELECT .... WHERE 1=1.
Bahkan tools open source php MyAdmin yang berfungsi untuk menangani database
MySQL selalu menyertakan default klausa WHERE 1 pada perintah SELECT, di
mana angka 1p-ada MySQL berarti nilai true.
Kecepatan Akses Operator
WHERE 1=1 dan WHERE 0 <> 1 sama-sama merupakan kondisi yang
menghasilkan nilai true. Tetapi, dalam hal ini lebih baik Anda menggunakan
WHERE 1=1 daripada WHERE 0<>1.HIal ini dikarenakan operator = diproses lebih
cepat dibandingkan dengan operator <>.
Membatasi Jumlah Record
Membatasi jumlah record yang berpotensi mengembalikan record dalam jumlah
besar (kecuali memang benar-benar dibutuhkan), pada SQL Server, Anda dapat
menggunakan operator TOP di dalam perintah SELECT. Contohnya SELECT TOP
100 nama... akan menampilkan 100 record teratas field nama. Jika menggunakan
MySQL, Anda dapat menggunakan LIMIT untuk keperluan yang sama.
Batasi Penggunaan Function
Gunakan fungsi-fungsi yang disediakan SQL seperlunya saja. Sebagai contoh, jika
Anda menemukan Query sebagai berikut: SELECT nama FROM tbl_teman WHERE
ucase(nama) = ‘ABC’, nampak query tersebut ingin mencari record yang memiliki
data berisi “abc”, fungsi ucase digunakan untuk mengubah isi field nama menjadi
huruf besar dan dibandingkan dengan konstanta “ABC” untuk meyakinkan bahwa
semua data “abc” akan tampil, walaupun dituliskan dengan huruf kecil, besar,
ataupun kombinasinya.
Baca dari Kiri ke Kanan
Query yang tulis akan diproses dari kiri ke kanan, misalkan terdapat query WHERE
kondisi$ AND kondisi2 AND kondisi3, maka kondisi1 akan terlebih dahulu
dievaluasi, lalu kemudian kondisi2, kondisi3, dan seterusnya. Tentunya dengan
asumsi tidak ada kondisi yang diprioritaskan/dikelompokkan dengan menggunakan
tanda kurung.
Gambar dalam Database
Database memang tidak hanya diperuntukkan sebagai penyimpanan teks saja, tetapi
dapat juga berupa gambar. Akan lebih baik bagi kinerja database jika Anda hanya
menyimpan link ataulokasi gambar di dalam database, dibandingkan menyimpan
fisik gambar tersebut.
Pengukuran Kinerja
Jika menemukan sebuah query tampak tidak optimal, berusahalah menulis ulang
query tersebut dengan teknik dan metode yang lebih baik. Semakin banyak query
yang dapat dioptimasi, akan semakin baik kinerja aplikasi Anda. Terutama saat
frekuensi pemakaian query tersebut relatif tinggi.
Backup
Buatlah back-up otomatis secara periodik, sebaiknya tes dan simulasikan prosedur
restore database dan perhitungkan waktu yang diperlukan untuk membuat sistem
pulih kembali jika terjadi sesuatu yang tidak diharapkan pada database. Lakukan
proses backup pada waktu dimana aktivitas relatif rendah agar tidak mengganggu
kegiatan operasional.
Dalam tujuannya optimasi query digunakan untuk meminimumkan waktu proses, I/O,
pengguna memory dan meminimumkan total waktu pada proses query.
Menurut Chanowich (2001) ada 2 cara pendekatan optimasi yang digunakan untuk saat ini
yaitu Heuristik atau Rule-Based dan Cost-Based.
Optimasi untuk jenis ini mentransformasikan query yang akan meningkatkan kierja
eksekusi yaitu :
2. Cost-Based
Optimasi untuk jenis ini dipergunakan dari beberapa alternatif untuk dipilih mejadi salah satu
cost yang terendah. selain itu teknik ini juga mengoptimalkan urutan join terbalik pada
relasi-relasi R1 sampai Rn. Pada teknik ini juga dipergunakan untuk mendapatkan pohon left-
deep join agar menghasilkan relasi pada node sebelah kanan.
Eksekusi query dimulai dengan menggabungkan data dari semua situs untuk tabel yang
dibutuhkan query nantinya. Selanjutnya akan dilakukan eksekusi query tanpa optimasi
berdasarkan data hasil gabungan dari situs-situs yang ada. Semua perlakuan dilakukan di
situs laporan.
Query 1 (konvensional)
Hasil= πkhs.nim,
mahasiswa.nama,
ρipk(Gsum(m_nilai.na*mata_kuliah.sks)/ sum(mata_kuliah.sks))
(σkhs.nim=mahasiswa.nim,
khs.id_mata_kuliah= mata_kuliah.id_mata_kuliah,
khs.id_nilai=m_nilai.id_nilai,
ipk = 4
(khs mahasiswa mata_kuliah m_nilai))
Query 2 (konvensional)
Hasil = πmahasiswa.nim,
mahasiswa.nama,
ρjenjang/content(m_jenjang),
ρfakultas /content(m_fakultas),
ρjurusan/content(m_jurusan),
ρprogram_studi/content(m_prog_studi)
(σm_jenjang.id_jenjang= m_prog_studi,
m_jenjang.id_jenjang= mahasiswa.id_jenjang,
m_fakultas.id_fakultas= m_jurusan.id_fakultas,
m_fakultas.id_fakultas= m_prog_studi.id_fakultas,
m_fakultas.id_fakultas= mahasiswa.id_fakultas,
m_prog_studi.id_prog_studi= mahasiswa.id_prog_studi,
m_prog_studi.id_jenjang= mahasiswa.id_jenjang,
m_prog_studi.id_fakultas= mahasiswa.id_fakultas,
m_prog_studi.id_jurusan= mahasiswa.id_jurusan,
m_jurusan.id_jurusan= mahasiswa.id_jurusan,
mahasiswa.angkatan = ‘2009‘
(mahasiswa m_jenjang m_fakultas m_jurusan m_prog_studi))
Query 3 (konvensional)
Hasil= πmahasiswa.nim,
mahasiswa.nama,
mahasiswa.angkatan,
ρnama_mata_kuliah/nama(mata_kuliah),
ρnilai/id_nilai(khs)
(σmata_kuliah.id_mata_kuliah = khs.id_mata_kuliah,
mata_kuliah.nim = mahasiswa.nim,
mata_kuliah.nama = ‘Skripsi’
mahasiswa.id_fakultas = mata_kuliah.id_fakultas,
mahasiswa.id_jurusan = mata_kuliah.id_jurusan,
mahasiswa.id_jenjang = mata_kuliah.id_jenjang,
mahasiswa.id_prog_studi = mata_kuliah.id_ id_prog_studi,
mahasiswa.id_fakultas = m_prog_studi.id_fakultas,
mahasiswa.id_jurusan = m_prog_studi.id_jurusan,
mahasiswa.id_jenjang = m_prog_studi.id_jenjang
mahasiswa.id_prog_studi = m_prog_studi.id_ id_prog_studi,
m_prog_studi.id_fakultas = mata_kuliah.id_fakultas,
m_prog_studi.id_jurusan = mata_kuliah.id_jurusan,
m_prog_studi.id_jenjang = mata_kuliah.id_jenjang,
m_prog_studi.id_prog_studi = mata_kuliah.id_ id_prog_studi,
(mata_kuliah khs mahasism_prog_studi))
Uji Coba Eksekusi Query Menggunakan Metode Dynamic Approach
Secara keseluruhan, implementasi Metode Dynamic Approach akan dilakukan dalam 2 tahap:
Tahap Pertama
Tahap pertama adalah implementasi algoritma INGRES terhadap tiap reporting query yang
sudah disebutkan sebelumnya. Hasil algoritma INGRES berupa bagian-bagian dari query
yang terdiri atas monorelasi query dan multirelasi query. Untuk setiap monorelasi query yang
ada akan dieksekusi pada situs lokal. Sedangkan tiap multirelasi akan dipindah ke situs
pemrosesan yang sudah ditentukan untuk diproses dan dieksekusi. Apabila tidak terdapat
pecahan query dalam bentuk monorelasi, maka implementasi akan dilakukan secara
sequential tanpa acuan awal
Query 1 (Optimasi)
temp11 = πkhs.nim,
khs.id_mata_kuliah,
m_nilai.na
(σkhs.id_nilai=m_nilai.id_nilai
(khs m_nilai))
temp12 = πtemp11.nim,
ρipk(Gsum(temp11.na*mata_kuliah.sks)/s um(mata_kuliah.sks))
(σtemp11.id_mata_kuliah = mata_kuliah.id_mata_kuliah,
ipk = 4
(temp11 mata_kuliah))
Hasil = πmahasiswa.nim,
mahasiswa.nama,
temp12.ipk
(σmahasiswa.nim=temp12.nim
(mahasiswa temp12))
Query 2 (Optimasi)
mono2 = πmahasiswa.nim,
.mahasiswa.nama,
mahasiswa.id_jenjang,
mahasiswa.id_fakultas,
mahasiswa.id_jurusan,
mahasiswa.id_prog_studi,
(σmahasiswa.angkatan = ‘2009’
(mahasiswa))
temp21 = πmono2.nim,
mono2.nama,
mono2.id_jenjang,
mono2.id_fakultas,
mono2.id_jurusan,
ρprogram_studi/content(m_prog_studi)
(σmono2.id_jenjang = m_prog_studi.id_jenjang,
mono2.id_fakultas = m_prog_studi.id_fakultas,
mono2.id_jurusan = m_prog_studi.id_jurusan,
mono2.id_prog_studi = m_prog_studi.id_prog_studi,
(mono2 m_prog_studi))
temp22 = πtemp21.nim,
temp21.nama,
temp21.program_studi,
temp21.id_fakultas,
temp21.id_jurusan,
ρjenjang/content(m_jenjang)
(σtemp21.id_jenjang =m_jenjang.id_jenjang
(temp21 m_jenjang))
temp23 = πtemp22.nim,
temp22.nama,
temp22.program_studi,
temp22.jenjang,
temp22.id_fakultas,
ρjurusan/content(m_jurusan)
(σtemp22.id_jurusan =m_jurusan.id_jurusan
(temp22 m_jurusan))
Hasil = πtemp23.nim,
temp23.nama,
temp23.jenjang,
ρfakultas/content(m_fakultas)
temp23.jurusan,
temp23.program_studi,
(σtemp23.id_fakultas =m_fakultas.id_fakultas
(temp23 m_fakultas))
Query 3 (Optimasi)
mono3 = πmata_kuliah.id_mata_kuliah,
ρnama_mata_kuliah/nama(mata_kuliah),
mata_kuliah,id_fakultas,
mata_kuliah,id_jenjang,
mata_kuliah,id_jurusan,
mata_kuliah,id_prog_studi
(σmata_kuliah.id_mata_kuliah = ‘Skripsi’
(mata_kuliah))
temp31 = πmono3.nama_mata_kuliah,
mono3.id_mata_kuliah,
mono3.id_fakultas,
mono3.id_jenjang,
mono3.id_jurusan,
mono3.id_prog_studi,
khs.nim,
ρnilai/id_nilai(khs)
(σmono3.id_mata_kuliah = khs.id_mata_kuliah
(mono3 khs))
temp32 = π temp31.nama_mata_kuliah,
temp31.id_mata_kuliah,
m_prog_studi,id_fakultas,
m_prog_studi,id_jenjang,
m_prog_studi,id_jurusan,
m_prog_studi,id_prog_studi,
khs.nim,
temp31.nilai
(σtemp31.id_fakultas = m_prog_studi.id_fakultas,
temp31.id_jurusan = m_prog_studi.id_jurusan,
temp31.id_jenjang = m_prog_studi.id_jenjang,
temp31.id_prog_studi = m_prog_studi.id_ id_prog_studi,
(temp31 m_prog_studi))
Hasil = πtmahasiswa.nim,
mahasiswa.nama,
mahasiswa.angkatan,
temp32.nama_mata_kuliah,
temp32.nilai
(σtemp31.nim = mahasiswa.nim
(temp32 mahasiswa))
Tahap Kedua
Tahap kedua adalah mengeksekusi semua multirelasi query di situs pemrosesan yang sudah
ditentukan. Untuk penelitian ini, terdapat 6 situs yang akan dicoba sebagai situs pemrosesan.
Percobaan ini dilakukan karena ukuran tiap situs berbeda (berdasarkan total jumlah data)
sehingga dapat menghasilkan hasil yang berbeda tiap situs apabila situs tersebut adalah situs
pemrosesan.
Berikut merupakan perlakuan setiap situs apabila ditentukan sebagai situs pemrosesan :
a. Situs 1
Situs 1 akan mengeksekusi semua query dengan mentransfer data dari situs 2,
situs 3, situs 4 dan situs 5.
b. Situs 2
Situs 2 akan mengeksekusi semua query dengan mentransfer data dari situs 1,
situs 3, situs 4 dan situs 5.
c. Situs 3
Situs 3 akan mengeksekusi semua query dengan mentransfer data dari situs 1,
situs 2, situs 4 dan situs 5
d. Situs 4
Situs 4 akan mengeksekusi semua query dengan mentransfer data dari situs 1,
situs 2, situs 3 dan situs 5.
e. Situs 5
Situs 5 akan mengeksekusi semua query dengan mentransfer data dari situs 1,
situs 2, situs 3 dan situs 4.
f. Situs Laporan
Situs Laporan akan mengeksekusi semua query dengan mentransfer data dari
situs1, situs 2, situs 3, situs 4 dan situs 5.
Kedua metode akan diimplementasikan pada DBMS MSSQL Server 2008 dan divandingkan
hasilnya. Dari 10 kali percobaan untuk masing-masing query diambil hasil rata-ratanya. Hasil
perbandingan rata-rata total execution time tiap query ditunjukkan pada grafik 1, 2 dan 3.
Optimasi query merupakan suatu proses untuk menganalisa query untuk menentukan sumber-
sumber apa saja yang digunakan oleh query tersebut dan apakah penggunaan dari sumber
tersebut dapat dikurangi tanpa merubah output. Atau bisa juga dikatakan bahwa optimasi
query adalah sebuah prosedur untuk meningkatkan strategi evaluasi dari suatu query untuk
membuat evaluasi tersebut menjadi lebih efektif.
optimasi query adalah sebuah prosedur untuk meningkatkan strategi evaluasi dari suatu query
untuk membuat evaluasi tersebut menjadi lebih efektif . optimasi query dalam basis data
terdistribusi menggunakan metode Fragment and Replicate Strategy (FRS) oleh
Alom,B.M.M. Prinsip kerja metode ini adalah melokalkan fragmen yang ada dengan metode
replikasi sehingga biaya komunikasi bisa diminimumkan ketika melakukan eksekusi query.
BAB IV
DAFTAR PUSTAKA
https://id.scribd.com/doc/223182223/Makalah-Optimasi-Query-Terdistribusi
http://azima-n.blogspot.com/2016/03/makalah-optimasi-query-terdistribusi.html