Makalah Optimasi Query Terdistribusi

1           LANDASAN TEORI

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)

1.2         Definisi optimasi query

       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.
       Dimana optimasi query dapat berupa :
1.      Operasi urutan eksekusi(relational)
2.      Metode akses untuk relasi yang tepat
3.      Algoritma untuk menjalankan operasi (khususnya dalam join)
4.      Urutan per gerakan data antar site
       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.

 


2           PEMBAHASAN

2.1         Pengertian Optimasi Query

Optimasi Query adalah proses untuk menjamin minimalisasi total cost atau total response time suatu query. Dimana optimasi query dapat berupa :
1.      Operasi urutan eksekusi (relational).
2.      Metode akses untuk relasi yang tepat.
3.      Algoritma untuk menjalankan operasi (khususnya dalam join).
4.      Urutan per gerakan data antar site.
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 untuk terjadinya parallel-processing dan transaksi data sehingga akan menaikkan speed-up.

2.2         Type Dasar Optimasi

Secara umum  pada sebagian besar level, hal yang perlu diperhatikan dalam query adalah :
·         Respon time : merepresentasikan cost organisasi
·         Optimasi execution cost : membantu untuk meminimalkan penggunaan sumber data system dalam query, sehingga mereduksi cost.
Resource yang kritis dalam evaluasi query dalam database sentralisasi adalah : CPU, saluran I/O dan jalur telekomunikasi. Saluran I/O berfungsi untuk mengkontribusi cost loading data dari disk ke memory. Jika permintaan banyak, maka bisa menyebabkan “bottle neck” . sedang CPU cost sering diasumsikan sangat kecil dan diabaikan dalam system database. Untuk laju transmisi  jalur komunikasi lebih rendah dari kecepatan saluran I/O. Optimasi respon time membantu meminimalisasi respon time untuk query parallel (dengan adanya multiprosessor dalam network).

2.3         Variasi Cara Eksekusi Query

Secara umum optimasi query mengarah ke minimalisasi redundansi dan operasi yang tidak perlu, memilih cara fastest atau cheapest untuk membentuk operasi database, penjadwalan eksekusi yang baik dan menggunakan sub-metode standart dan shared.
Ada 2 komponen dasar dalam optimasi, yaitu :

1.      Query Transformation
Operator relational join dan project yang dapat dijalankan dengan cara berbeda.
2.      Query Mapping
Operator yang diimplementasikan menggunakan algoritma low-level yang bervariasi dan akses device, serta metode eksekusi operator relasional.
Dalam system terdistribusi, Transmisi pesan pada jalur komunikasi data diperlukan untuk mengontrol operasi evaluasi query. Sedangkan transmisi data diperlukan untuk mengirim hasil dan partial hasil antar site. Untuk membangun  optimasi query dapat menggunakan keduanya.
Berikut ini contoh pemilihan pengurutan operasi dalam system terdistribusi untuk 3 site.
Digunakan query join dan select pada 3 relasi dan 3 site yang berbeda. Misalkan site yang ada adalah : Site Hospital, Site Health Center dan Site Community Care. Relasi yang ada adalah :
·         Hospit (pat_name, DOB, Admit, Discharge, Dept) dengan jumlah kardinalitas sebesar 200.000
·         Patient (pat_name, DOB, GP) dengan jumlah cardinalitas sebesar 10.000
·         Survey (pat_name, DOB, Weight, Type_of_work) dengan cardinalitas sebesar 100.000
Lakukan query  : Cari nama pasien dan Gaji pokok semua pasien yang memiliki berat > 100 kg dan telah mendapat perawatan di departemen orthopedic sejak 1 Januari!
Asumsi :
1.      Semua link komunikasi mempunyai cost/tuple yang sama dan ukurannya dengan cardinality.
2.      Dianggap 1% pasien dalam hospit memenuhi kriteria telah dirawat di Departemen orthopedic sejak 1 Januari. Dan kondisi tereduksi 50% karena efek operasi lain.
3.      Dianggap pasien yang memiliki berat > 100 Kg sebanyak 1 %.
OPTION
Pindahkan relasi pasien ke site community_care, lakukan join dengan relasi survey. Hasilnya pindahkan ke site tempat query untuk dijoinkan dengan relasi lain yang dieksport dari hospital.
Gambar 31. Join Antar Site
Jika cost untuk transmisi sebuah tuple = t, cost comparing dan kemungkinan loncat 2 tuple = c, serta dianggap hasilnya adalah 1000 tuple pada seleksi survey (1% dari 100.000), maka cost yang diperhitungkan terdiri dari :
·         Join (pasien dan restricted survey) = 10.000 × 1.000 c
·         Join (Hasilnya dan restricted hospit) = 200 × 1.000 c
·         Transmisi = 200 t + 10.000 t + 1.000 t = 11.200 t
Sehingga total cost adalah =
10.000 * 1.000 c + 200 * 1.000 c + 11.200 t
Pada proses query terdistribusi, sebuah query dipecah menjadi sub-query yang sesuai dengan site tempat menyimpan data. Eksekusi query terdiri dari sederetan eksekusi local (mungkin parallel) dan eksekusi global yang mengatur pergerakan data antar site. Tidak semua eksekusi lokal kronologis terhadap eksekusi global.

2.4         OPTIMASI PADA PERINTAH SQL

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. Optimasi perintah SQL meliputi :
1.      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. 
CREATE INDEX no_tes_idx
ON pelamar (no_tes) ;
Ket:
no_tes_idx adalah nama indeks yang dibuat
pelamar adalah nama tabel
2.      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, bednya char menyediakan ukuran penyimpanan yang tetap (fixed-length), sedangkan varchar menyediakan ukuran penyimpanan sesuai dengan isi data (variable-length).
1.      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.
2.      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 pembacaan, misalnya dengan konsisten menuliskan keyword SQL dalam huruf kapital, dan tambahkan komentar bilamana diperlukan.
3.      Hindari SELECT *
     SELECT * digunakan untuk melakukan query semua field yang terdapat pada sebuah table, tetapi jika hanya ingin memproses field 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.
4.      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 pada sisi client dan tidak pada sisi server. Misalnya dengan menampung data terlebih dahulu pada komponen grid dan melakukan sortir pada grid tersebut sesuai kebutuhan pengguna.
5.      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.
6.      Gunakan WHERE dalam SELECT
     Menulis suatu kondisi yang pasti bernilai true, misalnya SELECT .... WHERE 1=1. Bahkan tools open source phpMyAdmin yang berfungsi untuk menangani database MySQL selalu menyertakan default klausa WHERE 1 pada perintah SELECT, di mana angka 1 pada MySQL berarti nilai true.
7.      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. Hal ini dikarenakan operator = diproses lebih cepat dibandingkan dengan operator <>.
8.      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.
9.      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
10.  Baca dari Kiri ke Kanan
     Query yang tulis akan diproses dari kiri ke kanan, misalkan terdapat query WHERE kondisi1 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.
11.  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.
12.  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. 
13.  Back-up
     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 back-up pada waktu di mana aktivitas relatif rendah agar tidak mengganggu kegiatan operasional.
14.  Banyak Jalan Menuju Roma
     Menuliskan ulang query dengan cara lain jika Anda melihat kemungkinan peningkatan kinerja, contohnya pada potongan query berikut:
WHERE SUBSTRING(nama,1,1) =’b’
Cara lain untuk menghasilkan record yang sama adalah sebagai berikut:
WHERE nama LIKE ‘b%’


3          PENUTUP

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





















Daftar Pustaka

Edhy Sutanta, A. A. (2012). Pemanfaatan Database Kependudukan Terdistribusi pada Ragam Aplikasi Sistem Informasi di Pemerintah Kabupaten/Kota. Jurnal Sistem Informasi, 10.
Ermatita. (2009). Analisis Optimasi Query pada Data Mining. Jurnal Sistem Informasi, Vol 1, No 1, edisi April 2009.
Hednrifadilah. (2008, Februari). Hednrifadilah. Dipetik Maret 23, 2015, dari Hednrifadilah: http://hednrifadillah.files.wordpress.com/2008/02/sistem-data-terdistribusi.doc
Poerbaningtyas, E. (2009). Manajemen Sistem Terdistribusi. Yogyakarta: Graha Ilmu.
Prabowo, I. H. (2010). Simulasi Optimasi Query Menggunakan Histogram untuk Meminimalisasi Nilai Sumber Daya pada Database Terdistribusi. Tugas Akhir, 13.


Share this

Related Posts

Previous
Next Post »