BAB 2 LANDASAN TEORI 2.1. Pengertian DBMS (Database Management System) - Analisis Query Pencarian Data Menggunakan Algortima Hash Join Dan Nested Join

BAB 2 LANDASAN TEORI

  2.1. Pengertian DBMS ( Database Management System)

Database Management System atau DBMS adalah perangkat lunak yang didesain

  untuk membantu dalam memelihara dan menggunakan koleksi data dalam jumlah yang besar. Penggunaan DBMS adalah untuk menyimpan data dalam file dan menulis aplikasi dengan kode khusus untuk mengaturnya.

  2.2. Sistem Basis Data

  Basis data dan teknologinya telah memainkan peran penting seiring dengan pertumbuhan penggunaan komputer. Basis data telah digunakan pada hampir seluruh area dimana komputer digunakan, termasuk bisnis, teknik, kesehatan, hukum, pendidikan dan sebagainya. Kata basis data dapat didefinisikan sebagai kumpulan data yang saling berhubungan. Sedangkan kata data dapat didefinisikan sebagai fakta yang direkam atau dicatat. Sebagai contoh adalah nama, nomor telepon, dan alamat dari orang-orang yang anda kenal. Anda mungkin telah merekam data ini pada buku alamat, atau anda dapat menyimpannya dalam disket, menggunakan komputer personal dan perangkat lunak seperti dBASE IV.

  Sistem Basis Data adalah suatu sistem menyusun dan mengelola record-record menggunakan komputer untuk menyimpan atau merekam serta memelihara data operasional lengkap sebuah organisasi/perusahaan sehingga mampu menyediakan informasi yang optimal yang diperlukan pemakai untuk proses mengambil keputusan.

2.2.1. Konsep Basis Data Relasional

  Prinsip model relasional (relational model) pertama kali diperkenalkan oleh Dr. E.F Codd, pada bulan Juni 1970 dalam sebuah tulisannya yang berjudul “A Relational Model

  of Data for Large Shared Data Banks

  .” Dalam tulisan tersebut, Dr. Codd menjelaskan tentang model relasional untuk sistem basis data. Model-model yang lebih populer digunakan pada saat itu adalah hierarchical dan network, atau bahkan simple flat file data stuctures. Relational Database Management Systems (RDBMS) segera menjadi sangat populer, terutama karena kemudahan penggunaannya dan fleksibilitas struktur datanya.

  Selanjutnya, banyak vendor bermunculan untuk mendukung sistem ini diantaranya Oracle,Ms.SQL Server dimana mendukung RDBMS dengan paket untuk keperluan membangun aplikasi dan produk-produk siap pakai, sebagai total solusi bagi keperluan pengembangan teknologi informasi.

  2.2.2. Konsep Model Relasional

  Konsep basis data model relasional memiliki beberapa definisi penting sebagai berikut:

   Kumpulan objek atau relasi untuk menyimpan data  Kumpulan dari operator yang melakukan suatu aksi terhadap suatu relasi untuk

  menghasilkan relasi-relasi lain

   Basis data relasional harus mendukung integritas data sehingga data tersebut

  harus akurat dan konsisten Contoh dari relasi adalah tabel. Kita dapat menggunakan perintah-perintah SQL untuk menampilkan data dari tabel.

  2.2.3. Fungsi-fungsi Basis Data Relasional

  Basis data relasional memiliki fungsi-fungsi kegunaan sebagai berikut:

   Mengatur penyimpanan data  Mengontrol akses terhadap data  Mendukung proses menampilkan dan memanipulasi data

  2.2.4. Istilah-istilah Basis Data Relasional

  Beberapa istilah yang perlu kita pahami mengenai basis data relasional antara lain:

   Tabel : Merupakan struktur penyimpanan dasar dari basis data relasional, terdiri dari satu atau lebih kolom (column) dan nol atau lebih baris (row).

   Row (baris) : Baris merupakan kombinasi dari nilai-nilai kolom dalam tabel;

  sebagai contoh, informasi tentang suatu departemen pada tabel Departmen. Baris seringkali disebut dengan “record”.

   Column (kolom) : Kolom menggambarkan jenis data pada tabel; sebagai contoh,

  nama departemen dalam tabel Departmen. Kolom di definisikan dengan nama kolom dan tipe data beserta panjang data tertentu.

   Field : Field merupakan pertemuan antara baris dan kolom. Sebuah field dapat

  berisi data. Jika pada suatu field tidak terdapat data, maka field tersebut dikatakan memiliki nilai “null”.

   Primary key : Primary key atau kunci utama merupakan kolom atau kumpulan kolom yang secara unik membedakan antara baris yang satu dengan lainnya;

  sebagai contoh adalah kode departemen. Kolom dengan kategori ini tidak boleh mengandung nilai “null”, dan nilainya harus unique (berbeda antara baris satu dengan lainnya).

   Foreign key: Foreign key atau kunci tamu merupakan kolom atau kumpulan kolom yang mengacu ke primary key pada tabel yang sama atau tabel lain.

  Foreign key ini dibuat untuk memaksakan aturan-aturan relasi pada basis data. Nilai data dari foreign key harus sesuai dengan nilai data pada kolom dari tabel yang diacunya atau bernil ai “null”.

2.3. Basis Data Terdistribusi

  Basis data terdistribusi adalah kumpulan data logic yang saling berhubungan secara fisik terdistribusi dalam jaringan komputer, yang tidak tergantung dari program aplikasi sekarang maupun masa yang akan datang.

  Basis data terdistribusi (distributed database) merupakan suatu basis data yang di bawah sistem manajemen basis data atau (DBMS) yang terpusat dengan peranti penyimpanan (storage devices) dan terpisah-pisah satu dari yang lainnya. Dan tempat penyimpanan dapat berada di satu lokasi yang secara fisik berdekatan contohnya: dalam satu bangunan atau terpisah oleh jarak yang jauh walaupun banyak bangunannya dan terhubung melalui jaringan internet. Dalam penggunaan basis data terdistribusi bisa dilakukan di server internet, ekstranet kantor atau intranet, maupun di jaringan perusahaan.

  Pengguna atau disebut (user) dalam sebuah basis data terdistribusi bisa mengakses basis data melalui dua jenis aplikasi yaitu: a.

  Aplikasi lokal adalah aplikasi yang tidak memerlukan data dari tempat lain.

  b.

  Aplikasi global adalah aplikasi dengan kebutuhan akan data dari tempat lain.

2.4. Konsep Structure Query Language(SQL)

  Menurut Connoly dan Begg (2005, p113), pengertian SQL adalah transform- oriented

  

language atau bahasa yang dirancang dengan penggunaan relasi untuk mengubah

  masukan menjadi keluaran yang ibutuhkan. Sebagai sebuah bahasa, standar internasional SQL menetapkan 2 komponen pokok, yaitu : a.

  Data Definition Language (DDL) untuk mendefisinikan struktur basis data dan akses kontrol data.

  b.

  Data Manipulation Language (DML) untuk mengembalikan dan memperbarui data.

2.4.1. Data Manipulation

  Data manipulation di dalam SQL mencakup banyak hal mengenai query. Hal-

  hal yang akan dibahas disini adalah yang terkait dengan query secara umum, yaitu : a. SELECT : untuk menampilkan hasil query data dalam basis data.

  b. INSERT : untuk memasukkan data ke dalam basis data.

  c. UPDATE : untuk memperbarui data dalam basis data.

  d. DELETE : untuk menghapus data dalam basis data.

  Tujuan perintah SELECT adalah untuk mengembalikan nilai dan menampilkan data dari satu atau lebih tabel dalam basis data.

  Perintah yang sangat baik kemampuannya dalam menampilkan relasi data adalah operasi Selection, Projection dan Join dalam perintah tunggal.

a. Selection

  Operasi selection bekerja pada relasi tunggal R dan mendefinisikan relasi yang hanya berisi tuple R yang memenuhi kondisi tertentu (predikat). Misalnya adalah 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

  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. 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 umur<40. 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

  1. Untuk membuat/mendefinisikan 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.

  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 : M a. 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:

  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 Algoritma/Metode Hasil

  Dan Tahun Yang Digunakan Penelitian

  1 Perbandingan Metta Subset Subset query pada

  Cross-Product Query,Cross bentuk scalar dan

  SantiPutri,Mira Dan Subset Product dengan kombinasi

  1 Chandra

  Query Pada menggunakan merupakan model yang

  Kirana,Anni,2010 Multiple Relasi Metode Cost Based lebih baik dalam Dengan Metode pencarian data

  Cost-Based

  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 Tri Wahyu, 2008 Algoritma Subset Dengan menggunakan Pencarian Data Query Interbase 6, untuk data Dengan hasil query lebih dari

  Algoritma

  kurang dari atau sama

  Subset Query

  dengan 5165 record, penggunaan query dengan cross product membutuhkan waktu 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

  Arief Salah satu keuntungan

  3 Meningkatkan Query Rushmore Jananto,2006 optimisasi query

  Kecepatan Rushmore adalah

  Akses Data bahwa mesin jet Query sekarang dapat dengan menggunakan index

  Teknologi lebih dari satu tiap tabel untuk

  Optimasi Query menyelesaikan suatu

  Rushmore 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 Manahan Algoritma Genetik Database ini antara Database lain :

  Siallagan, Mira Menggunakan

  1. terbaik Metode

  Algoritma Kania Sabariah, untuk permasalahan Genetik optimasi query

  Malanita Sontya,

  database pada

  2008 percobaan yang dilakukan adalah metode M2S crossover.

  2. Berdasarkan percobaan yang dilakukan, dapat dilihat bahwa dengan algoritma 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.