Condition Joins Analisis Query Pencarian Data Menggunakan Algortima Hash Join Dan Nested Join

mencari gaji pegawai yang lebih dari 10000. Predikat dapat dihasilkan dari operasi logika AND, OR dan NOT.

b. Projection

Operasi projection bekerja pada relasi tunggal R dan mendefinisikan relasi yang berisi bagian secara vertikal dari R, mengambil nilai dari atribut yang ditentukan dan menghilangkan duplikasi.

c. Join

Operasi join sama halnya dengan operasi cross-product yang melakukan pencarian data yang sama pada kolom yang berkaitan antara 2 tabel dalam query. Dalam memenuhi kondisi query tertentu, penggunaan operasi join lebih baik daripada operasi cross-product dalam efisiensi waktu dan pencarian yang dilakukan. Operasi join akan mengkombinasikan dua relasi ke bentuk relasi yang baru, yang merupakan operasi dasar dalam relational algebra. Menurut Ramakrishnan dan Gehrke 2005, p107, ada beberapa bentuk dari join, yaitu :

1. Condition Joins

Penggunaan join yang paling umum adalah bentuk condition join, yang melakukan kondisi seleksi pada cross-product antara 2 relasi R dan S. a. Equijoin Operasi equijoin sama halnya ketika melakukan query dengan penggabungan relasi dengan mencari nilai data yang sama pada kolom yang berkaitan antara kedua relasi tersebut. Diilustrasikan dengan query : R.name1 = S.name2, dimana R dan S masing-masing adalah tabel untuk mencari nilai data yang sama pada kolom name1 pada tabel R dan kolom name2 pada tabel S. b. Natural Join Operasi natural join adalah operasi equijoin yang memiliki kesamaan dalam semua field yang memiliki nama yang sama dalam tabel R dan tabel S. Dalam hal ini, kita dapat menghilangkan kondisi dalam operasi join karena akan menghasilkan dua field dengan nama yang sama. Dalam RDBMS, perintah SQL akan dianalisis oleh Optimizer, yang akan menentukan langkah-langkah yang paling optimal dalam menjalankan perintah SQL. Berikut ini ada beberapa cara JOIN yang ada pada basis data yaitu :

a. Nested Loop

Universita Sumatera Utara Nested Loop adalah sebuah JOIN yang efektif jika subset yang digabungkan berjumlah sedikit dan jika kondisi dalam perintah JOIN efisien untuk menggabungkan 2 tabel tersebut.Cara kerja Nested Loop adalah : 1. Optimizer menentukan sebuah tabel untuk dijadikan Outer 2. Tabel yang tersisa dijadikan Inner Table. 3. Pada setiap baris yang terdapat pada Outer Table, Optimizer akan mengakses semua baris yang terdapat pada Inner Table dengan kondisi yang di spesifikasikan di dalam JOIN.

b. Hash Joins

Hash Joins biasanya digunakan untuk mengabungkan data-data yang berjumlah besar. Cara kerja Hash Joins adalah Optimizer membuat sebuah Hash Table berdasarkan predikat JOIN. Setiap tabel di Inner maupun Outer masing-masing dijadikan sebuah kode dengan Hash Function kemudian setiap kode Hash dari Inner akan dibandingkan dengan Hash Kode dari Outer. Apabila kode hash dari Inner dan Outer sama maka akan dilakukan proses pengecekan nilai dari kolom yang pada akhirnya akan dimasukkan ke dalam hasil jika nilai kolomnya sama.

c. Sort Merge Joins

Sort Merge Joins biasa digunakan untuk menggabungkan baris dari dua sumber yang tidak mempunyai hubungan. Biasanya Hash Joins mempunyai performa yang lebih baik dari pada Sort Merge Joins. Namun Sort Merge Joins akan bekerja lebih baik daripada Hash Join apabila terdapat kondisi sebagai Baris-baris sudah diurutkan.

d. Cartesian Joins

Sebuah Cartesian Joins digunakan ketika satu atau lebih tabel tidak mempunyai kondisi penggabungan terhadap tabel lainnya. Optimizer akan menggabungkan setiap baris di tabel pertama dengan setiap baris di tabel lainya untuk menghasilkan sebuah Cartesian Produk dari dua set tersebut.

e. Outer Joins

Outer Joins mempunyai proses dimana selain baris yang memenuhi kondisi JOIN yang dimasukkan ke dalam hasil. Outer Joins akan menambahkan baris yang tidak memenuhi kondisi JOIN namun digabung dengan nilai NULL. Terdapat 3 Jenis Outer Join yaitu : a. Sort Merge Join sangat berguna apabila kondisi JOIN diantara dua tabel bukan berbentuk kondisi sama namun mempunyai bentuk. Universita Sumatera Utara b. Jika penggunaan Nested Loop Join tidaklah optimal karena jumlah data yang besar dan tidak adanya kondisi JOIN yang cukup efisien. c. Jika Optimizer menemukan bahwa penggunaan Sort Merge akan meningkatkan performa daripada Hash Join karena Berikut ini adalah cara-cara bagaimana Optimizer menganalisis perintah JOIN yang akan dijalankan dalam query : Untuk mengeksekusi sebuah perintah JOIN maka Optimizer harus mengidentifikan beberapa hal, yaitu : 1. Cara akses perintah JOIN Untuk perintah-perintah yang sederhana, Optimizer harus menentukan cara mengakses yang paling optimal untuk mendapatkan data dari setiap tabel yang di- JOIN. 2. Metode JOIN Setiap ada perintah JOIN maka Optimizer akan menentukan metode JOIN mana yang paling tepat untuk digunakan, baik itu Nested Loop, Sort Merge, Cartesian atau Hash Joins.

2.4.2. Konsep Query

Query adalah semacam kemampuan untuk menampilkan suatu data dari database dimana mengambil dari table-tabel yang ada di database, namun tabel tersebut tidak semua ditampilkan sesuai dengan yang kita inginkan. data apa yang ingin kita tampilkan. misal : data peminjam dengan buku yang dipinjam, maka nanti akan mengambil data dari table peminjam dan tabel buku. Bahasa query query language adalah bahasa khusus yang digunakan untuk melakukan query pada basis data. Contoh penggunaan bahasa query adalah: SELECT ALL WHERE kota=”Yogyakarta” AND umur40. Query tersebut meminta semua record dari basis data yang sedang digunakan misalkan basisdata konsumen yang bertempat tinggal di Yogyakarta dan berumur lebih dari 40 tahun kota dan umur adalah nama field yang telah didefinisikan. Standar bahasa query yang banyak digunakan adalah SQL structured query language. Metode ini paling rumit tetapi paling fleksibel dibandingkan metode query yang lain, query dengan parameter yang telah tersedia dan query by example. Query dibedakan menjadi 2, yaitu Universita Sumatera Utara 1. Untuk membuatmendefinisikan obyek-obyek database seperti membuat tabel, relasi dan sebagainya. Biasanya disebut dengan Data Definition Language DDL 2. Untuk memanipulasi data, yang biasanya dikenal dengan Data Manipulation Language DML. Manipulasi data bisa berupa: a. Menambah, mengubah atau menghapus data. b. Pengambilan informasi yang diperlukan dari database, yang mana datanya diambil dari tabel maupun dari query sebelumnya

2.5. Optimasi Query

Optimasi Query adalah 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 mencakup beberapa teknik seperti transformasi query ke dalam bentuk logika yang sama, memilih jalan akses yang optimal dan mengoptimumkan penyimpanan data. Tujuan dari optimasi query adalah menemukan jalan akses yang termurah untuk meminimumkan total waktu pada saat proses sebuah query. Untuk mencapai tujuan tersebut, maka diperlukan optimizer untuk melakukan analisa query dan untuk melakukan pencarian jalan akses.

2.6. Algoritma Hash Join

Hash join digunakan ketika men-join tabel-tabel yang berukuran besar atau dengan set data yang besar. Hash join memerlukan Equijoin predikat predikat membandingkan nilai dari satu tabel dengan nilai-nilai dari tabel lain menggunakan operator yang sama ‘=’. Optimizer menggunakan hash join untuk join dengan dua tabel jikajoin menggunakan Equijoin dan jika salah satu dari kondisi berikut benar: a. Sejumlah data besar yang harus join. b. Sebuah fraksi besar tabel harus join. Universita Sumatera Utara Optimizer menggunakan lebih kecil dari dua tabel atau sumber data untuk membangun sebuah tabel hash dalam memori. Kemudian scan tabel yang lebih besar, menyelidiki tabel hash untuk menemukan baris join. Metode ini paling baik digunakan ketika tabel kecil cocok di memori yang tersedia. Biaya kemudian dibatasi untuk melewati single read untuk dua tabel. Hash join akan digunakan, jika tidak ada indeks yang memadai pada kolom join. Ini adalah situasi terburuk. Query optimizer membuat hash join dalam dua tahap, yaitu : a. M embangun build tabel hash di memori, yang lebih kecil dari dua tabel. b. Probe ini tabel hash dengan nilai hash untuk setiap tabel baris kedua. Algoritma Hash Join : Fase Build For each R1 begin generate hash value of R1 join key insert into build table to appropriate hash bucket end Fase Probe for each R2 begin generate hash value of R2 join key for each R1 in corresponding hash bucket if match R1 and R2 output R1,R2 end Jadi hash join memiliki dua input, yaitu masukan membangun dan masukan probe. Contoh query hash join : select e.last_name, d.department_name, d.location_id from employees e, departments d, locations l where e.department_id = d.department_id;

2.7. Algoritma Nested Join

Nested query atau query bersarang adalah query yang memiliki query lain di dalamnya. Sub Query merupakan pernyataan Select yang merupakan bagian dari pernyataan Insert,Select. Nested query digunakan untuk menangani masalah dalam query yang kompleks bahkan kita tidak tahu nilai berapa yang akan diSelect atau di Insert. Beberapa kegunaan dari Nested Query adalah: Universita Sumatera Utara 1. Subquery digunakan untuk menyelesaikan persoalan dimana suatu nilai yang tidak diketahui. 2. Meng-copy data dari satu tabel ke tabel lain. 3. Menerima data dari Inline View. 4. Mengambil data dari tabel lain untuk kemudian diupdate ke tabel yang dituju . 5. Menghapus baris dari satu tabel berdasarkan baris dari tabel lain. Bentuk Umum dari Nested Query adalah: select from employees el where e.department_id in Select d.department_id from department_name d

2.8. Riset Terkait

Dalam melakukan penelitian, penulis menggunakan beberapa riset terkait yang dijadikan acuan yang membuat penelitian berjalan lancer. Adapun riset-riset terkait tersebut adalah : Tabel 2.1 Riset terkait No Judul Riset Nama Peneliti Dan Tahun AlgoritmaMetode Yang Digunakan Hasil Penelitian 1 Perbandingan Cross-Product Dan Subset Query Pada Multiple Relasi Dengan Metode Cost-Based Metta SantiPutri,Mira Chandra Kirana,Anni,2010 Subset Query,Cross Product dengan menggunakan Metode Cost Based Subset query pada bentuk scalar dan kombinasi 1 merupakan model yang lebih baik dalam pencarian data jika dibandingkan dengan cross product, baik dalam 2 relasi maupun 3 relasi. Jika menggunakan model cross product dalam pencarian data, maka pada bagian kolom yang dikondisi harus diindekskan 2 Pengoptimasian Pencarian Data Dengan Algoritma Subset Query Tri Wahyu, 2008 Algoritma Subset Query Dengan menggunakan Interbase 6, untuk data hasil query lebih dari kurang dari atau sama dengan 5165 record, penggunaan query dengan cross product membutuhkan waktu Universita Sumatera Utara yang lebih kecil dibanding dengan metode subset query. Sebaliknya untuk data lebih besar dari 5165 record, penggunaan subset query jauh lebih cepat disbanding dengan menggunakan cross product 3 Meningkatkan Kecepatan Akses Data dengan Teknologi Optimasi Query Rushmore Arief Jananto,2006 Query Rushmore Salah satu keuntungan optimisasi query Rushmore adalah bahwa mesin jet Query sekarang dapat menggunakan index lebih dari satu tiap tabel untuk menyelesaikan suatu query. Didalam Jet 1.X, hanya satu index pada satu waktu yang bisa digunakan untuk menyelesaikan suatu query. Kemampuan index dari tabel besar dapat menghasilkan kinerja besar ketika Rushmore Optimisasi Query digunakan 4 Optimasi Query Database Menggunakan Algoritma Genetik Manahan Siallagan, Mira Kania Sabariah, Malanita Sontya, 2008 Algoritma Genetik Database ini antara lain : 1. Metode terbaik untuk permasalahan optimasi query database pada percobaan yang dilakukan adalah metode M2S crossover. 2. Berdasarkan percobaan yang dilakukan, dapat dilihat bahwa dengan algoritma Universita Sumatera Utara genetik, jika jumlah Pm diperkecil maka hasil optimum dapat dicapai. 3. Jumlah relasi kecil, harga pencarian tidakn berubah- ubah. 4. Dari hasil beberapa kali percobaan, bahwa semakin banyak jumlah yang digunakan maka waktu proses yang diperlukan algoritma genetic untuk menyelesaikan optimasi query akan semakin lama. 2.8 Perbedaan Dengan Riset Yang lain Dalam penelitian ini yang memedakan antara peneliti sebelumnya adalah perbedaan algoritma, tahapan pengujian, Bahasa Pemrograman yang digunakan, Database Manajemen Sistem dan masukkan dari peneliti-peneliti sebelumnya yang mereka tuangkan dikesimpulan untuk melakukan penelitian selanjutnya.

2.9 Kontribusi Riset

Ada pun kontribusi penulis dalam melakukan penelitian ini adalah: Menganalisis perbandingan running time atau kecepatan waktu untuk melakukan pencarian data dengan menggunakan Query Hash Join dan Query Nested Query dari suatu aplikasi berbasis Client dan Server. Universita Sumatera Utara

BAB 3 METODOLOGI PENELITIAN

3.1. Deskripsi Basis Data

Sumber data untuk menjadi studi kasus dalam penelitian ini adalah master basis data Anggaran mempunyai 6 tabel yang saling berhubungan. Semua tabel tidak memiliki indeks atau cluster yang digunakan dalam pencarian data.

3.1.1. Struktur Fisik Database

Pengujian query-query pencarian data menggunakan beberapa tabel yang saling berhubungan dari tabel satu dengan tabel yang lain. Berikut struktur fisik database yang akan diuji. Tabel 3.1. TBMStruk Nama Kolom Tipe Data Panjang Karakter Keterangan Strukid Varchar 10 ID dari table StrukKode Varchar 4 Kode Struktur StrukNama Varchar 50 Nama Struktur OP Varchar 30 Operator LU Datetime Tanggal dan Waktu Akses PC Varchar 30 Nama Komputer Mengakses DLT Bit Status data Pada tabel Tbmstruk memilik 7 kolom yaitu Strukid, Strukkode, StrukNama, OP, LU, PC dan DLT serta semua kolom tersebut memiliki tipe data dan panjang karakter berbeda tergantung jenis data kolom tersebut. Sedangkan kunci unik dari tabel diatas adalah StrukID. Universita Sumatera Utara Tabel 3.2. TBMKel Nama Field Tipe Data Panjang Karakter Keterangan KelID Varchar 10 ID dari tabel Strukid Varchar 10 Id Struktur KelKode Varchar 4 Kode Kelompok KelNama Varchar 50 Nama Kelompok Thang Varchar 4 Tahun Anggaran OP Varchar 30 Operator LU Datetime Tanggal dan Waktu Akses PC Varchar 30 Nama Komputer Mengakses DLT Bit Status data Pada tabel TbmKel memilik 9 kolom yaitu Kelid, Strukid,Kelkode, KelNama, OP, LU, PC dan DLT serta semua kolom tersebut memiliki tipe data dan panjang karakter berbeda tergantung jenis data kolom tersebut. Sedangkan kunci unik dari tabel diatas adalah KelID dan kunci tamu adalah Strukid. Tabel 3.3. TBMJen Nama Field Tipe Data Panjang Karakter Keterangan JenID Varchar 10 ID dari table Kelid Varchar 10 Id Kelompok JenKode Varchar 4 Kode Jenis JenNama Varchar 50 Nama Jenis Thang Varchar 4 Tahun Anggaran OP Varchar 30 Operator LU Datetime Tanggal dan Waktu Akses PC Varchar 30 Nama Komputer Mengakses DLT Bit Status data Universita Sumatera Utara Pada tabel TbmJen memilik 9 kolom yaitu Jenid, Kelid, Jenkode, JenNama, OP, LU, PC dan DLT serta semua kolom tersebut memiliki tipe data dan panjang karakter berbeda tergantung jenis data kolom tersebut. Sedangkan kunci unik dari tabel diatas adalah JenID dan kunci tamu adalah Kelid. Tabel 3.4. TBMObyek Nama Field Tipe Data Panjang Karakter Keterangan ObyID Varchar 10 ID dari table Jenid Varchar 10 Id Jenis OBYKode Varchar 4 Kode Obyek ObyNama Varchar 50 Nama Obyek Thang Varchar 4 Tahun Anggaran OP Varchar 30 Operator LU Datetime Tanggal dan Waktu Akses PC Varchar 30 Nama Komputer Mengakses DLT Bit Status data Pada tabel TbmObyek memilik 9 kolom yaitu Obyid, Jenid, Obykode, ObyNama, OP, LU, PC dan DLT serta semua kolom tersebut memiliki tipe data dan panjang karakter berbeda tergantung jenis data kolom tersebut. Sedangkan kunci unik dari tabel diatas adalah ObyID dan kunci tamu adalah Jenid. Tabel 3.5. TBMRoby Nama Field Tipe Data Panjang Karakter Keterangan RObyID Varchar 10 ID dari table ObyID Varchar 10 Id Obyek ROBYKode Varchar 4 Kode Rincian Obyek RObyNama Varchar 50 Nama Rincian Obyek Thang Varchar 4 Tahun Anggaran Universita Sumatera Utara OP Varchar 30 Operator LU Datetime Tanggal dan Waktu Akses PC Varchar 30 Nama Komputer Mengakses DLT Bit Status data Pada tabel TbmRoby memilik 9 kolom yaitu Robyid, Obyid, Robykode, RobyNama, OP, LU, PC dan DLT serta semua kolom tersebut memiliki tipe data dan panjang karakter berbeda tergantung jenis data kolom tersebut. Sedangkan kunci unik dari tabel diatas adalah RobyID dan kunci tamu adalah Obyid. Tabel 3.6. TBMSubRoby Nama Field Tipe Data Panjang Karakter Keterangan SubRObyID Varchar 10 ID dari table RObyID Varchar 10 Id Obyek SubROBYKode Varchar 4 Kode Sub Rincian Obyek SubRObyNama Varchar 50 Nama Sub Rincian Obyek Thang Varchar 4 Tahun Anggaran OP Varchar 30 Operator LU Datetime Tanggal dan Waktu Akses PC Varchar 30 Nama Komputer Mengakses DLT Bit Status data Pada tabel TbmSubRoby memilik 9 kolom yaitu SubRobyid, RObyid, SubRobykode, SubRobyNama, OP, LU, PC dan DLT serta semua kolom tersebut memiliki tipe data dan panjang karakter berbeda tergantung jenis data kolom tersebut. Sedangkan kunci unik dari tabel diatas adalah SubRobyID dan kunci tamu adalah RObyid.

3.1.2. Relasi Antar Tabel

Universita Sumatera Utara Untuk menunjukan hubungan keseluruhan tabel maka dibuat diagram relasi sebagai berikut: TBMSTRUK PK Strukid Strukkode StrukNama OP LU PC DLT TBMKEL PK Kelid Strukid Kelkode Kelnama OP LU PC DLT TBMJen PK JenId KelId Jenkode Jennama Thang OP LU PC DLT TBMObyek PK ObyID JenID ObyKode ObyNama Thang OP LU PC DLT TBMROby PK RobyID ObyID RObyKode RObyNama OP LU PC DLT TBMSubRObyek PK SubRobyID RobyID SubRobyKode SubRobyNama OP LU PC DLT Gambar 3.1. Relasi Antar Tabel

3.1.3 Skenario Pengujian Query

Pengujian pencarian data menggunakan query dua algoritma yaitu Query Hash Join dan Query Nested Join. Pengujian Query dalam hal pencarian data berdasarkan banyak jumlah data untuk melakukan pencarian data dibagi atas beberapa tahap relasi dan group data. Masing-masing group mempunyai jumlah data yang berbeda . berikut group data sebagai uji coba dan berdasarkan jumlah data yang berbeda untuk penelitian berikut tahap relasi dan tabel group data: Tabel 3.7 Tahapan Relasi No Jumlah Universita Sumatera Utara Relasi 1 1 Relasi 2 2 Relasi 4 3 Relasi 5 4 Relasi 6 5 Relasi Tabel 3.8 Tabel Group data Uji Penelitian NO Jumlah DataRecord Kelompok Data 1 10 Kecil 2 20 3 40 4 80 5 160 6 320 7 640 Sedang 8 1280 9 2560 10 5120 11 10240 12 20480 13 40960 Besar 14 81920 15 163380 16 655360 17 1.310.720 Jumlah recordbaris data masing-masing tabel menggunakan data dummy dan penambahan data menggunakan perintah query untuk melakukan pengujian query algoritma. Berikut flowchart untuk menguji query pencarian data berdasarkan kriteria diatas. Universita Sumatera Utara Start Startime=0 EndTime=0 Durasi=0 Perintah Query Pencarian Data Startime Eksekusi Query Endtime Durasi=Endti me-Startime Stop Gambar 3.2. Flowchart Skenario Pengujian Query

3.2. Query Algoritma

Query-query kedua algoritma yang akan diuji coba dalam penelitian ini dilakukan beberapa tahap relasi dan menghasilkan informasi yang sama. Untuk menghitung waktu yang diperlukan untuk menampilkan data yang dicari maka dibuat sebuah aplikasi Universita Sumatera Utara menggunakan Visual Basic.Net 2010 dan Microsoft SQL Server 2008 sebagai Database Manajemen Sistem.

3.2.1 Query Hash Join

Pengujian kinerja query Algoritma Hash Join dalam pencarian data dari sebuah aplikasi maka query dibagi berdasarkan jumlah tabel yang saling berhubungan.

1. Query 1 Relasi