ANALISIS OPTIMISASI FORMULA DISTRIBUTED QUERY DALAM BASIS DATA RELASIONAL R. SUDRAJAT
|
|
|
- Ari Oesman
- 9 tahun lalu
- Tontonan:
Transkripsi
1 ANALISIS OPTIMISASI FORMULA DISTRIBUTED QUERY DALAM BASIS DATA RELASIONAL R. SUDRAJAT SEKOLAH PASCASARJANA INSTITUT PERTANIAN BOGOR BOGOR 2007
2 RINGKASAN ii Proses join query dalam sistem basis data terdistribusi adalah salah satu masalah penting dan cukup rumit dan dapat melibatkan proses komputasi dan formula yang cukup kompleks. Penelitian dalam tesis ini ditujukan untuk menganalisis optimisasi query secara teoritis yang didukung oleh percobaan dalam basis data relasional dengan melibatkan ukuran data yang besar. Analisis difokuskan pada join query dengan menggunakan Nested-Loops- Join, Block-Nested-Loops-Join, Sort-Merge-Join dan Hash-Join yang didasarkan pada analisis fungsi biaya. Dalam penelitian ini kasus data yang digunakan diambil dari Perusahaan Asuransi yang secara transaksional data tersimpan tersebar di beberapa cabang perusahaan. Hasil dari analisis dan pecobaan menunjukkan bahwa metode Hash-Join dapat menyelesaikan join query dengan biaya terendah. Fragmentasi dan partisi dalam jumlah data yang besar diperlukan untuk menghasilkan join query yang lebih baik. Dengan demikian dalam melakukan proses transaksi dengan jumlah data yang besar (lebih dari satu juta record) fragmentasi dan optimisasi sangat diperlukan untuk mengurangi waktu proses. Proses komputasi secara paralel dengan menggunakan multi processors sangat diperlukan agar dapat meningkatkan unjuk kerja proses query dalam basis data terdistribusi. Kata Kunci : basis data terdistribusi, optimisasi, join query, fragmentasi.
3 ABSTRACT iii Joined query is considered an expensive operation therefore specific optimization technique involving formulation, strategy and transformation is required. The purpose of this thesis is to perform optimization analysis of query, theroretically and experimentaly, on distributed relational databases comprising large size data tables. The analysis is focused on join query using Nested-Loops-Join, Block- Nested-Loops-Join, Sort-Merge-Join and Hash-Join with respect to cost function analysis. The data case used in this research has been taken from an Insurance Company that maintains and operates transactional data stored distributively in several company branches. The result of the analysis and experiment shows that Hash-Join provides the best (smalest) cost for join query. It is also shown that fragmentation and partition of large data contributes to the better performace of join query. Therefore, it is recommended that the transactional data comprising large data records (one million records or more) needs to be well partitioned to reducethe query execution time. Furthermore, the use of parallel computation using multiple processors are recommended to improve futher the performance of query processing on distributed databases. Keyword : distributed database, optimization, join query, fragmentation.
4 ANALISIS OPTIMISASI FORMULA DISTRIBUTED QUERY DALAM BASIS DATA RELASIONAL R. SUDRAJAT Tesis Sebagai salah satu syarat untuk memperoleh gelar Magister Sains pada Program Studi Ilmu Komputer SEKOLAH PASCASARJANA INSTITUT PERTANIAN BOGOR BOGOR 2007
5 i SURAT PERNYATAAN Dengan ini menyatakan bahwa tesis saya yang berjudul : Analisis Optimisasi Formula Distributed Query dalam Basis Data Relasional adalah merupakan hasil karya saya sendiri dan belum pernah dipublikasikan. Sumber informasi berasal atau dikutip dari karya yang diterbitkan maupun tidak diterbitkan dari penulis lain telah disebutkan dalam teks dan dicantumkan dalam daftar pustaka di bagian akhir tesis ini. Bogor, Juli 2007 Sudrajat, R. NRP: G
6 JUDUL NAMA NRP : Analisis Optimisasi Formula Distributed Query dalam Basis Data Relasional : R. SUDRAJAT : G Disetujui Komisi Pembimbing Prof. Dr. Ir. Kudang Boro Seminar M.Sc. Ketua Ir. Fahren Bukhari, M.Sc. Anggota Diketahui Ketua Program Studi Ilmu Komputer Dekan Sekolah Pascasarjana Dr. Sugi Guritman Prof. Dr. Ir. Khairil A. Notodiputro, MS. Tanggal Ujian : 14 Juli 2007 Tanggal Lulus :
7 Hak cipta milik Institut Pertanian Bogor, tahun 2007 Hak cipta dilindungi Dilarang mengutip dan memperbanyak tanpa ijin tertulis dari Institut Pertanian Bogor, sebagian atau seluruhnya dalam bentuk apapun, baik cetak, fotokopi, microfilm, dan sebagainya
8 i SURAT PERNYATAAN Dengan ini menyatakan bahwa tesis saya yang berjudul : Analisis Optimisasi Formula Distributed Query dalam Basis Data Relasional adalah merupakan hasil karya saya sendiri dan belum pernah dipublikasikan. Sumber informasi berasal atau dikutip dari karya yang diterbitkan maupun tidak diterbitkan dari penulis lain telah disebutkan dalam teks dan dicantumkan dalam daftar pustaka di bagian akhir tesis ini. Bogor, Juli 2007 Sudrajat, R. NRP: G
9 vii PRAKATA Puji Syukur ke Hadirat Allah SWT Yang Maha Pengasih dan Maha Penyayang atas Rahmat serta KaruniaNya, penulis diberi kemampuan dan kekuatan untuk dapat menyelesaikan tesis ini dengan judul: Analisis Optimisasi Formula Distributed Query dalam Basis Data Relasional Pada kesempatan ini penulis menyampaikan rasa hormat dan rasa terima kasih kepada Bapak Prof. Dr. Ir. Kudang Boro Seminar M.Sc. dan Bapak Ir. Fahren Bukhari, M.Sc yang telah meluangkan waktunya untuk membimbimg dan mengarahkan penulis hingga terselesaikannya tesis ini. Ucapan terima kasih juga penulis sampaikan kepada Bapak Drs. Edi Maryanto selaku Data Administrator Manager pada PT. Taspen yang telah memberikan penulis berupa data peserta Asuransi, dan terima kasih kepada Bapak Agus Muhtarom SSi. sebagai kepala Sistem Informasi FMIPA-UNPAD yang telah memberikan fasilitas penggunaan Lab.Penelitian Fakultas MIPA. Akhirnya penulis menyampaikan terima kasih pula untuk Istri tercinta dan putra-putri atas segala do a dan dukungannya. Semoga segala bantuan dan dorongan yang telah diberikan kepada penulis mendapatkan balasan dari Allah SWT, dan semoga karya ilmiah ini bermanfaat. Bogor, Juli 2007 Sudrajat, R.
10 viii DAFTAR RIWAYAT HIDUP Penulis dilahirkan di Sumedang Jawa Barat pada tanggal 12 Pebruari 1960 sebagai anak ke tiga dari pasangan R. Kusdinar dan Ibu Epon Suhaenah (Alm). Pendidikan Sarjana ditempuh di Jurusan Matematika FMIPA Universitas Padjadjaran Bandung, lulus tahun Kesempatan untuk melanjutkan program Pascasarjana pada program studi Ilmu Komputer FMIPA IPB, diperoleh pada tahun Penulis bekerja sebagai tenaga pengajar di Universitas Padjadjaran Bandung sejak tahun 1987 di bidang algoritma pemrograman dan struktur data.
11 ix DAFTAR ISI Halaman DAFTAR TABEL... xi DAFTAR GAMBAR... xii DAFTAR LAMPIRAN...xiii BAB I PENDAHULUAN Latar Belakang Formulasi Permasalahan Tujuan Penelitian Manfaat Penelitian Ruang Lingkup... 3 BAB II TINJAUAN PUSTAKA Basis Data Terdistribusi Sistem Basis Data Terdistribusi Arsitektur Sistem Basis Data Terdistribusi Konsep Aljabar Relasional Selection Projection Join Cross Join Natural Join Operasi Himpunan Union Intersection Difference Proses Query Optimisasi Query Prinsip Optimisasi Query Metoda Optimisasi Query Optimisasi Query Basis Formula Optimisasi Query Basis Biaya Fungsi Biaya dari Statistik Basis Data Optimizer DBMS MySQL BAB III METODOLOGI DAN RANCANGAN PENELITIAN Metodologi Penelitian Sistematika Penelitian dan Pembahasan Tahapan Proses Penelitian... 24
12 x Halaman BAB IV HASIL DAN PEMBAHASAN Formulasi Masalah dan Penentuan Tujuan Formulasi Optimisasi Query Analisis Selectivity Factor dari Karakteristik Basis Data Analisis Optimisasi Secara Spesifik Nested -Loops-Join Block-Nested-Loops-Join Sort-Merge-Join Biaya Sort-Merge-Join Hash-Join Analisis Signifikansi Optimisasi Query Analisis Optimisasi Query Optimizer DBMS MySQL Percobaan BAB V KESIMPULAN DAN SARAN Kesimpulan Saran DAFTAR PUSTAKA... 73
13 xi DAFTAR TABEL Halaman 1. Fragmentasi Horizontal, Vertical dan Mixed Fragmentasi Segmen Tabel peserta S Segmen Tabel peserta S Segmen Tabel pmk_ke1 R Segmen Tabel pstpens B Hasil Join dari S1 dan R Tahapan Proses Penelitian Tabel informasi data tabel relasi Contoh Segmen tabel pst_ke Contoh Segmen tabel pstaktif Running time query tabel satu relasi tanpa join, Q 1 tanpa optimisasi, Q 2 dengan optimisasi satu kriteria Perbadingan join query tidak dioptimisasi dan dioptimisasi Running time query, Q 6 mendahulukan operasi join sebelum seleksi, Q 7 mendahulukan operasi seleksi sebelum operasi join Perbandingan Running time fragmentasi setelah proses join query dan fragmentasi sebelum proses join query Perbandingan Running time client berbeda spesifikasi... 69
14 xii DAFTAR GAMBAR Halaman 1. Lingkungan Basis Data Terdistribusi Arsitektur Sistem Basis Data Terdistribusi Tahapan proses sebuah Query Bagan alir proses penelitian Diagram E-R keseluruhan tabel peserta Diagram E-R tabel peserta spesialisasi menjadi tabel pst_ke1 dan pstaktif Diagram E-R tabel pensiun spesialisasi menjadi pmk_ke1 dan pmk_fd Rencana evaluasi query dari join tree Rencana evaluasi Query mendahulukan operasi seleksi Contoh perintah Join Algoritma Simple Nested Loops Join Algoritma Block Nested Lopps Join Penggunaan buffer Block Nested Lopps Join Algoritma Sort Merge Join Tahap Partisi Proyeksi Hash Based Tahap Equality Join menggunakan Hash Join Algoritma Hash Join Running time query satu relasi tanpa join, Q 1 tanpa optimisasi, Q 2 dengan optimisasi satu kriteria Perbandingan join query tidak dioptimisasi dan dioptimisasi Running time query, Q 6 mendahulukan operasi join sebelum seleksi, dan Q 2 mendahulukan operasi seleksi sebelum operasi join Perbandingan Running time Q 8 : fragmentasi setelah proses query dan Q 9 :fragmentasi sebelum proses query Perbandingan Runtime client yang berbeda spesifikasi Konfigurasi bagian peta MIPA - NETWORK ( FMIPA-UNPAD 2007)... 70
15 xiii DAFTAR LAMPIRAN Halaman 1. Contoh kamus data tabel relasi pst_ke1 4 buah atribut record Contoh kamus data tabel relasi pstaktif dengan 8 buah attribut record Contoh kamus data tabel relasi pmk_ke1 dengan 6 buah attribut record Contoh kamus data tabel relasi pmk_fd1 dengan 13 buah attribut record Contoh kamus data tabel relasi pstpens dengan 11 buah attribut record Contoh isi data dari tabel relasi pst_ke Contoh isi data dari tabel relasi pstaktif Contoh isi data dari tabel relasi pmk_ke Contoh isi data dari tabel relasi pmk_ke Contoh isi data dari tabel relasi pmk_fd
16 BAB I PENDAHULUAN 1.1. Latar Belakang Sebuah perusahaan yang cukup besar biasanya mempunyai banyak cabang, misalnya sebuah bisnis supermarket yang cukup besar memiliki ratusan cabang dan tersebar di beberapa kota besar, sistem stok barangnya setiap hari harus dihitung yang terdiri dari merek, produk, jenis dan transaksi berisi saldo penjualan harian dan saldo barang. Demikian juga perusahaan-perusahaan yang bergerak dibidang jasa, misalnya perusahaan asuransi jasa pensiun yang cukup besar mempunyai banyak cabang tersebar di beberapa kota, setiap minggu atau setiap bulan harus melaporkan hasil transaksi-transaksi dari semua cabang yang tersebar tersebut. Sedangkan dalam menggabungkan tabel-tabel transaksi yang terpisah-pisah menjadi satu tabel secara berkala, sistem harus memprosesnya melalui join query. Masalah akan timbul bilamana prosesnya sangat lambat dan tidak sesuai dengan yang diharapkan. Keterlambatan proses akan menghambat pembuatan laporan dan pengambilan keputusan. Operasi join query adalah merupakan operasi yang cukup mahal dan sangat membutuhkan teknik dan metode tertentu untuk dapat menghasilkan keluaran sesuai dengan yang diharapkan (Chen Li. 2003). Proses join query dalam sistem basis data terdistribusi adalah salah satu masalah penting dan cukup rumit, prosesnya banyak menggunakan metodemetode optimisasi yang melibatkan formula-formula dan biaya-biaya query. Para ahli melakukan penelitian mencoba menggunakan teknik-teknik terdistribusi yang dilandasi oleh perkembangan lokal. Sistem harus melindungi users dari kompleksitas basis data, agar supaya proses query yang didistribusikan dapat mencapai hasil optimal dan mudah dikontrol (Richard 2000). Para programmer melakukan proses optimisasi query dapat menggunakan fasilitas optimizer dari DBMS, karena dalam kasus tertentu dapat memberikan hasil sesuai dengan yang diharapkan, misalnya : Oracle 9i s selalu menemukan yang ideal untuk mengeksekusi query, karena bahasa SQL Oracle melakukan query dari berbagai jalur secara cepat, dan menemukan baris (row) dengan cara full-table scan, via b-tree index, menggabungkan dua tabel dengan beberapa
17 2 teknik Sort / Merge, tetapi Oracle 9i s sangat membutuhkan unjuk kerja CPU dan memory yang cukup memadai (Ken 2002). Pada perkembangan penelitian terdapat sebuah tantangan lain, yaitu signifikansi mungkin akan tercapai bilamana komputasi dilakukan secara spesifik dan parsial disesuaikan dengan hardware dan software DBMS yang digunakan Formulasi Permasalahan Pada dasarnya permasalahan dalam optimisasi query belum tentu layak di optimisasi, dan belum tentu signifikan optimisasi query akan dicapai bila tidak disesuaikan antara DBMS, hardware sumber, lokasi dan karakteristik dari statistik basis datanya. Untuk basis data yang cukup besar apakah signifikansi dapat tercapai apabila proses optimisasinya dilakukan secara spesifik dan parsial, serta bagaimana pengaruh nilai selectivity factor dari statistik basis data yang cukup besar terhadap proses optimisasi dalam operasi join query Tujuan Penelitian Tujuan penelitian ini adalah menganalisis pengaruh optimisasi query dalam basis data terdistribusi secara spesifik dan parsial dilihat dari karakteristik basis datanya secara teoritis yang didukung secara empiris oleh percobaan. Menganalisis teknik formulasi relasi aljabar relasional untuk proses optimisasi query dan mencari signifikansi query berdasarkan biaya yang disetarakan dengan waktu berupa runtime hasil eksekusi query disesuaikan dengan DBMS, hardware dan karakteristik dari statistik basis data yang digunakan Manfaat Penelitian Manfaat penelitian ini untuk memberi wawasan tentang analisis optimisasi query secara parsial disesuaikan dengan karakteristik statistik basis data, hardware dan software yang digunakan. Dan diharapkan dapat membantu users atau programmer dalam menganalisis dan menentukan formula-formula optimisasi query.
18 Ruang Lingkup Ruang Lingkup dalam penelitian ini yaitu menguraikan proses optimisasi query menggunakan fasilitas DBMS Optimizer menggunakan algoritma Nested- Loops-Join, Block-Nested-Loops-Join, Sort-Merge-Join dan Hash-Join. Melakukan percobaan proses optimisasi query menggunakan tabel data peserta asuransi PT. Taspen, jumlah record terkecil 1,2 juta dan terbesar 3,8 juta, proses eksekusi dilakukan menggunakan software DBMS MYSQL pada jaringan komputer client-server FMIPA-UNPAD Jatinangor.
19 BAB II TINJAUAN PUSTAKA 2.1. Basis Data Terdistribusi Sistem Basis Data Terdistribusi Dalam pengelolaan basis data terdapat dua sistem basis data, yaitu Basis Data Terpusat ( Centralized ) dan Basis Data Terdistribusi ( Distributed ). Perbedaan utama antara sistem basis data terpusat dan terdistribusi adalah jika pada sistem basis data terpusat, data ditempatkan di satu lokasi saja dan semua lokasi lain dapat mengakses data di lokasi tersebut, sedangkan pada system basis data terdistribusi, data di tempatkan di banyak ( lebih dari satu ) lokasi, tetapi menerapkan suatu mekanisme tertentu untuk membuatnya menjadi satu kesatuan basis data, dan hal ini berbeda dengan system basis data terpisah (Isolated) yang mana dalam sistem basis data terpisah, basis data ditempatkan di banyak lokasi, tetapi tidak saling berhubungan sama sekali. Menurut Özsu MT, Valduriez P. (1999) Basis Data Terdistribusi didefinisikan sebagai berikut : Suatu Basis Data Terdistribusi ( DDBS ) adalah suatu koleksi beberapa basis data yang secara logika saling berhubungan dan terdistribusi dalam suatu jaringan komputer, sedangkan Sistem Basis Data Manajemen Terdistribusi ( D-DBMS ) adalah Perangkat Lunak yang mengatur Basis Data Terdistribusi (DDB) dan menyediakan suatu mekanisme akses yang membuat distribusi ini dapat diketahui oleh pemakai. Jadi Sistem Basis Data Terdistribusi ( DDBS )= DDB+ D-DBMS Lokasi-lokasi penempatan basis data dapat terlihat dalam Gambar 1.
20 5 Site 2 Site 1 Site 3 Site 4 Communication Network Site 4 Gambar 1. Lingkungan Basis Data Terdistribusi ( Valduriez P. 1999) Arsitektur Sistem Basis Data Terdistribusi Dalam arsitektur basis data terdistribusi konsep basis data relasional lebih banyak digunakan, karena dalam operasionalnya dapat disesuaikan dengan sistem basis data terpusat, secara formal relasional basis data terdistribusi mencakup : Global Level, Fragmentation Level dan Allocation Level ( Kuijk 2000 ) dan hal ini dapat terlihat dalam Gambar 2 berikut.
21 6 Distributed Database Systems Global Schema Site Independent Fragmentation Schema Allocation Schema Site dependent Site 1 Site 2 Site n Gambar 2 : Arsitektur Sistem Basis Data Terdistribusi (Kuijk 2000) - Global Level : suatu skema basis data secara global yang menggambarkan basis data terdistribusi yang seolah-olah tidak seluruhnya terdistribusi. - Fragmentation level : suatu skema fragmentasi yang menggambarkan suatu pemetaan antara relasi individu dengan fragmentasinya - Allocation Level : suatu skema alokasi yang menggambarkan pemetaan antara fragmen individu dimana basis data disimpan Dalam melakukan fragmentasi terdapat kriteria-kriteria yang harus dipenuhi, yaitu : Reconstruction Condition, Completeness Condition dan Disjointness Condition (Kuijk 2000)
22 7 Jika R adalah tabel relasi, A i adalah atribut dari R, r adalah record dari R dan F i kondisi dari operasi seleksi, maka hasil fragmentasi dapat direkonstruksi terlihat dalam Tabel 1. Tabel 1: Fragmentasi Horizontal, Vertical dan Mixed Fragmentasi (Kuijk 2000). Type Partitioning Reconstruction Horizontal r( R ) ( r( R) ) Vertical Mixed r = r ( R ) = U n r ( R ) i σ F i r ( R ) = ( r( R) ) i π A i ( R ) = π ( σ ( r( R)) ) i A i Fi r i i=1 n r ( R i ) = π Ai (r (R )) i = 1 n ( Ri ) = r( R ) U k r( R ) U 1 i = 1 1 i1 i n i =1 k ik 2.2 Konsep Aljabar Relasional. Relasi aljabar adalah bahasa prosedural, dan salah satu cara untuk membangun relasi satu atau lebih relasi berdasarkan konsep aljabar. Dalam basis data relasional relasi aljabar mempelajari bagaimana struktur properti dan kendala-kendala akan menjadi dasar dalam operasi basis data, formulasi query dipetakan pada relasi aljabar dan sejauh mana pendekatan teori set digunakan. Bahasa query memiliki sejumlah operasi yang memanfaatkan satu atau beberapa tabel/relasi basis data sebagai masukkan dan menghasilkan sebuah tabel/relasi basis data yang baru sebagai keluarannya. Operasi dasar dalam Aljabar Relasional antara lain mencakup : Select, Project, Cartesian-Product, Union, Set-Difference (Kuijk 2000). Konsep optimisasi query dalam Aljabar Relasional yang banyak digunakan adalah operasi-operasi yang berhubungan dengan operasi join. Dalam tesis ini ditampilkan sejumlah contoh dengan menggunakan skema tabel relasi berikut : peserta (notsp : integer, tgl_lhr : date, tmt_pst : date, gapok : integer) pensiun(nopen : integer, nama : string, tgl_kej : date) pmk_k1(notsp : integer, nopen : integer, tgl_kej : date)
23 8 Skema dari tabel-tabel relasi di atas ditunjukkan pada segmen Tabel 2, Tabel 3, Tabel 4 dan Tabel 5. Tabel 2. : Segmen Tabel peserta S 1 notsp tgl_lhr tmt_pst gapok /31/1955 1/1/ /18/1952 3/1/ Tabel 3 : Segmen Tabel peserta S 2 notsp tgl_lhr tmt_pst gapok /18/1952 3/1/ /30/1966 3/1/ /29/ /1/ Tabel 4 : Segmen Tabel pmk_ke1 R 1 notsp Nopen tgl_kej /31/ /23/ /21/1990 Tabel 5 : Segmen Tabel pensiun B 1 nopen Nama tgl_kej Nangkuh 12/31/ Abdul Hadi 12/23/ Siddik 13/21/ Selection Operasi Selection digunakan untuk memilih subset record-record dari tabel sebuah relasi yang memenuhi pilihan. Kondisi harus berupa formula yang proporsional. Tata cara penulisan yang digunakan pada operasi ini adalah : σ p (R) atau σ <selection condition> (R)
24 9 p adalah <selection condition> berupa predikat pada atribut-atribut di R, dan R adalah tabel/relasi yang akan diakses oleh operasi selection. Jika merujuk Tabel 2 pada tabel peserta, perintah mengambil baris data (record) peserta yang tanggal lahirnya 9/9/1969, maka operasi ini dapat dituliskan σ tgl_lhr = 9/9/1969 (peserta) Projection Operasi Projection dilakukan untuk memilih atribut-atribut dari tabel/relasi. dan dapat mengambil atribut satu atau lebih. Tata cara penulisan pada operasi ini adalah : Π <attribute list> (R) Atribut list adalah daftar atribut yang akan ditampilkan yang ada di R. Misalkan pada Tabel 2 yaitu dalam tabel peserta akan ditampilkan notsp dan tgl_lhr, untuk semua baris data yang ada pada tabel tersebut, maka perintahnya adalah : Π notsp,tgl_lhr (peserta) Dapat pula menampilkan berupa hasil operasi/query. Misalkan akan ditampilkan notsp dan tgl_lhr dngan tmt_pst pada tanggal 1/1/1975 saja, maka operasi seleksi dan projeksi harus digunakan secara bersamaan, seperti berikut : Π notsp,tgl_lhr (σ tmt_pst= 1/1/1975 (peserta)) Join. Operasi Join adalah untuk menggabungkan lebih dari satu tabel/relasi. Operasi Join dilambangkan dengan dan digunakan untuk mengkombinasikan hubungan record-record dari dua relasi kedalam record tunggal. Pada umumnya operasi PROJECT pada dua relasi R(A 1,A 2, A n ) dan S(B 1,B 2, B m ) ditunjukkan oleh : R <kondisi join> (S)
25 10 Hasil dari Join adalah sebuah relasi Q dengan n + m atribut Q(A 1,A 2, A n, B 1,B 2, B m ). Q mempunyai satu record untuk masing-masing kombinasi dari record, satu dari R dan satu dari S. Dalam join, hanya kombinasi-kombinasi dari record-record yang memenuhi kondisi join yang akan tampak pada hasil. Kondisi Join ditentukan oleh atribut-atribut dari relasi R dan S dan evaluasi untuk tiap kombinasi dari record-record Bentuk dari kondisi Join secara umum adalah : <condition> AND <condition> AND AND <condition> dimana tiap kondisi adalah bentuk dari A i θ B j. A i adalah sebuah atribut dari R dan B j adalah sebuah atribut dari S. A i dan B j mempunyai domain yang sama, dan θ (theta) adalah salah satu dari operator-operator pembanding {<,,,, >,}. Operasi Join dengan sebuah kondisi join yang umum disebut dengan theta join. Contoh : (R c S) = σ c (R x S) Jadi, ditentukan untuk menjadi sebuah cross product diikuti dengan satu selection, Jika diperhatikan c condition dapat merujuk ke atribut baik R maupun S. Referensi ke sebuah atribut dari sebuah relasi, misalnya R, dapat berdasarkan posisi (dari bentuk R i ) atau berdasarkan nama dan bentuk R name, merujuk pada Tabel 2 dan Tabel 4, maka hasil dari S 1 S1. notsp<r1.notsp R 1 ditunjukkan pada Tabel 6, notsp muncul baik dalam S 1 maupun R 1, maka atribut hasil dari cross product S 1 x R 1 tidak diberi nama. Tabel 6 : Hasil Join S 1 dan R 1 notsp tgl_lhr tmt_pst gapok notsp nopen tgl_kej /31/1955 1/1/ /23/ /18/1952 3/1/ /23/1989
26 Cross Join Operasi Cross Join yang juga biasa disebut dengan Cross Product atau Cartesian Product dilambangkan dengan X yang juga merupakan sebuah kumpulan operasi biner. Contoh (R 1 X S 1 ) operasinya memungkinkan untuk menggabungkan data dari dua buah tabel atau hasil query yang berakibat semua record di R 1 dipasangkan dengan semua record di S 1 dan hasil operasi akan memuat semua atribut yang ada di R 1 dan di S 1 dan operasi ini bersifat komutatif. Operasi Cross Join umumnya tidak berdiri sendiri, tetapi digunakan bersama operasi lainnya, seperti operasi seleksi dan proyeksi dengan berbagai bentuk sesuai kebutuhan, sebagaimana dapat dilihat dalam contoh berikut : Akan diambil data dari penggabungan tabel S 1 dan R 1 untuk tmt_pst= 1/11975 dan tgl_kej = 12/23/1989 operasinya dapat dituliskan sebagai berikut : σ tmt_pst= 1/1/1975 tg_kej = 2/23/1989 S1.notsp =R1.notsp ( S 1 X R 1 ) Natural Join Sebuah query yang melibatkan operasi Cartesian Product umumnya menggunakan operasi seleksi untuk memberikan hasil query yang diinginkan. Contoh : cari dari semua peserta yang telah pensiun dan tampilkan nama dan tanggal kejadian, notsp diambil dari gabungan Tabel 4 (pmk_ke1) dan Tabel 5 (pensiun). Mula-mula akan menggunakan operasi Cartesian Product tabel pensiun yang menyimpan data nama dan nopen kemudian dari tabel pmk_ke1 yang menyimpan data notsp, kemudian menyeleksi yang sesuai dengan kriteria yang diminta yaitu no_tsp dari Tabel 4 yaitu tabel pmk_ke1 dan Tabel 5 yaitu tabel pensiun Π nama,notsp,tgl_kej (σ PMK.nopen=Pensiun.nopen (pmk_ke1 X pensiun)) Bentuk di atas dapat disederhanakan dengan operasi natural join yang menggabungkan operasi cartesian product dan operasi seleksi dengan menggunakan simbol, operasi natural join membentuk sebuah cartesian product dari kedua argumennya, lalu menetapkan sebuah seleksi untuk baris-baris data yang memiliki kesamaan nilai untuk atribut-atribut yang muncul di kedua
27 12 argumennya dan akhirnya mengabaikan data-data duplikat dan perintahnya sebagai beikut : Π nama,notsp,tgl_kej (pmk_ke1 pensiun)) Secara formal, jika S 1 memiliki himpunan atribut s dan R 1 memiliki himpunan atribut r, maka dapat didefinisikan : S 1 R 1 =Π s r (σ s1.a1=r1.a2 s1.a1=r1.a2... s1.an=r1.an (S 1 X R 1 ) Dimana s = domain atribut dari S 1 r = domain atribut dari R 1 s r = { a1, a2, a3,, an } Jika tidak ada atribut yang sama di kedua ekspresi S 1 dan R 1 atau s r =0, maka : S 1 R 1 = S 1 X R Operasi Himpunan Operasi Himpunan yang digunakan adalah Union, Intersection dan Difference Union (R S) Operasi ini untuk menggabungkan data dari dua kelompok baris data (row) yang sejenis (memiliki hasil proyeksi yang sama) Simbol dari operasi ini adalah : R S Atribut notsp terdapat pada Tabel 5 (pensiun) dan Tabel 4 (pmk_ke1), sehingga notsp pada kedua tabel tersebut dapat diproyeksikan dengan operasi Union : Π tglkej (pensiun) Π tglkej (pmk_ke1) Pada operasi Union R S terdapat dua syarat yang dipenuhi yaitu : 1) S dan R harus memiliki jumlah atribut yang sama. 2) Domain dari atribut ke i dari S dan atribut ke i dari R haruslah sama, dan harus berlaku untuk semua atribut di S dan R
28 Intersection (R S) Operasi Intersection digunakan untuk menyatakan atau mendapatkan irisan (kesamaan anggota) dari dua buah kelompok data dari suatu tabel atau hasil query. Tata penulisannya adalah (R S) yang ekivalen dengan penggunaan operasi dasar Set-Difference S ( S R ). Contoh untuk mendapatkan notsp mana saja yang sama-sama dipunyai, baik dari Tabel 2 (peserta) maupun Tabel 4 (pmk_ke1), query tersebut dapat dipenuhi dengan operasi Π notsp (Peserta) Π notsp (pmk_ke1) Difference (R - S) Operasi difference merupakan pengurangan data di tabel/hasil proyeksi pertama R oleh data/hasil proyeksi yang kedua S Simbolnya adalah : R S Ketentuannya sama dengan operasi Union yaitu harus mempunyai jumlah atribut yang sama baik di S maupun di R, contoh : Π tglkej (pensiun) Π tglkej (pmk_ke1) 2.3. Proses Query Dalam Database Manajemen System (DBMS) akses data dapat dilakukan dengan berbagai macam cara. Ada banyak plan (rencana) yang dapat diikuti oleh DBMS dalam memproses dan menghasilkan jawaban sebuah query. Semua rencana pada akhirnya akan menghasilkan jawaban (output) yang sama tetapi pasti mempunyai biaya yang berbeda-beda. Kebanyakan aplikasi secara nyata adalah permintaan-permintaan secara langsung dari user yang memerlukan informasi tentang bentuk maupun isi dari basis data. Apabila permintaan user terbatas pada sekumpulan query-query standar, maka query-query tersebut dapat dioptimisasi secara manual oleh pemrograman. Tetapi bagaimanapun juga, sebuah sistem optimisasi query otomatis menjadi penting apabila query-query khusus dinyatakan dengan
29 14 menggunakan bahasa query yang digunakan secara umum seperti Structure Query Language (SQL). Optimisasi query memberikan suatu pemecahan untuk menangani masalah dengan cara menggabungkan sejumlah besar teknik-teknik dan strategi, yang meliputi transformasi-transformasi logika dari query-query pada sistem file penyimpanan data. Setelah ditransformasikan, sebuah query dipetakan ke dalam sebuah langkah-langkah operasi untuk menghasilkan data-data yang diminta. Query Language (SQL) SCANNER ( Mengecek sintaks SQL keyword ) PARSER ( Mengecek sintaks SQL keyword ) Menghasilkan parse tree QUERY OPTIMIZER ( Mengecek sintaks SQL keyword ) Menghasilkan Query plan CODE GENERATOR / INTERPRETER QUERY PROCESSOR (Eksekusi Query) Menghasilkan kode Query Hasil Query Gambar 3. Tahapan proses sebuah Query (Swamy 2001)
30 15 Sebuah query yang diekspresikan dalam sebuah bahasa query tingkat tinggi seperti SQL mula-mula harus dibaca, diuraikan dan disahkan (scanning, parsing, validating). Query tersebut kemudian dibentuk menjadi sebuah struktur data yang biasa disebut dengan query tree. Kemudian DBMS merencanakan sebuah strategi eksekusi untuk mendapatkan kembali hasil dari query dari file-file basis data. Tahapan-tahapan proses dari sebuah query didalam sebuah sistem basis data ditunjukkan pada Gambar 3 dan berikut penjelasan dari masing-masing tahapan : Scanner melakukan identifikasi (pengenalan) perintah-perintah seperti SQL keywords, atribut, dan relation name. Proses ini disebut dengan scanning. Query Parser mengecek validitas query dan kemudian menterjemahkannya dalam bentuk internal yaitu ekspresi relasi aljabar atau parse tree proses ini disebut dengan parsing. Query Optimizer memeriksa semua ekspresi-ekspresi aljabar yang sama untuk query yang diberikan dan memilih salah satu dari ekspresi tersebut yang terbaik yang memiliki perkiraan paling murah. Dengan kata lain, tugas dari query optimizer adalah menghasilkan sebuah rencana eksekusi dan proses ini disebut optimisasi query. Code Generator atau Interpreter mentransformasikan rencana akses yang dihasilkan oleh optimizer ke dalam kode-kode. Setelah itu, kode-kode tersebut dikirimkan ke dalam query processor untuk dijalankan. Query Processor melakukan eksekusi query untuk mendapatkan hasil query yang diinginkan. Bagian yang diarsir pada Gambar 3 adalah optimizer yang sudah disediakan oleh DBMS. Tahapan proses query pada Gambar 3 tersebut adalah untuk memberikan gambaran yang jelas tentang bagaimana pada umumnya sebuah query diproses di dalam sebuah Data Base Manajemen Sistem.
31 Optimisasi Query Optimisasi Query adalah suatu proses untuk menganalisis query untuk menentukan sumber-sumber apa saja yang digunakan oleh query tersebut dan apakah penggunaan dari sumber tersebut dapat dikurangi tanpa merubah keluaran. Atau dengan kata lain bahwa optimisasi query adalah sebuah prosedur untuk meningkatkan strategi evaluasi dari suatu query untuk membuat evaluasi tersebut menjadi lebih efektif (Richard 2000) Prinsip Optimisasi Query Prinsip Optimisasi Query terdapat dalam pemilihan strategi query, dan terletak pada penentuan strategi operasi Join. Bahasa query salah satu yang biasa digunakan, misalnya SQL, tetapi untuk beberapa kasus khusus, suatu query dapat mempunyai hubungan dengan pemetaan aljabar. Bentuk yang lebih sederhana sangat diperlukan dari pada bentuk-bentuk aljabar tersebut, dan diasumsikan bahwa operasi gabungan adalah salah satu operasi relasi aljabar ( Ken 2000). Menurut Richard Vlach (2000), optimisasi query dalam basis data terdistribusi, ada dua aspek yang sangat penting, yaitu : 1. Tranmisi data dan kontrol data ke tempat tujuan sangat dipengaruhi oleh bentuk komunikasi, dan dapat memperlambat keseluruhan proses. 2. Pengolahan data secara paralel transmisi data dapat mempercepat respone Optimisasi Query adalah proses untuk menunjukkan bahwa baik total biaya maupun total waktu suatu query diminimalkan. Total biaya diukur oleh penggunaan sumber daya sistem seperti CPU atau bentuk komunikasi data. Respone time optimizers yaitu untuk meminimalkan respone time dalam sebuah query bersama-sama secara paralel.
32 17 Menurut Özsu MT, Valduriez P. (1999 ) formulasi untuk meminimalkan biaya (cost function) adalah : Total Cost = I/O cost + CPU cost + communication cost... (2.1) Dimana I/O cost = unit disk I/O cost + no. of disk I/Os CPU cost = unit instruction cost + no. of instruction Communicatin cost = message initiation + transmition Formula (2.1) masing-masing bagiannya dapat mempunyai bobot yang berbeda tergantung dari terdistribusinya data, antara lain : - Apabila proses query menggunakan Wide Area Networks (WAN), maka biaya komunikasi sangat dipengaruhi low bandwidth, low speed dan high protocol overhead. Sedangkan algoritma-algoritma yang ada pada umumnya mengabaikan komponen biaya. - Apabila menggunakan Local Area Networks (LAN), biaya komunikasi dan pengiriman data tidak mempengaruhi, tetapi total biaya dari fungsi-fungsi yang digunakan harus dipertimbangkan Metoda Optimisasi Query Biaya query sangat dipengaruhi oleh dua hal, yaitu proses secara lokal dan transmisi data antar lokasi, karena berkaitan dengan fungsi biaya. Proses perhitungan diperlukan untuk menghasilkan biaya query yang akurat secara parsial. Karakteristik relasi secara lokal harus diketahui dalam optimisasi waktu. Beberapa diantaranya adalah kardinalitas dari relasi secara lokal, banyaknya byte dalam nilai atribut, dan nilai selectivity factor yang terdapat dalam relasi diperlukan. Optimisasi proses pengolahan data secara global dengan cara menggunakan metoda secara lokal, dalam pelaksanaannya adalah mengoperasikan atas kedua proses, yaitu memproses data lokal dan memproses data secara lokal yang datang dari lokasi lain. Besar biaya untuk optimisasi lokal pada umumnya didasarkan pada banyaknya akses dari memori sekunder, ukuran buffers dan ukuran operand. Data yang akan dioperasikan secara lokal dan tambahan struktur data lokal seperti indek, hash tabel akan dapat mempercepat proses secara lokal.
33 18 Operasi join adalah operasi yang sangat mahal. Dan diketahui bahwa metoda operasi join secara lokal adalah : nested-loops, sort-merge dan hash join. Walaupun ada metoda optimisasi query global yang mempertimbangkan proses lokal, ongkos proses secara lokal pada umumnya dapat diabaikan jika dibandingkan dengan ongkos transmisi data. Selama transmisi data dioptimisasi, jelas asumsinya bahwa nilai waktu selama transmisi bergantung pada jumlah data yang dialirkan. Perhitungkan respone time yang minimal, optimisasi global memanfaatkannya secara paralel dan mencoba untuk memperkecil transmisi pada alur yang paling buruk. Operasi secara lokal yang membatasi relasi lokal harus dieksekusi secepat mungkin. Kemudian, utamakan pada optimisasi pada berbagai operasi join. Metoda optimisasi secara dinamis dapat memilah perencanaan ekseskusi query pada tahapan eksekusi. Pada awalnya rencana eksekusi didasarkan pada penilaian hasil secara parsial. Perubahan selama tahap eksekusi didasarkan pada ukuran secara parsial dan perubahan mengarahkan pada sisa query yang akan diproses. (Richard 2000) Optimisasi Query Basis Formula Optimisasi basis formula (Rule Based) biasa juga disebut heuristic optimization adalah optimisasi query dengan menggunakan aturan-aturan heuristic dan dijalankan pada rencana query secara logika yang terdiri dari urutan operasioperasi relasional yang biasanya digambarkan sebagai query tree Optimisasi Query Basis Biaya Dalam optimisasi basis biaya dapat digunakan solution space dan cost function yaitu dengan total time atau total cost. Hal ini dapat mereduksi setiap biaya ( dalam setiap termin waktu ) semua komponen satu persatu kemudian melakukan proses optimisasi untuk setiap utilitas dari setiap sumber-sumber daya sehingga meningkatkan kinerja sistem. Faktor-faktor yang terdapat dalam total cost yang ditunjukkan oleh persamaan (2.1) menghasilkan total cost factor dan tergantung dari arsitektur jaringan yang digunakan. Untuk penggunaan Wide Area Network dipengaruhi
34 19 oleh inisiasi pesan dan transmisi cost sangat tinggi, dan biaya pemrosesan secara lokal lambat (kecuali untuk mainframe dan mini komputer). Demikian juga rasio dari komunikasi ke I/O costs adalah = 20 : 1, tetapi untuk penggunaan Local Area Network komunikasi dan proses secara lokal biayanya lebih sedikit dengan rasio dari komunikasi ke I/O costs = 1 : 1,6 ( Valduriez P. 1999). Dalam menghitung Respone time dapat mengerjakan hal-hal yang mungkin secara paralel sehingga dapat meningkatkan total time karena meningkatnya total aktifitas, dan berdasarkan rumus (2.1) Respone time = CPU time + I/O time + communication time... (2.2) Dimana CPU time = unit instruction time * no. of sequential instruction I/O time = Unit I/O time * no.of sequential I/Os Communication time = unit msg initiation time + no.of sequential msg + unit transmition time * no.of sequential bytes Fungsi Biaya dari Statistik Basis data Untuk melihat cost factor yang utama dalam statistik basis data menurut (Valduriez P. 1999), ukuran relasi dari basis data memiliki nilai selectivity factor untuk setiap relasi dalam setiap operasi, yaitu : 1. Operasi joins card(r S) SF (R,S) = (2.3) card(r)*card(s) 2. Operasi Selection size(r) = card(r)*length... (2.4) card(σ F (R)) = SF σ (F) *card(r)... (2.5) dimana 1 S F σ (A = value) = (2.6) card( A (R))
35 20 max(a) value S F σ (A > value) = (2.7) max(a) min(a) value max(a) S F σ (A < value) = (2.8) max(a) min(a) SF σ (p(a i ) p(a j )) = SF σ (p(a i )) *SF σ (p(a j )... (2.9) SF σ (p(a i ) (p(a j )) = SF σ (p(a i )) + SF σ (p(a j )) (SF σ (p(a i )) *SF σ (p(a j )))... (2.10) SF σ (A value) = SF σ (A= value) * card(value)... (2.11) 3. Projection card(π A (R))=card(R)... (2.12) 4. Cartesian Product card(r S) = card(r).card(s)... (2.13) 5. Union Batas atas: card(r S) = card(r) + card(s)... (2.14) Batas Bawah: card(r S) = max{card(r), card(s)}... (2.15) 6. Set Difference Batas atas: card(r S) = card(r)... (2.16) Batas bawah: 0... (2.17) 7. Join Dalam kasus khusus: A adalah primary key dari R dan B adalah foreign key dari S; card(r A=B S) = card(s)... (2.18) Lebih umum: card(r S) = SF.card(R) *card(s)... (2.19)
36 Optimizer DBMS MySQL MySQL melakukan optimisasi melalui fasilitas query optimizer. Query optimizer secara rutin memeriksa dan melakukan transformasi semua ekspresiekspresi aljabar yang sama dan memilih salah satu dari ekspresi yang terbaik dan memiliki perkiraan paling murah dengan menggunakan fungsi optimize() dari optimizer MySQL dan secara rutin diaplikasikan pada semua tipe query MySQL AB ). MySQL Optimizer melakukan proses optimisasi menggunakan 5 langkah, yaitu : 1. Menentukan tipe join. Sistem menetapkan tabel yang akan dibaca dalam join, kemudian menetapkan primary index secara berurutan dalam equality relation dengan nilai indek tidak null, menetapkan jangkauan dari indek dan membaca seluruh tabel menurut indek secara berurutan. 2. Menentukan metode akses dan join Metode akses dan join dilakukan dengan Query Execution Plan (QEP) dan mencari rencana yang terbaik dengan menggunakan prosedur find_best() dari MySQL Optimizer. 3. Menentukan rentang indek dari tipe join Tipe join dalam tabel diberi rentang indek agar optimizer dengan mudah mengambil data dari tabel yang berada dalan rentang indek. 4. Menentukan indek dari tipe join Tipe join dalam tabel diberi indek, agar optimizer dengan mudah mengambil data berdasarkan indek. 5. Menentukan indek dari tipe merge join Indek merge join digunakan bilamana kondisi atribut join dalam tabel dapat dibentuk kedalam beberapa kondisi indek yang terdiri dari cond_1 OR cond_2... OR cond_n. Jika cond_1 OR cond_j, dan dapat digabung menjadi satu rentang yang sama, maka diberikan satu rentang indek, hal ini dilakukan untuk menghindari dan mengeliminasi duplikasi data.
37 BAB III METODOLOGI DAN RANCANGAN PENELITIAN 3.1. Metodologi Penelitian Sejak tahun 1960 an penelitian-penelitian tentang basis data sudah dimulai dan dikembangkan sesuai kebutuhan, terutama dengan menggunakan metode kuantitatif, namun perkembangan software dan hardware terus-menerus berkembang ke arah otonomi komputasi sehingga metode penelitian-penelitian dikembangkan kepada metode kualitatif atau gabungan dari metode tersebut yang diarahkan kepada komputasi tersdistribusi. Materi dan bahan penelitian dikumpulkan dari internet dan buku-buku teks pustaka. Informasi dari internet yang digunakan adalah jurnal atau paper penelitian-penelitian sejenis yang membahas permasalahan basis data terdistribusi atau permasalahan-permasalahan yang berhubungan dengan optimisasi query. Sumber utama data penelitian yang akan diolah adalah tabel-tabel relasi dari peserta asuransi PT. Taspen berlandaskan pada jumlah record dengan jumlah data terkecil 1,2 juta record dan terbesar 3,8 juta record. Diasumsikan jumlah data cukup besar memenuhi syarat untuk diteliti, karena penelitian-penelitian yang banyak dilakukan masih dalam kapasitas puluhan ribu record. Penelitian tidak melihat bentuk dan isi tabel, sehingga update tabel kepada isi tabel yang mutakhir tidak dilakukan. Pada saat bersamaan, dikumpulkan berbagai informasi mengenai data yang dapat diakses oleh user dari tabel-tabel tersebut. Kemudian dianalisa proses penggunaan tabel-tabel tersebut yang terkait dengan proses optimisasi. Data-data dan informasi yang telah dikumpulkan kemudian dikompilasi untuk melakukan percobaan. Perintah-perintah query yang diuji coba adalah perintahperintah query untuk melakukan join sesuai kebutuhan. Penelitian juga dilakukan untuk mencari solusi yang terbaik atau mencari signifikansi optimisasi query dengan sumber-sumber hardware dan software yang digunakan. Penelitian fokus kepada karaktersitik basis data secara spesifik dengan jumlah record disesuaikan pada sumber hardware dan software yang digunakan dalam percobaan, dengan harapan dapat menghasilkan rancangan optimisasi query yang optimal.
38 Sistematika Penelitian dan Pembahasan Pada dasarnya tesis ini membahas empat bagian yaitu : Bagian pertama menggambarkan tentang perkembangan basis data terdistribusi, yang mungkin saat ini terdapat pada perusahaan-perusahaan besar dan mempunyai banyak cabang di beberapa tempat dan menjelaskan kemungkinan permasalahan yang akan timbul dalam proses transaksi-transaksi antar perusahaan yang melibatkan join query. Bagian kedua mencoba memberikan gambaran tentang konsep basis data terdistribusi dengan segala sumber-sumbernya, membahas teori-teori aljabar relasional yang digunakan dalam analisis teori optimisasi query mencakup : Select, Project, Cartesian-Product, Union, Set-Difference. Bagian ketiga menjelaskan langkah-langkah yang dilakukan dalam penelitian awal dan kajian teoritis, kemudian menjelaskan langkah-langkah penelitian dalam mengkaji perkembangan optimisasi query, berikutnya menjelaskan langkah-langkah menganalisis dengan implementasi menggunakan formula-formula untuk mengevaluasi optimisasi query. Bagian keempat membahas tentang formulasi masalah dan penentuan tujuan, kemudian bagaimana menganalisis algoritma dari metode-metode Nested- Loops-Join, Block Nested-Loops-Join, Sort-Merge-Join dan Hash Join yang merupakan fasilitas dari DBMS, berikutnya menjelaskan perhitungan biaya query dari algoritma tersebut secara teoritis yang didukung percobaan. Bagian kelima membahas percobaan yang dilakukan dalam mengeksekusi perintah-perintah query, menggambarkan hasilnya berupa tabel-tabel yang diilustrasikan pada grafik-grafik hasil eksekusi dan dijadikan bahan kajian untuk menganalisis optimisasi query hasil implementasi.
39 Tahapan Proses Penelitian Tahapan penelitian untuk proses optimisasi query adalah urutan langkah yang harus dikerjakan dalam melakukan optimisasi sebuah proses query. Tahapan proses penelitian tersebut secara umum dijelaskan dalam Tabel 7. PROSES PENELITIAN Tabel 7 : Tahapan proses penelitian BAHASAN MATERI Persiapan - Pengumpulan materi dan bahan - Penyusunan proposal - Pengumpulan data penelitian Pelaksanaan Penelitian awal dan kajian teoritis * formulasi masalah dan penentuan tujuan * penentuan kebutuhan penelitian * kajian-kajian perintah query yang dapat dilaksanakan dalam kasus yang dibahas * pendefinisian model dalam representasi query dalam bentuk aljabar relasional Studi intensif * me-review perkembangan penelitian-penelitian tentang optimisasi query * studi tentang optimisasi query terdistribusi Studi implementatif * mengkonversi perintah query, dengan menggunakan cartesian product dari klausa FROM, menggabungkan dan memilih kondisi-kondisi dari klausa WHERE dari proyeksi-proyeksi klausa SELECT * membagi nilai-nilai penyimpanan data dari record-record untuk memilih satu atau lebih caloncalon prosedur untuk diimplementasikan dalam query. * menghasilkan rencana-rencana query SUMBER REFERENSI Studi kepustakaan dan akses internet Studi kepustakaan dan akses internet Akses internet Studi kepustakaan
40 PROSES PENELITIAN Pelaksanaan Penyelesaian BAHASAN MATERI * mencari signifikansi optimisasi query berdasarkan biaya yang disetarakan dengan waktu runtime dilihat dari karakteristik basis data Pengembangan formulasi otpimisasi * penentuan optimisasi secara spesifik * penentuan formulasi biaya * penentuan karakteristik statistik basis data yang dikaji * penentuan signifikansi optimisasi query yang dilakukan Pengujian dan evaluasi * analisis kajian signifikansi optimisasi query berdasarkan biaya, dilihat dari karakteristik basis data secara spesifik - Penyusunan laporan - Dokumentasi 25 SUMBER REFERENSI Studi kepustakaan Studi kepustakaan Studi kepustakaan dan Percobaan Tahapan-tahapan proses penelitian tersebut diuraikan pada bagan alir Gambar 4 berikut.
41 26 PERSIAPAN Mulai - Pengumpulan materi dan bahan - Pengumpulan data awal penelitian - Penyusunan proposal Tidak Studi implementatif * mengkonversikan perintah query dengan menggunakan cartesian product dari klausa FROM, menggabungkan dan memilih kondisi-kondisi dari klausa WHERE dari proyeksi- proyeksi klausa SELECT * membagi nilai-nilai penyimpanan data dari record- record untuk memilih satu atau lebih calon-calon prosedur untuk diimplementasikan dalam query. * menghasilkan rencana-rencana query * mencari signifikansi optimisasi query berdasarkan biaya, dilihat dari karakteristik basis data secara spesifik PELAKSANAAN Proposal disetujui? Ya Penelitian awal dan kajian teoritis * formulasi masalah dan penentuan tujuan * penentuan kebutuhan penelitian * kajian-kajian perintah query yang dilaksanakan dalam kasus yang dibahas * pendefinisian model dalam representasi query dalam bentuk aljabar relasional Pengembangan formulasi otpimisasi * penentuan optimisasi secara parsial * penentuan formulasi biaya * penentuan karakteristik statistik basis data yang dikaji * penentuan signifikansi optimisasi query yang dilakukan Tidak Hasil query Signifikan? Pengujian dan evaluasi * analisis kajian signifikansi optimisasi query berdasarkan biaya, dilihat dari karakteristik basis data spesifik Ya Studi intensif * me-review perkembangan penelitian-penelitian tentang optimisasi query * studi tentang optimisasi query terdistribusi * studi tentang signifikansi optimisasi query Penyelesaian - Penyusunan laporan - Dokumentasi PENYELESAIAN Selesai Gambar 4 : Bagan alir proses penelitian.
42 BAB IV HASIL DAN PEMBAHASAN 4.1. Formulasi Masalah dan Penentuan Tujuan. Dalam bagian ini dibahas tentang formulasi masalah dan penentuan tujuan yang akan dicapai, diperlukan tahapan-tahapan analisis yang akan timbul selama proses optimisasi query dijalankan. Aspek utama pemilihan strategi query untuk sistem basis data terdistribusi terletak dalam penentuan strategi operasi join. Strategi operasi join dapat menggunakan fasilitas optimizer yang terdapat dalam DBMS, antara lain : Metode Nested-Loops-Join, Block Nested-Loops-Join, Sort-Merge-Join dan Hash Join. Tetapi tidak semua DBMS dapat melakukan strategi dengan metode-metode tersebut. Dalam penelitian ini penulis mencoba membahas secara spesifik optimisasi join query sesuai dengan karakteristik basis data dan spesifikasi komputer yang digunakan. Untuk memformulasi masalah terdapat beberapa faktor yang harus dipertimbangkan dalam sistem terdistribusi, antara lain : Biaya / waktu untuk transmisi data dan biaya operasi join. Potensi peningkatan unjuk kerja karena adanya sejumlah simpul yang dapat melaksanakan query secara paralel. Karakteristik basis data. Biaya / waktu transfer data dalam jaringan dan transfer data ke dan dari disk, sangat berbeda-beda tergantung pada tipe jaringan yang dipilih dan kecepatan akses dari disk yang digunakan. Sementara unjuk kerjanya akan sangat tergantung pada desain basis data terdistribusi yang kita terapkan serta strategi DBMS dalam melakukan transformasi setiap perintah query. Ambil sebuah contoh perintah query sederhana, tampilkan semua baris data dalam tabel pst_ke1. Pemrosesan query tersebut menjadi tidak sederhana, jika tabel tersebut telah direplikasi atau difragmentasi atau sekaligus direplikasi dan difragmentasi. Jika tabel pst_ke1 tersebut ternyata telah direplikasi, maka dapat dengan mudah untuk memenuhi query tersebut dengan memilih salah satu simpul tempat tabel pst_ke1 berada, dan kemudian mengeksekusi query. Jika
43 28 tabel tersebut tidak difragmentasi, pemilihan simpul didasarkan pada simpul yang memberikan ongkos transmisi data paling rendah. Akan tetapi jika tabel pst_ke1 tersebut difragmentasi dan ditempatkan di berbagai simpul yang berbeda, maka harus melakukan operasi join atau union untuk merekontruksi isi seluruh tabel pst_ke1. Penerapan operasi di atas disamping tergantung pada bentuk perintah query, tergantung pada jenis fragmentasi yang diterapkan pada tabel terlibat. Jika tabel pst_ke1 telah difragmentasi horizontal, perlu rekonstruksi dengan menggunakan operasi union, tetapi jika fragmentasi dilakukan vertikal, maka rekonstruksi operasi natural join yang harus digunakan. Dalam berbagai kasus dan berbagai keadaan banyak pilihan strategi dan metode yang harus dipetimbangkan, tetapi besar kemungkinan akan memperberat upaya optimisasi query yang kadang-kadang menjadi tidak praktis untuk diterapkan. Percobaan dilakukan untuk menganalisis permasalahan menggunakan tabel peserta asuransi, dengan tabel hasil fragmentasi dari peserta didekomposisi (spesialisasi) menjadi tabel pst_ke1 dan tabel pstaktif, tabel peserta pensiun (pstpens) didekomposisi menjadi tabel pmk_ke1 dan tabel pmk_fd1. Tabel-tabel yang digunakan dalam percobaan hanya menggunakan 5 buah tabel yang terdiri dari tabel pstaktif, pst_ke1, pstpens, pmk_ke1 dan pmk_fd1. Hal ini dilakukan dengan pertimbangan efisiensi ruang penyimpanan. Untuk lebih jelasnya situasi tabel secara keseluruhan dapat dilihat pada kamus data di bawah ini dan Diagram E-R ditunjukkan pada Gambar 5. Kamus data dari 5 buah tabel yang dianalisis antara lain : a. pst_ke1 ( no_tsp, tgl_lhr, tmt_pst, kd_bup) b. pstaktif ( nippa, tgl_lhr, tmt_pst, sex, gaji_pokok, blth_gapok, suskel, pangkat) c. pmk_ke1 ( no_tsp, tmt_pst, tglhr_ymk, tgl_kej, kd_kej,) d. pmk_fd1 ( nippa, tmt_pst, kd_kej, tgl_klim, tgl_trans, pangkat, gaji_pokok, thp, suskel, nama_ymk, tglhr_ymk, rp_hak) e. pstpens ( nopen, jenis, kp030, kp040, kp080, kp180, kp380, kp570, kp550, kp710).
44 29 Nama Tabel (Alias) Tabel 8 : Tabel informasi data tabel relasi Jumlah Atribut Jumlah Record Kapasitas memory (MB) Panjang Record (Byte) pst_ke1 ( P ) no_tsp pstaktif ( F ) nippa pmk_ke1 ( E ) no_tsp pmk_fd1 ( D ) nippa pstpens ( N ) nopen Key peserta o d pst_ke1 pstaktif peserta pensiun (pstpens) Keterangan : d : disjoint o o : non disjoint : subset Pmk_ke1 Pmk_fd1 Gambar 5 : Diagram E-R dari keseluruhan tabel peserta
45 30 Tanda d dalam konektor lingkaran menunjukkan dekomposisi (spesialisasi) disjoint dan tidak terdapat relasi spesialisasi antar tabel, dan tanda o menunjukkan non disjoint dan terdapat relasi spesialisasi antar tabel dan menunjukkan perbedaan tiap entitas, tanda С menunjukkan subset (Begg C. 1996). 5 buah tabel yang digunakan dalam percobaan lebih dijelaskan pada Diagram E-R Gambar 6 dan Gambar 7. nama_peserta no_tsp alamat_peserta peserta no_tsp tgl_lhr sex gapok o pst_ke1 pstaktif tmt_pst kd_bup blth_gapok suskel pangkat Gambar 6 : Diagram E-R tabel peserta spesialisasi menjadi tabel pst_ke1 dan tabel pstaktif.
46 31 kp040 kp080 kp180 kp570 jenis pstpens kp550 nopen kp710 no_tsp tmt_pst o tgl_klim tgl_trans pmk_ke1 pmk_fd1 tglhr_ymk tgl_kej kd_kej rp_hak tglhr_ymk pangkat gapok nama_ymk thp suskel Gambar 7 : Diagram E-R tabel pensiun (pstpens) spesialisasi menjadi tabel pmk_ke1 dan tabel pmk_fd Formulasi Optimisasi Query.
47 32 Pada bagian ini bagaimana proses query diformulasi, dianalisis dan dievaluasi. Data deskriptif atau metadata disimpan dalam tabel khusus yang disebut katalog sistem yang digunakan untuk menemukan cara terbaik dalam mengevaluasi query. Secara umum query tersusun dari beberapa operator, algoritma pada operator relasi dapat dikombinasikan dengan berbagai cara untuk mengevaluasi query. Setiap perintah query sebaiknya dievaluasi dengan melalui formulasi tree aljabar relasional. Keterangan pada masing-masing node menggambarkan metode akses untuk masing-masing tabel dan metode implementasi untuk tiap operator relasional. Penulis mencoba mempertimbangkan contoh dengan menggunakan skema berikut : a. pst_ke1 (no_tsp, tgl_lhr, tmt_pst, kd_bup) b. pstaktif (nippa, tgl_lhr, tmt_pst, sex, gaji_pokok, blth_gapok, suskel, pangkat) Tabel di atas masing-masing record dari pst_ke1 panjangnya 30 byte, dengan asumsi sebuah halaman yang akan masuk dalam buffer dapat menangani 100 record pst_ke1, maka dalam pst_ke1 terdapat record akan mempunyai halaman dalam buffer, demikian juga bahwa masing-masing record dari pstaktif panjangnya 50 byte, mempunyai record, sebuah halaman dapat menangani 80 record pstaktif, sehingga mempunyai halaman. Perhatikan query SQL berikut ini : SELECT FROM WHERE F. tmt_pst pst_ke1 P, pstaktif F P.no_tsp = F.nippa AND P. kd_bup= 100 AND F. pangkat >= 3A Query di atas dapat dinyatakan dalam aljabar relasional seperti berikut : Π tmt_pst (σ kd_bup = 100 pangkat >= 3A (pst_ke1 no_tsp= nippa pstaktif)
48 33 Pernyataan di atas dapat dinyatakan dalam bentuk join tree pada Gambar 8. Sebagian pernyataan aljabar dapat menentukan bagaimana mengevaluasi query pertama, join dihitung secara alami dari pst_ke1 dan pstaktif, kemudian melakukan seleksi dan akhirnya memproyeksikan atribut tmt_pst. Untuk proses evaluasi harus dijelaskan implementasi untuk masing-masing operasi aljabar yang terlibat. Sebagai contoh dapat digunakan page-oriented dari nested-loop-join yang sederhana dengan pst_ke1 sebagai tabel pertama yang dibaca, dan mengaplikasikan seleksi dan proyeksi untuk masing-masing record pada hasil join, hasil dari join tersebut sebelum seleksi dan proyeksi tidak disimpan seluruhnya. Π tmt_pst (proyeksi) σ kd_bup = 100 pangkat >= 3A (proses seleksi) no_tsp = nippa (proses join) (baca file) pst_ke1 pstaktif (baca file) Gambar 8 : Rencana evaluasi query dari join tree Pada Gambar 8 ditunjukkan bahwa pst_ke1 adalah tabel pertama dibaca, terletak disebelah kiri dari join tree atau disebut tabel luar dari operator join.
49 34 Mendahulukan operasi seleksi sebelum operasi join Untuk melakukan operasi Join secara heuristik sebaiknya tabel dibuat dengan ukuran sekecil mungkin, dan operasi seleksi dilakukan lebih awal. Sebagai contoh seleksi kd_bup = 100 hanya melibatkan atribut dari pst_ke1 dan dapat diaplikasikan pada pst_ke1 sebelum join. Sama halnya dengan seleksi pangkat >= 3A hanya melibatkan atribut dari pstaktif, dapat diaplikasikan pada pstaktif sebelum join. Andaikan bahwa seleksi didahulukan dengan menggunakan scan file, hasil dari masing-masing seleksi ditulis ke tabel temporer pada disk, selanjutnya tabel temporer digabung menggunakan metode sort-merge-join seperti ditunjukkan pada Gambar 9. Hasil eksekusi menunjukkan perbedaan waktu yang cukup signifikan, untuk jumlah record masing-masing record eksekusi medahulukan seleksi lebih cepat dari pada eksekusi mendahulukan join. Penurunan waktu eksekusi mencapai 37,45 % Π tmt_pst (proyeksi akhir) (lakukan Sort-Merge-Join) no_tsp = nippa kd_bup = 100 pangkat >= 3A (baca : tulis ke tabel temp T 1 ) (baca : tulis ke tabel Temp T 2 ) (baca file) pst_ke1 pstaktif (baca file) Gambar 9: Rencana evaluasi query mendahulukan operasi seleksi
50 Analisis Selectivity Factor dari Karakteristik Basis Data. Dalam hal ini penulis mengemukakan statistik basis data sesuai dengan karateristiknya, yaitu relasi yang digunakan berupa tabel basis data dengan nilai kardinalitas cukup besar. Statistik basis data dengan operasi Join untuk tabel relasi difragmentasi dengan jumlah record per tabel pada tabel (pst_ke1 dan pstaktif, serta pmk_ke1 dan pmk_fd1), berdasarkan persamaan (2.3) adalah: card( P F ) card(p no_tsp=nippa F) = card(f) a. SF 1 (P, F) = = card( P ) * card( F ) card( P ) * card( F ) 283 = = 0, ,000 * 10,000 card( E D ) b. SF 1 (E, D) = card( E ) * card( D ) card(e no_tsp=nippa D) = card( E ) * card( D ) 240 = * = 0, Untuk Selectivity Factor operasi Selection berdasarkan persamaan (2.4) adalah : card(σ F (R)) = SF σ (F) *card(r) dimana
51 36 1 S F σ (A = value) = card( A (R)) 1 1 S F σ ( kodebup = 100 =1) = = = 0, card( kodebup (P)) 9776 Dari hasil perhitungan Selectivity Factor menghasilkan angka 0, dan 0, dan 0,000102, menunjukkan bahwa operasi join dan operasi seleksi di atas cukup baik, karena nilai selectivity-nya mendekati 0, dan jumlah record tabel-tabel di atas secara spesifik tidak berpengaruh terhadap nilai selectivity factor Analisis Optimisasi Secara Spesifik. Perintah query menggunakan operator relasional sebenarnya mempunyai banyak persamaan (ekivalen). Beberapa teknik yang sederhana dapat digunakan untuk mengembangkan algoritma dari masing-masing operator yaitu : Indektasi : Jika syarat seleksi atau join telah ditentukan, maka gunakan indek untuk memeriksa record yang memenuhi syarat saja. Iterasi : Proses secara iterasi yaitu memeriksa semua record dalam tabel input satu per satu, jika kita hanya memerlukan beberapa field dari masing-masing record dan terdapat indek yang key-nya berisi semua field tersebut akan diambil. Partisi : Mempartisi record pada sort key, memungkinkan dekomposisi sebuah operasi menjadi serangkaian operasi partisi yang lebih tidak mahal. Sorting dan hashing merupakan dua teknik yang umum digunakan. Dalam menganalisis proses optimisasi secara spesifik operasi query dijalankan menggunakan algoritma dengan partisi relasi-relasi menggunakan metode-metode Nested-Loops-Join, Block-nested-loops-join, Sort-Merge-Join, dan Hash Join.
52 Penulis mencoba membahas tentang operasi join dari sebuah contoh kasus sederhana di bawah ini: 37 SELECT * FROM pst_ke1 P, pstaktif F WHERE P. no_tsp = F. nippa Gambar 10 : Contoh Perintah Join Query ini dapat dinyatakan sebagai operasi ( P F ) dan perintahnya sangat sederhana, meskipun join dapat didefinisikan sebagai cross product yang diikuti oleh seleksi dan proyeksi, join lebih sering muncul dalam praktek dibandingkan dengan cross product murni. Cross product biasanya lebih besar daripada hasil join. Dalam hal ini sangat penting untuk mengimplementasikan join tanpa menampilkan cross product. Untuk mengimplementasikan join dapat digunakan algoritma simple-nested-loops-join dan block-nested-loops-join, yang pada dasarnya menghitung semua record dalam cross product dan membuang record yang tidak memenuhi syarat join. Selanjutnya menghindari perhitungan cross product dengan menggunakan partisi. Secara intuitif jika syarat join terdiri dari equality, maka record dalam dua relasi dapat dianggap tercakup dalam partisi, sehingga hanya record yang berada dalam partisi yang sama yang dapat join satu sama lain atau record dalam partisi tersebut berisi nilai yang sama dalam kolom join. Indeks nested-loops-join men-scan salah satu relasi, untuk masingmasing record didalamnya, dengan menggunakan indeks pada kolom join dari relasi kedua untuk menemukan record yang berada dalam partisi yang sama. Jadi hanya subset relasi kedua yang dibandingkan dengan record tertentu dari relasi pertama, seluruh cross-product tidak dihitung. Penulis mencoba membahas join dari dua relasi P dan F, dengan syarat join P i = F j, menggunakan tanda posisional. Diasumsikan M halaman dalam P dengan P P ( page P) record per halaman M, dan N halaman dalam F dengan P F (page F) record per halaman dalam N, dimana P adalah tabel relasi pst_ke1 dan F adalah tabel relasi pstaktif.
53 Nested-Loops-Join Algoritma yang paling sederhana adalah record pada saat dievaluasi nested loops. Algoritma men-scan relasi P tabel relasi pertama, untuk tiap record p P, kemudian men-scan semua relasi kedua dalam F. Biaya men-scan P adalah M I/O, dimana M adalah jumlah halaman dalam P, kemudian men-scan F sebanyak P P M kali, dan tiap scanning biayanya N I/O, dimana N adalah jumlah halaman dalam F (Raghu 2003), jadi biaya totalnya adalah : M + P P.M.N...(4.1). Dimana : pp : adalah jumlah record per halaman dari M M: jumlah halaman dari relasi P N : jumlah halaman dari relasi F Algoritmanya dapat dinyatakan sebagai berikut : For each record p P do For each record f F do if p i == f j then add (p,f) to result Gambar 11 : Algoritma Simple-Nested-Loops-Join (Raghu 2003) Algoritma Simple-Nested-Loops-Join tidak memanfaatkan fasilitas buffer. Andaikan memilih P menjadi pst_ke1 dan F menjadi pstaktif, maka nilai M adalah halaman dan p P adalah 100, kemudian nilai N adalah P F adalah 80. Menurut Ramakrishna Raghu & Gehrke Johanes (2003) merujuk ke rumus (4.1.), biaya simple-nested-loops-join adalah : * * halaman I/O ditambah biaya penulisan hasil yang dalam hal ini diabaikan, maka besarnya biaya paling sedikit : * * = = halaman I/O Biaya tersebut sangat mengejutkan, apabila biaya I/O 10 ms ( setara dengan 0, detik atau 1/ jam = 0, jam ) per halaman pada perangkat keras terbaru, maka join ini akan memerlukan waktu :
54 * 0, = detik / 60 = ,216 menit ,216 / 60 = 81121,470 jam ,470 / 24 = 3380,061 hari 3.380, / 365 = 9,260 tahun Biaya tersebut sangat tidak realistik, mungkin dapat diperbaiki dengan menggunakan join-page-at-a-time. Untuk tiap halaman P, kita dapat mengambil halaman F dan mengisi record (p,f) untuk semua record yang memenuhi syarat p P halaman dan f F halaman. Atas dasar tersebut biaya M untuk men-scan P, seperti sebelumnya, akan tetapi F hanya di-scan M kali. Jadi biaya total adalah : M + M * N, maka perbaikan page-at-a-time memberikan perkembangan faktor P F. Dalam contoh join dari relasi pst_ke1 dan pstaktif, biaya dapat dikurangi, yaitu : * = halaman I/O * 0, = 4867, jam 4867, / 24 = 202,9 hari Perkembangan ini menekankan pentingnya partisi yang ditunjukkan pada operasi page-at-a-time dan dapat meminimalkan disk I/O, sehingga terjadi perubahan yang signifikan Block-Nested-Loops-Join Algoritma simple-nested-loops-join tidak memanfaatkan halaman buffer B secara efektif. Andaikan CPU mempunyai memory yang cukup untuk mempertahankan relasi P, diasumsikan paling sedikit terdapat dua halaman buffer ( B-2) ekstra yang tersisa. Kemudian menggunakan salah satu dari halaman buffer ekstra untuk men-scan relasi F. Untuk tiap record f F, memeriksa P dan menghasilkan record ( p, f ) untuk record f yang memenuhi syarat (misalnya, p i =f j ). Halaman buffer ekstra kedua digunakan sebagai buffer output. Tiap relasi hanya di scan sekali, sehingga biaya total : I/O M + N. Berikutnya mempartisi relasi P menjadi blok yang dapat masuk ke halaman buffer, kemudian men-scan semua F untuk tiap blok P. P adalah relasi
55 40 pertama, cukup di-scan sekali, dan F adalah relasi kedua dan di-scan banyak kali. Jika memori tersedia sebanyak B halaman buffer, maka P dapat masuk kedalam B-2, dan men-scan relasi dalam F dengan menggunakan satu dari dua halaman yang masih ada. Kita dapat menulis record (p, f), dimana p P blok, f F halaman, dan p i = f j dengan menggunakan halaman buffer terakhir untuk menulis output. Cara yang efisien untuk menemukan pasangan record yang cocok (misalnya record yang memenuhi syarat join p i = f j ) adalah membentuk main memory hash tabel ( yaitu tabel sementara hasil join tersimpan dalam memori utama) untuk blok P. Karena hash tabel melibatkan pertukaran ukuran blok P yang efektif, dalam hal ini jumlah record per blok dikurangi. Algoritma block-nested-loops dideskripsikan pada Gambar 12 dan penggunaan buffer dalam algoritma diilustrasikan pada Gambar 13. foreach block of B-2 pages of P do foreach page of F do { for all maching in-memory record p P block dan f F page, add (p,f) to result } Gambar 12. : Algoritma Block-nested-loops-Join (Raghu 2003) Biaya strategi ini adalah M I/O untuk membaca P (di-scan sekali), F discan sebanyak B 2 kali, ini diperlukan berkenaan dengan in-memory hash tabel (yaitu tabel yang akan dibuat sementara dalam memori utama berisi tabel M hasil join), dan biaya tiap scan N I/O. Jadi biaya totalnya adalah = M + N * M B 2... (4.2). dimana : M : Jumlah halaman pada tabel relasi pertama P N B : Jumlah halaman pada tabel relasi kedua F : Blok halaman buffer
56 41 Relasi P dan F Hasil join Fungsi hash h * * * Hash tabel untuk blok P 1 { k < B -1 halaman} *** *** Buffer Input Untuk men-scan F Buffer output Gambar 13: Penggunaan buffer Block-nested-loops-Join (Raghu 2003 ) Relasi pst_ke1 adalah relasi pertama P dan pstaktif adalah relasi kedua F. Asumsikan bahwa kita mempunyai buffer yang cukup untuk menahan in-memory hash tabel untuk 100 halaman pst_ke1, sehingga harus men-scan pst_ke1 dengan biaya I/O. Untuk tiap 100 halaman blok pst_ke1, harus di-scan pstaktif. Oleh karena itu akan menampilkan 10 halaman scan dari pstaktif, yang masingmasing biayanya adalah I/O, maka biaya totalnya adalah : * = halaman I/O jika tersedia buffer yang cukup untuk menahan 90 halaman pst_ke1, maka harus men-scan pstaktif / 90 = 430 kali, dan biaya total akan menjadi : * = halaman I/O Jika kemampuan perangkat keras I/O mempunyai kecepatan 10ms, maka total biaya di atas adalah : * 0, = 54,2 jam 542 / 24 = 2,26 hari. Hasilnya menunjukkan lebih baik dari metode nested-loops-join yang tidak memanfaatkan blok buffer.
57 Sort- Merge-Join Dasar pemikiran dari Sort-Merge-Join adalah mengurutkan kedua relasi pada atribut yang akan melakukan join, lalu mencari record yang memenuhi syarat p P dan f F, dengan menggabungkan dua relasi. Langkah pengurutan mengelompokkan semua record yang mempunyai nilai sama dalam kolom join, untuk memudahkan dalam mengidentifikasi partisi, atau grup record dengan nilai sama dalam kolom join. Sort-Merge-Join memanfaatkan partisi dengan membandingkan record P dalam partisi hanya dengan record F dalam partisi yang sama (dengan semua record F), dengan demikian dapat menghindari perhitungan cross-product P dan F. (Pendekatan secara spesifik hanya bekerja untuk syarat equality join). Jika relasi telah diurutkan berdasarkan atribut join, selanjutnya memproses penggabungan secara terperinci. Pertama scanning relasi P dan F untuk mencari record yang memenuhi syarat (misalnya, record T p dalam P dan T f, dalam F sehingga T pi =T fj ). Kedua, scanning dimulai pada record pertama dalam tiap relasi dan scan P selama record P terbaru kurang dari record F terbaru (mengacu pada nilai atribut join ). Ketiga, scan F selama record F terbaru kurang dari record P terbaru, dan memilih sampai menemukan P record T p dan F record T f dengan syarat T p i = T f j. Pada saat menemukan record T p dan T f yaitu T p i = T f j, hasilnya perlu dikeluarkan. Tetapi pada kenyataannya dapat terjadi beberapa record P dan beberapa record F mempunyai nilai yang sama. Disini mengacu pada record tersebut sebagai partisi P terbaru dan partisi F terbaru. Untuk tiap record p dalam partisi P terbaru, scan semua record f dalam partisi F terbaru yang akan menghasilkan record hasil join ( p, f ), kemudian dilanjutkan scan P dan F, mulai dengan record pertama dan mengikuti partisi yang baru diproses. Algoritma Sort-Merge-Join ditunjukkan pada Gambar 14 menetapkan nilai record pada variable T p, T f dan G f, menggunakan nilai eof untuk menandai bahwa tidak ada record lagi dalam relasi yang sedang di-scan. Subscripts mengidentifikasi field, T pi menyatakan atribut ke i dari record T p. jika T p mempunyai nilai eof, maka setiap perbandingan yang melibatkan T Pi didefinisikan
58 43 untuk mengevaluasi kondisi false, dengan syarat join yang menjadi equality pada atribut no_tsp. Relasi pst_ke1 diurutkan pada no_tsp, relasi pstaktif diurutkan pada atribut nippa. Tahap penggabungan pada algoritma sort-merge-join mulai dengan scan pada record pertama pada masing-masing relasi. Dahulukan scan pst_ke1, karena nilai no_tsp = pada pst_ke1, pada contoh segmen tabel pst_ke1 (lihat Tabel 9), kurang dari nilai nippa = pada pstaktif. Record kedua pst_ke1 mempunyai nilai , sama dengan nilai nippa record pstaktif terbaru, pada pstaktif (lihat Tabel 10). Hasil join mendapatkan sepasang record, satu dari pst_ke1 dan satu dari pstaktif, dalam partisi terbaru (berisi nippa = no_tsp = ). Karena hanya mempunyai satu record pst_ke1 dengan nilai no_tsp= dan satu record dari pstaktif, maka selanjutnya menuliskan satu record hasil pada partisi keluaran. Tahap selanjutnya pemposisikan scan pstaktif pada record pertama dengan nippa = Sama halnya dalam memposisikan scan sebelumnya, karena record kedua tersebut mempunyai nilai yang sama dengan no_tsp record ketiga yaitu ' ' dari pst_ke1, maka jika telah ditemukan partisi yang cocok, tulis lagi record yang dihasilkan oleh partisi ini pada partisi keluaran. Atribut no_tsp dan nippa sama-sama key sehingga paling banyak hanya satu record yang cocok dalam partisi. Selanjutnya scanning pada pst_ke1 diposisikan pada no_tsp= , scanning pstaktif diposisikan pada record nippa= , tahap penggabungan selanjutnya dilakukan dengan cara yang sama.
59 44 Proc smjoin( P, F, P i = F j ) if P not sorted on atribut i, sort it; if F not sorted on atribut j, sort it; T p = first record in P; // range over P T f = first record in F; // range over F G f = first record in F; // start of current F-partition while T p eof and G f eof do { while T pi < G fj do Tp = next record in P after Tp; // continue scan of P while T pi > G fj do G f = next record in F after G f ; // continue scan of F T f = G f ; // needed in case T pi G fj while T pi = = G fj do { // process current P partition T f = G f ; // reset F partition scan while T fj = T pi do { // process current P record add (T p, T f ) to result; // output joined records T f = next record in F after T f ; } // advance F partition scan T p =next record in P after T p ; // advanced scan of P } // done with current P partition Gf = Tf ; // initialize search for next F partition } Gambar 14 : Algoritma Sort-Merge-Join (Raghun 2003)
60 45 Tabel 9 : Contoh Segmen Tabel pst_ke1 NO_TSP TGL_LHR TMT_PST KD_BUP /11/ /03/ /02/ /03/ /04/ /03/ /02/ /03/ /04/ /03/ /01/ /03/ /10/ /03/ /07/ /03/ /07/ /03/ /08/ /04/ Tabel 10 : Contoh segmen Tabel pstaktif NIPPA TGL_LHR TMT_PST SEX GAJI_POKOK BLTH_GAPOK SUSKEL PANGKAT /02/ /03/1990 L C /04/ /03/1990 L B /02/ /03/1990 L B /05/ /03/1990 P B /02/ /03/1990 P B /12/ /03/1990 L A /08/ /03/1990 P B /03/ /03/1990 L B /04/ /03/1990 L B /10/ /03/1990 L C Secara umum, algoritma harus men-scan partisi record dalam relasi kedua dalam F sesering jumlah record dalam partisi yang sesuai dengan relasi pertama P
61 Biaya Sort-Merge-Join Biaya sorting P adalah O(M log M) dan biaya sorting F adalah O(N logn). Biaya dari tahap penggabungan adalah M + N jika tidak terdapat partisi F di-scan beberapa kali (atau halaman yang diperlukan ditemukan dalam buffer setelah tahap pertama). Pendekatan ini sangat menarik jika setidaknya terdapat satu relasi yang telah disortir pada atribut join atau mempunyai clustered indek pada atribut join. Perhatikan join dari relasi pst_ke1 dan pstaktif, asumsikan bahwa kita mempunyai 100 halaman buffer, kemudian dapat mengurutkan pstaktif dalam dua tahap. Tahap pertama menghasilkan 10 run tiap 100 halaman yang diurutkan secara internal. Tahap kedua menggabungkan 10 run tersebut untuk menghasilkan relasi yang disortir. Karena membaca dan menulis dalam tiap tahap biaya sortingnya adalah : 2 * 2 * = halaman I/O Sama halnya kita dapat menyortir pstaktif dalam dua tahap dengan biaya 2 * 2 * = halaman I/O Selain itu tahap kedua algoritma sort-merge-join meminta scan tambahan kedua relasi, jadi total biaya adalah : = halaman I/O. Apabila kecepatan perangkat keras 10 ms, maka : * 0, = 1, jam Hash Join Algoritma Hash join, seperti algoritma sort-merge-join, yaitu mengidentifikasi partisi dalam P dan F dalam tiap partisi dan dalam tahap equality berikutnya membandingkan record dalam partisi P hanya dengan record dalam F yang sesuai untuk menguji syarat equality join. Berbeda dengan sort-merge-join, hash join menggunakan hashing untuk mengidentifikasi partisi dalam pengurutan. Tahap partisi ini dapat disebut juga sebagai building dari hasil hash join serupa dengan partisi dalam proyeksi hash based dan diilustrasikan dalam Gambar 15, dan tahap equality atau disebut matching diilustrasikan dalam Gambar 16.
62 47 Partisi Orisinil Partisi 1 Input Fungsi hash h *** *** *** B-1 B-1 disk Buffer memory utama B disk Gambar 15: Tahap Partisi Proyeksi Hash-Based. (Raghu 2003) Gambar di atas menandakan bahwa jika terdapat sejumlah besar (misalkan B halaman buffer relatif) dengan jumlah halaman P, maka pendekatan hash-based sangat perlu, karena terdapat dua tahap pekerjaan yaitu : partisi dan eliminasi duplikat. Dalam tahap partisi dipunyai satu halaman buffer input dari B-1 halaman buffer output. Relasi P dibaca ke dalam halaman buffer input, setiap satu halaman. Halaman input diproses sebagai berikut : Untuk tiap record, diproyeksikan sesuai atribut yang diinginkan, dan kemudian mengaplikasikan fungsi hash h pada kombinasi dari semua atribut yang ada. Fungsi h dipilih sehingga record didistribusikan secara seragam pada satu B-1 partisi; dan terdapat satu halaman output per partisi. Setelah proyeksi record diisi ke halaman buffer output yang di hash menurut h. Pada akhir tahap partisi, mempunyai B-1 partisi, masing-masing berisi kumpulan record menggunakan nilai hash umum (dihitung dengan mengaplikasikan h pada semua field, dan hanya mempunyai field yang diinginkan. Dua record yang tercakup dalam partisi yang berbeda dijamin tidak menjadi duplikat karena mereka mempunyai nilai hash yang berbeda. Jadi jika
63 48 dua record merupakan duplikat, maka mereka berada dalam partisi yang sama. Dalam tahap eliminasi duplikat dibaca B-1 partisi satu per satu untuk menghilangkan duplikat, dasar pemikirannya adalah membentuk in-memory hash tabel seperti memproses record untuk mendeteksi duplikat. Untuk tiap partisi dihasilkan dalam tahap pertama : 1. Baca partisi satu halaman per satu waktu. Hash tiap record dengan mengaplikasikan fungsi hash h2 ( h ) pada kombinasi dari semua field dan kemudian menyisipkannya ke dalam in-memory hash tabel. Jika record baru meng-hash nilai yang sama seperti beberapa record yang ada, maka bandingkan keduanya untuk memeriksa apakah record baru tersebut merupakan duplikat, buang duplikat saat ditemukan. 2. Setelah semua partisi telah dibaca, tulis record dalam hash tabel (dimana tidak terdapat duplikat) ke file hasil, kemudian bersihkan in-memory hash tabel untuk mempersiapkan partisi berikutnya. Untuk persoalan join idenya adalah meng-hash kedua relasi pada atribut join, menggunakan fungsi hash h yang sama. Jika meng-hash tiap relasi (idealnya secara seragam) ke dalam k partisi, maka yakin bahwa record P dalam partisi i hanya dapat join dengan record F dalam partisi j yang sama. Pengamatan ini dapat digunakan untuk pengaruh yang baik, yaitu dapat membaca dalam partisi secara lengkap dari relasi P yang lebih kecil dan hanya men-scan partisi sesuai dengan F untuk kesesuaian. Dan selanjutnya tidak perlu memperhatikan record P dan F lagi. Jadi setelah P dan F di partisi, maka dapat dilakukan join dengan hanya membaca P dan F sebanyak satu kali saja. Dan menyediakan memory yang cukup diperkenankan untuk menyimpan semua record dalam partisi P tertentu. Dalam praktek sistem membentuk in-memory hash tabel untuk partisi P, menggunakan fungsi hash h2 yang berbeda dari h ( karena h2 dimaksudkan untuk mendistribusi record dalam partisi yang berdasarkan h ), untuk mengurangi biaya CPU. Hal ini sangat memerlukan memory yang cukup untuk memegang hash tabel, yang sedikit lebih besar daripada partisi P itu sendiri.
64 49 Partisi P dan F Fungsi hash h2 Hasil join * * * h 2 Hash tabel untuk partisi P 1 { k < B -1 halaman} *** *** Buffer Input Untuk men-scan Fi Buffer output disk Buffer memory utama B disk Gambar 16: Tahap equality join menggunakan Hash-Join.(Raghu 2003) Algoritma hash join dipresentasikan pada Gambar 17, perhatikan biaya algoritma hash join. Dalam tahap partisi harus men-scan P dan F sekali dan menulisnya sekali. Oleh karena itu biaya tahap ini adalah 2 ( M + N ). Pada tahap kedua men-scan tiap partisi sekali, dengan asumsi bahwa tidak terdapat partisi overflow, dengan besar biayanya adalah : ( M + N ) I/O sehingga dengan demikian biaya total adalah : 3 ( M + N ) dengan asumsi bahwa tiap partisi dapat dimasukkan dalam memory pada tahap kedua. Pada contoh join dari pst_ke1 dan pstaktif biaya total adalah : 3 * ( ) = halaman I/O. Apabila unjuk kerja komputer diasumsikan 10 ms per I/O, hash join memerlukan waktu sebesar: * 0, = 0, jam hal tersebut dikarenakan algoritma hash join memanfaatkan buffer ekstra (inmemory) dan menggunakan variabel dinamis dimana memory yang sudah tidak digunakan dapat dibersihkan.
65 50 Dari hasil analisis di atas jelas terlihat bahwa algoritma mem-partisi tabeltabel relasi dengan menggunakan metode hash join secara parsial dapat menunjukkan unjuk kerja query secara signifikan. Tetapi prinsip Hash Based harus dirancang sebelum aplikasi digunakan, karena tabel-tabel relasi harus berupa hash tabel yang mana terdapat fungsi hash berupa variabel pointer yang dapat menunjuk langsung pada alamat tertentu sesuai keperluan yang dilakukan dalam hash join, // partition P into k partitions foreach record p P do read p and it to buffer page h(p i ); // flushed as page fills // Partition F into k partitions foreach record f F do read f and it to buffer page h(f j ); // flushed as page fills // Probing phase for l=1,..., k do { // build in memory hash tabel for P i, using h2 foreach tuple p Partition P i do read p and insert into hash table using h2(p i ); // Scan F l and Probe for matching P i record foreach record f Partition F j do { read f and probe tabel using h2 ( f j ); for matching P record p, output (p,f) } clear hash tabel to prepare for next partition; } Gambar 17. Algoritma Hash-Join (Raghu 2003) Analisis Signifikansi Optimisasi Query. Proses scanning relasi yang berulang kali dari sebuah partisi akan memerlukan biaya yang mahal. Untuk meningkatkan kesempatan suatu partisi dapat masuk kedalam memory yang tersedia dalam tahap equality, besaran partisi harus diminimalkan dengan memaksimalkan jumlah partisi. Dalam tahap partisi,
66 untuk mem-partisi P (sama halnya dengan F) ke dalam k partisi memerlukan k buffer output dan satu buffer input. Misalkan terdapat B halaman buffer, jumlah maksimum partisi k = B-1, dengan asumsi bahwa ukuran partisi sama, maka M ukuran tiap partisi P adalah (M adalah jumlah halaman P ). Jumlah halaman B 1 dalam (in-memory hash tabel) partisi terbentuk selama tahap equality adalah cm, dimana c adalah nilai konstanta yang digunakan untuk meningkatkan B 1 ukuran antara partisi dan hash tabel. Dalam tahap equality selain hash tabel untuk partisi P diperlukan halaman buffer untuk scanning partisi F dan halaman buffer untuk keluaran. Maka buffer c. M yang diperlukan sebanyak B > + 2, dan buffer B > c. M, agar algoritma B 1 hash join dapat dilakukan dengan baik. Partisi P diharapkan sesuai dengan tersedianya buffer, sehingga buffer M B >, maka jumlah halaman buffer yang diperlukan lebih kecil daripada B 1 B > c. M. Resiko akan timbul jika fungsi hash h tidak mempartisi P secara seragam, maka hash tabel untuk satu partisi P atau lebih mungkin tidak dapat masuk ke dalam memory selama tahap equality. Situasi ini secara signifikan dapat menurunkan unjuk kerja. Proyeksi Hash-based adalah salah satu cara untuk menangani masalah overflow partisi, yaitu mengaplikasikan teknik hash join secara berulang pada join partisi P yang overflow dengan partisi F yang bersangkutan. Pertama membagi partisi P dan F ke dalam subpartisi, berikutnya melakukan join subpartisi secara berpasangan. Semua subpartisi P masuk ke dalam memory dengan mengaplikasikan teknik hash join secara berulang, seperti tertulis dalam algoritma pada Gambar 17. Memori ekstra adalah memori yang tersedia dalam memori utama berupa RAM atau chace memori dan metode hybrid hash join adalah salah satu metode yang memanfaatkan memori ekstra. Jika tersedia lebih banyak memory, maka hybrid hash join dapat digunakan. 51
67 M Andaikan bahwa B > c., k adalah jumlah partisi yang dapat k M dibentuk. Jika P dibagi menjadi k partisi ukuran, in-memory hash tabel k dapat dibentuk untuk tiap partisi. Untuk partisi P ( sama halnya dengan F) menjadi k partisi dibutuhkan k buffer output dan satu buffer input, yaitu k+1 halaman, dan akan menyisakan sebanyak B-(k+1) halaman ekstra selama tahap M partisi. Jika B ( k + 1) > c., berarti mempunyai cukup memory ekstra selama k tahap partisi. Metode hybrid hash join adalah membentuk in-memory hash tabel untuk partisi pertama P selama tahap partisi, yang berarti bahwa dapat menulis partisi ke disk. Sama halnya saat mempartisi F, dapat langsung melakukan equality dalam in-memory hash tabel dengan partisi P pertama. Pada akhir tahap partisi telah menyelesaikan equality join, selanjutnya algoritma bekerja seperti dalam hash join. Penghematan melalui hybrid hash join yaitu menghindari untuk menulis partisi pertama P dan F ke disk selama tahap partisi, dan membacanya kembali selama tahap equality. Apabila dilihat contoh pada pst_ke1 yang terdapat halaman dalam relasi P lebih kecil dari dari relasi F. Jika buffer tersedia B=300 halaman, maka dapat dengan mudah membentuk in-memory hash tabel untuk partisi P pertama saat mempartisi P menjadi dua partisi. Selama tahap partisi P algoritma dapat membaca P dan menulis satu partisi, biayanya adalah: = halaman I/O Jika diasumsikan bahwa partisi mempunyai ukuran yang sama, kemudian selanjutnya membaca F dan menulis satu partisi, biayanya adalah : = halaman I/O Pada tahap equality membaca partisi kedua P dan F, biayanya adalah : = halaman I/O Biaya totalnya adalah : = halaman I/O. Jika kecepatan 1 halaman I/O memakan waktu 10 ms, maka kecepatan totalnya adalah : 52
68 * 0, = 0,556 jam Dilihat dari hasil perhitungan, terdapat penurunan waktu runtime yang signifikan antara algoritma hash join dengan nilai 0,69 jam dan algoritma hybrid hash join sebesar 0,56 jam, yaitu sebesar ( 0, 69 jam 0,56 jam = 0,13 jam). Jika mempunyai cukup memori untuk menyimpan in-memory hash tabel untuk semua P, maka penghematannya akan lebih besar. Misalkan jika B> c.n+2, yaitu k = 1, maka dapat membentuk hash tabel ini dan membaca F sekali untuk menyelidiki hash tabel P sehingga biayanya menjadi : = I/O. Apabila unjuk kerja komputer mempunyai kecepatan I/O 10 ms, yaitu : * 0, = 0,233 jam Metode hybrid hash join, saat ini untuk DBMS komersial terdapat dalam Oracle, IBM DB2, dan Informix. Analisis perhitungan optimisasi query dengan metode hybrid-hash-join, hasilnya menunjukkan bahwa proses optimisasi query dapat dicapai secara signifikan apabila memory CPU dapat menampung sejumlah buffer dan bucketbucket (in-memory hash tabel dengan sejumlah halaman) yang sedang diproses. Apabila hash tabel tidak dapat dibentuk, maka selama tahap partisi dan tahap equality, hasil query akan selalu ditulis ke disk yang tentunya akan memakan waktu yang cukup lama. Untuk mengatasi proses query yang cukup lama dan menghindari partisi overflow dapat dilakukan fragmentasi horizontal sesuai dengan rentang atau kriteria tertentu, hasil fragmentasi disebar dibeberapa server dan diasumsikan penyebaran data seragam.
69 Analisis Optimisasi query optimizer DBMS MySQL DBMS MySQL Oprimizer dapat memberikan perkiraan unjuk kerja pecarian dari disk. Untuk tabel-tabel yang kecil dapat mencari baris dalam satu disk secara berurutan. Jika tabel-tabel cukup besar, dapat diperkirakan dengan menggunakan B++ tree index, akan diperlukan langkah pencarian sebanyak i : log(row_count) / log(index_block_length / 3 * 2 / (index_length + data_pointer_length)) + 1 seeks to find a row... (4.3) dan memerlukan buffer sebanyak : row_count * (index_length + data_pointer_length)*3/2... (4.4) Dalam MySQL banyak indek dalam block adalah 1024 bytes dan panjang data pointer 4 bytes dan panjang indek 3 bytes. Jika diaplikasikan pada tabel pst_ke1 yang mempunyai record sebanyak , maka dalam tabel pst_ke1 dengan mempunyai panjang data pointer 4 bytes dan panjang indek 3 bytes, berdasarkan persamaan (4.3) akan didapat nilai pencarian sebesar : log( )/log(1024/3*2/(3+4)) + 1 = ( / ) + 1 = 93 kali pencarian. dan berdasarkan persamaan (4.4), memerlukan buffer sebanyak * 7 * 3/2 = 40,6 MB Untuk tabel pstaktif mempunyai jumlah record sebesar , akan mempunyai nilai pencarian sebesar : log( )/log(1024/3*2/(3+4)) + 1 = ( / ) + 1 = 92 kali pencarian dan memerlukan buffer sebanyak * 7 * 3/2 = 38 MB Proses pencarian satu indek dalam tabel pst_ke1 diperlukan 93 langkah dan memerlukan memori sebanyak 40,6 MB, sedangkan untuk tabel pstaktif pencarian indek diperlukan 92 langkah dengan memerlukan memori sebanyak 38MB. Diasumsikan buffer index digunakan sebanyak 2/3, normalnya proses pencarian dilakukan 2 kali, yaitu untuk update indek dan menulis baris. i (
70 55 Proses selanjutnya melakukan join setelah record mempunyai indek yang sesuai, dan kemudian dilakukan equality join. Untuk menghitung biaya join diperlukan ii : a. Jumlah blok sebesar : b P = r / bfr... (4.5) dimana : r = jumlah record bf r = blocking factor (jumlah record per blok) b. Selection cardinality, yaitu : S atribut = r P / d atribut... (4.6) dimana : r P = jumlah record dalam tabel pertama d atribut = distinct value tabel kedua c. Biaya algoritma nested loop : Cost = b P + ( b P * b F ) + [ ( js * r P * r F ) / bfr F ]... (4.7) dimana : bp = jumlah blok dalam tabel pertama b F = jumlah blok tabel kedua js = join selectivity sebesar (1/jumlah record tabel kedua) r P = jumlah record dalam tabel pertama r F = jumlah record dalam tabel kedua bfr F = blocking factor dari tabel kedua d. Biaya algoritma B++ tree indek structure : Cost = b P + (r P * ( X atributf + S atributp ))+[ (js*r P * r F ) / bfr F ]... (4.8) dimana : bp = jumlah blok dalam tabel pertama r P = jumlah record dalam tabel pertama X atributf = primary index tabel kedua S atributp = Selection cardinality tabel pertama js = join selectivity sebesar (1/jumlah record tabel kedua) r F = jumlah record dalam tabel kedua bfr F = blocking factor dari tabel kedua ii (
71 56 Contoh kasus sebelumnya perintah join query yaitu: SELECT * FROM pst_ke1 P, pstaktif F WHERP P. no_tsp = F. no_tsp Tabel pst_ke1 P mempunyai record. Jadi r p = ( r P adalah record dalam P ). Diasumsikan jumlah record pst_ke1 per-halaman dalam satu disk blok adalah 100. Jadi bfr P = 100. Jika b adalah jumlah blok yang diperlukan untuk menyimpan tabel, maka jumlah blok dalam tabel P adalah b P, berdasarkan persamaan (4.5) blocking factor dari tabel P adalah : b P = r P / bfr P = / 100 = Untuk membedakan nilai indek diperlukan sebuah secondary index pada no_tsp dengan Xno_tsp = 2. Jangkauan atribut no_tsp terhadap nippa dari tabel pstaktif diperlukan distinct value untuk no_tsp. Jadi d no_tsp = Berdasarkan persamaan (4.6), nilai selection cardinality tabel P dari no_tsp adalah: S no_tsp = r P / d no_tsp = / = 1,07 Tabel pstaktif mempunyai record. Jadi r F = dengan Blocking factor dari pstaktif adalah bfr F = 80, maka nilai blok untuk pstaktif F adalah b F = Primary index pada nippa adalah tunggal, maka Xnippa = 1 Berdasarkan asumsi-asumsi di atas, Join Selectivity (js) adalah 1 / dan untuk mendapatkan harga yang minimum, dapat dilakukan perhitungan berdasarkan persamaan (4.7) untuk nested loop, dan persamaan (4.8) untuk index structure yaitu :
72 57 1. Menggunakan nested loop dengan pst_ke1 pada bagian luar : Cost = b P + ( b P * b F ) + [ ( js * r P * r F ) / bfr F ] = ( * ) + [ (1 / * * ) / 80 ] = ,55 = blok Apabila kecepatan I/O komputer mencapai 10ms, maka biaya di atas menjadi : = * 0, , hasilnya setara dengan = 4906,85 jam = 204,5 hari 2. Menggunakan nested loop dengan pstaktif pada bagian luar : Cost = b F + ( b F * b P ) + [ ( js * r P * r F ) / bfr F ] = (45242 * ) + [ ( 1 / * * ) / 80 ] = ,55 = ,55 blok, jika kecepatan I/O komputer mencapai 10ms, maka, = ,55 * 0, , hasilnya setara dengan = 4906,86 jam = 204 hari 3. Menggunakan index structure pada nippa dengan pst_ke1 pada bagian luar. Cost = b P + ( r P * ( Xnippa + S no_tsp ) ) + [ ( js * r P * r F ) / bfr F ] = ( *(1 + 1)) + [(1/ * * ) / 80 ] = ,55 = ,55 blok, jika kecepatan I/O komputer mencapai 10ms, maka, = ,55 * 0, , hasilnya setara dengan = 21,935 jam = 0,91395 hari 4. Menggunakan index structure pada nippa dengan pstaktif pada bagian luar. Cost = b F + ( r F * ( Xno_tsp + Sno_tsp ) ) + [ ( js * r P * r F ) / bfr F ]
73 58 = ( *(2+1,07 ))+ [(1/ * * ) /80] = , ,55 = ,16 blok, jika kecepatan I/O komputer mencapai 10ms, maka, = ,16 * 0, , hasilnya setara dengan = 31,3748 jam = 1,37 hari Dari hasil perhitungan menunjukkan bahwa persamaan ketiga mempunyai biaya 21,935 jam adalah nilai yang paling rendah, sehingga optimizer akan memilih eksekusi menggunakan persamaan yang ketiga. Biaya keempat proses di atas tidak termasuk proses pencarian yang dilakukan sebelum operasi join, untuk proses pencarian biaya dapat diabaikan karena proses pencarian dilakukan didalam buffer. Fasilitas optimizer dari DBMS MySQL, menggunakan index structure biaya query lebih rendah dibandingkan dengan biaya menggunakan nested loops, MySQL optimizer akan memilih dan menggunakan index structure, dengan persyaratan spesifikasi minimum untuk tabel yang besar harus dipenuhi, sebagai berikut iii : Processor Intel Pentium IV Set Up Buffer : Key_buffer = 384 M max_allowed_packet = 1 M table_cache = 512 M Sort_buffer_size = 2 M read_buffer_size = 2 M MyISAM_sort_buffer_size = 64 M thread_cache_size = 32 M iii (htttp://
74 Percobaan Penulis melaksanakan percobaan menggunakan fasilitas jaringan komputer yang berada di Kampus FMIPA UNPAD Jatinangor ( sebagian peta network dapat dilihat pada Gambar 23 ), fasilitas tersebut menggunakan arsitektur clientserver dengan spesifikasi antara lain : - Client : Processor Intel Pentium IV Core Duo 2,66 GHZ Memory 512 MB, Harddisk 60 GB Processor Intel Pentium IV 1,7 GHZ Memory 256 MB, Harddisk 40 GB Sistem Operasi Windows XP - Server : Processor Intel Pentium IV Core Duo 2,66 GHZ Memory 2 GB, Harddisk 80 GB Sistem Operasi Linux Redhat - Software DBMS: Mysql win My ODBC My SQL-Front_2.5 My-SQL Administrator Dalam melakukan perintah-perintah query terdapat karakteristik dari DBMS dan arsitektur client server antara lain : 1. Client dan server dapat melakukan komputasi, client dapat menerima bagian dari jawaban query. 2. Server melakukan replikasi kepada client secara real time dimana server sebagai server master dan client sebagai server slave. 3. Client akan merubah data transaksi pada server sebelum koneksi ke server di tutup. Dalam skenario yang memiliki 3 karakteristik ini minimasi waktu akses dan transfer data menjadi sangat penting, sehingga masalah minimasi ongkos yang dikeluarkan dalam transfer hasil query dapat menjadi lebih murah. Ada beberapa cara yang mungkin untuk mendekomposisi query kedalam hasil views, rencana terbaik yaitu mempunyai ukuran minimum dan pada basis data di server.
75 60 Sebuah keuntungan dari pendekatan ini adalah bahwa menggunakan metoda formal, untuk memilih optimisasi secara global yang terdapat dalam DBMS dapat diperhitungkan dan dapat dibuktikan pada saat yang sama efisiensi metoda-metoda yang men-dekomposisi query kedalam views, dengan kata lain untuk sebuah query yang diberikan dari sebuah client ke server. Dalam percobaan dengan ketiga skenario di atas ongkos komunikasi tidak dapat diabaikan dan akan berpengaruh pada total perhitungan waktu, kemudian hasilnya dapat dievaluasi dalam berbagai kasus query tersebut. Dalam percobaan ini data relasi disimpan pada client (server slave) dan server (server master), situasinya dapat dilihat pada Gambar 23, masing-masing pst_ke1 dan pstaktif disimpan dalam client (server slave), sedangkan, pmk_ke1, pmk_fd1 dan pstpens disimpan dalam server (server master). Dalam DBMS yang penulis gunakan client terkoneksi dengan database server, dan server melakukan replikasi pada client. Replikasi yang dijalankan yaitu dari server master ke server slave, transfer data (selama replikasi) antar server apabila query menggunakan MySQL kecepatannya mencapai 0,0002 detik dalam keadaan kondisi jaringan normal. Untuk percobaan yang dilakukan tabel-tabel yang diuji masih berupa tabel dengan tipe file masih ber-ekstensi.dbf, tabel tersebut dikonversi kedalam tabel Microsoft Access, setelah menjadi file Microsoft Access kemudian dikonversi lagi kedalam database MySQL, hal ini dilakukan karena karakteristik database tersebut banyak mengandung duplikasi dan banyak kesalahan dari tipe data yang tidak sesuai dengan isi data, begitu pula untuk field yang tidak null banyak yang tidak dipenuhi, sehingga apabila data berupa file.dbf tersebut langsung di konversi kedalam database MySQL sulit dapat diterima. Dari hasil pengamatan dalam proses query yang dilakukan terdapat hasil analisis dari beberapa output runtime antara lain : 1. Perintah-perintah query yang tidak melakukan join tidak terdapat masalah walaupun jumlah record cukup besar dengan rata-rata lebih dari satu juta record dengan kapasitas memori tabel di atas 100 MB. 2. Perintah-perintah query dengan menggunakan proses optimisasi menggunakan kriteria tertentu baik dalam satu relasi atau lebih dari satu
76 61 relasi, perbedaan kecepatan join query sangat signifikan, walaupun dalam DBMS sendiri sudah mempunyai fasilitas optimizer. 3. Proses optimisasi dengan mendahulukan proses seleksi sebelum melakukan join, proses eksekusi waktunya lebih cepat dari pada melakukan join lebih dahulu kemudian melakukan seleksi. 4. Perubahan-perubahan hasil proses optimisasi sangat terlihat dalam jumlah record diatas , demikian juga untuk spesifikasi komputer yang berbeda, perbedaan runtime terlihat pada record diatas Fragmentasi sangat diperlukan dalam jumlah record lebih dari satu juta, karena proses join tersebut dapat memakan waktu lebih dari satu hari. Perintah-perintah query yang dilaksanakan dalam kasus ini pertama kali adalah perintah query yang dilakukan untuk menguji bahwa tabel betul-betul layak uji dan tidak terdapat error data dalam field sehingga tidak perlu melakukan join terlebih dahulu, kemudian perintah query selanjutnya dilakukan seleksi dan join, perintah-perintah query tersebut adalah : Q 1. Perintah-perintah query tanpa optimisasi pada satu tabel relasi, hal ini untuk melihat seluruh isi tabel layak uji dan melihat unjuk kerja I/O komputer, yaitu : 1 SELECT * FROM pst_ke1; 2 SELECT * FROM pstaktif; 3 SELECT * FROM pmk_ke1; 4 SELECT * FROM pmk_fd1; 5 SELECT * FROM pstpens; Q 2 Perintah-perintah query dengan optimisasi seleksi satu kriteria dari atribut tertentu pada tabel satu relasi, yaitu :
77 62 1 SELECT * FROM pst_ke1 WHERE no_tsp = ; 2 SELECT * FROM pstaktif WHERE nippa = ; 3 SELECT * FROM pmk_ke1 WHERE tmt_pst = 1970/01/01 ; 4 SELECT * FROM pmk_fd1 WHERE tmt_pst = 1970/01/01 ; 5 SELECT * FROM pstpens WHERE kp180= 1997/11/01 ; Tabel 11. Running time query tabel satu relasi tanpa join, Q 1 tanpa optimisasi Q 2 dengan optimisasi satu kriteria. TABEL/QUERY pmk_ke1 pstpens pmk_fd1 pst_ke1 pstaktif P IV Core Duo 58 MB 70 MB 107 MB 132 MB 165 MB 1,4 juta 1,26 juta 1,26 juta 3,87 juta 3,62 juta 512 MB record record record record record Q 1 10,84 14,69 19,26 22,75 29,66 Q 2 0,8 2,81 3,05 7,49 7,73
78 63 Query Tanpa Join Runtim e ( detik) ,4 juta record 1,26 juta record 1,26 juta record 3,87 juta record 3,62 juta record Q 1 Q 2 58 MB 70 MB 107 MB 132 MB 165 MB Jumlah Record Q1: Query Tanpa Optimisasi Q2: Query dengan Optimisasi Gambar 18. Running time query satu relasi tanpa join, Q 1 tanpa optimisasi, Q 2 dengan optimisasi satu kriteria. Perintah-perintah join query Q 3, Q 4 dan Q 5 di bawah ini digunakan untuk membandingkan perintah tanpa optimisasi dan perintah dengan optimisasi, perintah query tersebut yaitu : Q 3 : SELECT * FROM pst_ke1 P, pstaktif F WHERE P. no_tsp = F. nippa; Q 4 : SELECT P.no_tsp, P.tgl_lhr, P.tmt_pst, F.pangkat FROM pst_ke1 P, pstaktif F WHERE P.no_tsp = F. nippa;
79 64 Q 5 : SELECT P.no_tsp, P.tgl_lhr, P.tmt_pst, F.pangkat FROM pst_ke1 P, pstaktif F WHERE P.no_tsp = F. nippa AND F.gaji_pokok >= AND F.pangkat >='3A'; Hasil eksekusi perintah-perintah query tersebut ditunjukkan dalam Tabel 12 dan Gambar 19. Tabel 12. :Perbandingan join query tidak dioptimisasi dan dioptimisasi Query /Kardinalitas 1000 record record record record record record Q 3 : Join Query tidak dioptimisasi 0,72 45,59 192,02 426,67 776, ,43 Q 4 : Join Query dioptimisasi satu kriteria Q 5 : Join Query dioptimisasi tiga kriteria 0,44 41, ,13 659, ,84 0,22 32,25 135,55 275,95 466,08 689,17
80 65 Optimisasi Join Query Runtime (detik) 1400, , ,00 800,00 600,00 400,00 200,00 0,00 Q3 Q4 Q Jumlah Record Q3:Join Query tidak dioptimisasi Q4:Join Query dioptimisasi 1 kriteria Q5:Join Query dioptimisasi 3 kriteria Gambar 19. Perbandingan join query Q 3 tidak dioptimisasi dan Q 4, Q 5 dioptimisasi Salah satu teknik perintah optimisasi dapat dilakukan dengan mendahulukan operasi seleksi sebelum melakukan operasi join, hasil eksekusi secara signifikan lebih cepat dari pada mendahulukan operasi join sebelum melaksanakan operasi seleksi, hal ini ditunjukkan pada perintah query Q 6 dan Q 7, dan hasil eksekusi ditunjukkan pada Tabel 13 dan Gambar 20. Q 6 : SELECT P.no_tsp, P.tgl_lhr, P.tmt_pst, F.gaji_pokok, F.pangkat FROM pst_ke1 P, pstaktif F WHERE F.gaji_pokok >= AND F.pangkat >='3A' AND P.no_tsp = F. nippa; Q 7 : SELECT P.no_tsp, P.tgl_lhr, P.tmt_pst, F.gaji_pokok, F.pangkat FROM pst_ke1 P, pstaktif F WHERE P.no_tsp = F. nippa AND gaji_pokok >= AND F.pangkat >='3A' ;
81 66 Tabel 13 : Running time query, Q 6 mendahukan operasi join sebelum seleksi dan Q 7 mendahulukan operasi seleksi sebelum operasi join Query/Kardinalitas 1000 record record record record record record Q 6 : mendahulukan join 0,38 51,56 202,75 468,2 742, ,31 Q 7 : mendahulukan seleksi 0,22 32,25 135,55 275,95 466,08 689,17 Mendahulukan Join atau Seleksi Runtime (detik) 1200, ,00 800,00 600,00 400,00 200,00 0,00 Q6 Q Jumlah Record Q6: Mendulukan Join Q7: Mendahulukan Seleksi Gambar 20. Running time query, Q 6 mendahulukan operasi join sebelum seleksi dan Q 7 mendahulukan operasi seleksi sebelum operasi join. Perintah-perintah query untuk melakukan join dan seleksi satu atau beberapa kriteria lebih dari satu tabel dengan atribut yang sama dari tabel yang telah difragmentasi ditunjukkan pada Tabel 14 dan Gambar 21.
82 67 Perintah join query Q 8 dan Q 9 di bawah ini untuk melakukan join dan seleksi dengan tiga kriteria dari tabel pst_ke1 ( record) dan pstaktif ( record ), untuk Tabel 14 dan Gambar 21 jumlah record pst_ke1 dan pstaktif difragmentasi antara 1000 s/d record. Q 8 fragmentasi dilakukan setelah proses join query berjalan, dan Q 9 fragmentasi dilakukan sebelum proses join query dilakukan dari 1000 s/d record. Q 8 : SELECT * FROM pst_ke1 P, pstaktif F WHERE P.no_tsp = F. nippa AND P. kd_bup= 100 AND F.pangkat >='3A' LIMIT 1000; Q 9 : SELECT * FROM pst_ke1 P, pstaktif F WHERE P.no_tsp = F. nippa AND P. kd_bup= 100 AND F.pangkat >='3A'; Tabel 14 : Perbandingan Runtime fragmentasi setelah proses join query dan fragmentasi sebelum proses join query. Join / Kardinalitas P IV 256 MB Q 8 : fragmentasi setelah proses query Q 9 : fragmentasi sebelum proses query 1000 (record) (record) (record) (record) 85, , ,5 0,42 31,98 325, ,48
83 68 Fragmentasi Join Query Runtime (detik) Q8 Q Jumlah Record Q8 Q9 Gambar 21 : Perbandingan Runtime Q 8 : fragmentasi setelah proses query Q 9 : fragmentasi sebelum proses query Perintah-perintah query untuk melakukan join dan seleksi satu atau beberapa kriteria lebih dari satu tabel dengan atribut yang sama dengan spesifikasi client yang berbeda, ditunjukkan pada Tabel 15 dan Gambar 22. Q 10 SELECT P.no_tsp, P.tgl_lhr, F.tmt_pst, F.gaji_pokok, F.pangkat FROM pst_ke1 P, pstaktif F WHERE P.no_tsp = F.nippa AND P.tgl_lhr = F.tgl_lhr AND P.kd_bup ="100" AND F.pangkat >="3A" AND P.gaji_pokok >=700000;
84 69 Tabel 15. Perbadingan Running time client berbeda spesifikasi Join / Kardinalitas 1000 (record) (record) (record) (record) (record) P1 : Query pada P IV 0,42 31,98 325, , , MB P2 : Query pada P IV Core Duo 512 MB 0,02 17,11 169,33 699, ,05 Perbedaan Runtime Query Berbeda Client Runtime (detik) P1 P Jumlah Record P1 : Query pada P IV 256 MB P2: Query pada P IV Core Duo 512 MB Gambar 22: Perbandingan Runtime client yang berbeda, P 1 Pentium IV 256 MB P 2 Pentium IV Core Duo 512 MB,
85 70 ROUTER OMNI FMIPA ROUTER FMIPA-PTBS switch management server router hotspot Proxy server DNS server point to point FMIPA switch mail server router Dekanat point to point FMIPA-Jalawave web server DataBase server (master) hub Perpustakaan hub switch client Lab. Penelitian (slave) SBP & Akademik hub Dekanat hub Gambar 23: Konfigurasi sebagian peta MIPA-NETWORK ( FMIPA-UNPAD 2007 )
86 71 BAB V KESIMPULAN DAN SARAN 5.1. Kesimpulan Dari analisis dan percobaan yang dilakukan, penulis mengambil kesimpulan bahwa untuk melakukan perintah-perintah join query untuk jumlah record melebihi seratus ribu dan banyak mengandung atribut non teks, dilakukan secara parsial dengan fragmentasi relasi menurut kriteria tertentu, dan hasil proses secara signifikan menunjukkan yang optimal. Proses join query dapat menggunakan fasilitas optimizer dari DBMS komersil maupun open source. Untuk fasilitas optimizer dalam DBMS komersil unjuk kerja metode Hash Join menunjukkan hasil yang signifikan dengan biaya terendah. Dalam MySQL optimizer proses join query menggunakan index struture, hasilnya lebih baik dibandingkan dengan metode nested loops, tetapi harus dipenuhi persyaratan minimum spesifikasi komputer, yaitu processor Pentium 4 dengan memori minimal 1 GB. Unjuk kerja processor dari spesifikasi komputer yang lebih tinggi secara signifikan hanya menunjukkan relatif waktu running time lebih cepat dan grafik kecepatan menunjukkan kenaikkan sangat tinggi untuk record diatas 100 ribu. Biaya transfer jaringan tidak signifikan, apabila server melakukan replikasi secara real time sebelum query dijalankan. Proses optimisasi sangat diperlukan baik untuk query satu relasi maupun join query dua relasi. Untuk join query menggunakan proses optimisasi satu kriteria menghasilkan penurunan waktu rata-rata sebesar 17 %, dan proses optimisasi tiga kriteria menghasilkan penurunan waktu rata-rata sebesar 41 %. Demikian juga proses optimisasi mendahulukan seleksi sebelum join menghasilkan penurunan waktu rata-rata sebesar 37,50 % 5.2. Saran Dari hasil penelitian yang penulis lakukan, terdapat beberapa saran yang disampaikan, yaitu apabila akan melaksanakan join query, lalu-lintas jaringan harus sedang tidak padat. Melakukan join query sebaiknya dengan jalur tersendiri, dapat pula menggunakan DBMS yang dapat melakukan replikasi sebelum query
87 72 dijalankan, sehingga proses query dapat dijalankan secara lokal. Untuk penelitian lanjutan jika tabel relasi belum dibuat dan akan mencapai jumlah record yang besar, sebaiknya menggunakan Hash Based, Hash Table dan Hash Function sebagai sarana tabel dinamis menggunakan variabel pointer, dan dapat diuji coba dengan memanfaatkan memori ekstra menggunakan metode Hybrid Hash Join.
88 73 DAFTAR PUSTAKA Connolly T, Begg. C Database System A Practical Approach to Design, Implementation and Management. New York : Addison Wesley Publishing Company. hlm Erik va Kuijk Semantic Query Optimization in Distributed Database Systems. Netherlands: Universiteit Twente. hlm Fathansyah Sistem Basis Data, Informatika Bandung. hlm Fuad Harahap, 2004 Optimisasi Query. hlm [ 22 Desember 2004] Jacobs Ken Perspective DR.DBA Query Optimization. Documentation Discussion Forums Articles Sample Code Training RSS Resources As Published. hlm [6 Juli 2005] Jia li, Rada Chirkova, Chen Li Minimizing Data-Communication Costs by Decomposing Query Results in Client-Server Environments. Deparment of Computers Science UCI ICS Technical Report. hlm [25 September 2004] Özsu MT, Valduriez P Principles of Distributed Database Systems. Ed ke-2 New Jersey : Prentice Hall. hlm Ramakrishna Raghu & Gehrke Johanes Database Management Systems. Third Edition The McGraw-Hill Companies, Inc. Ed. ke 3 hlm , , Vadali V R L Swamy Applying Parametric Query Optimization to Non- Parametric Query Metrics. Departement of Computer Science & Engineering Indian Instititute of Technologi, Kanpur. hlm 2-5.
89 74 Vlach Richard Query Processing in Distributed Database Systems. Departement of Software Engineering, Charles University. hlm [6 September 2004]
90 75 Lampiran 1 : Contoh kamus data tabel relasi pst_ke1 4 buah atribut record Nama Attribut Type Ukuran Key Keterangan NO_TSP VarChar 10 Primary Key No Taspen dari NIP Pegawai TGL_LHR DateTime - - Tanggal Lahir TMT_PST DateTime - - Terhitung Mulai Tanggal Peserta KD_BUP VarChar 3 - Kode
91 76 Lampiran 2 : Contoh kamus data tabel relasi pstaktif dengan 8 buah attribut record. Nama Attribut Type Ukuran Key Keterangan NIPPA VarChar 10 Primary Key No. Taspen dari NIP Pegawai TGL_LHR DateTime - - Tanggal Lahir TMT_PST DateTime - - Terhitung Mulai Tanggal SEX Char 1 - Jenis Kelamin GAJI_POKOK Float - - Gaji Pokok BLTH_GAPOK Varchar 6 - Gaji Pokok Terakhir SUSKEL Varchar 3 - Status Keluarga PANGKAT Char 2 - Pangkat
92 77 Lampiran 3 : Contoh kamus data tabel relasi pmk_ke1 dengan 6 buah attribut record. Nama Attribut Type Ukuran Key Keterangan NO_TSP VarChar 10 Primary Key No Taspen dari NIP Pegawai TMT_PST DateTime - - Terhitung Mulai Tanggal Peserta TGL_KEJ DateTime - - Tanggal Kejadian TGLHR_YMK DateTime - - Tanggal lahir yang mengajukan klaim KD_KEJ VarChar 4 - Kode Kejadian B(pensiun), C(meninggal sebelum pensiun, E(meninggal setelah pensiun)
93 78 Lampiran 4 : Contoh kamus data tabel relasi pmk_fd1 dengan 13 buah attribut record Nama Attribut Type Ukuran Key Keterangan NIPPA VarChar 10 Primary Key No Taspen dari NIP Pegawai TMT_PST DateTime - - Terhitung Mulai Tanggal Peserta KD_KEJ VarChar 4 - Kode Kejadian B(pensiun), C(meninggal sebelum pensiun, E(meninggal setelah pensiun) TGL_KEJ DateTime - - Tanggal Kejadian TGL_KLIM DateTime - - Tanggal Klaim TGL_TRANS DateTime - - Tanggal Transaksi PANGKAT Char 2 - Pangkat GAJI_POKOK Float - - Gaji Pokok THP Float - - Tunjangan Hari Pensiun SUSKEL Char 3 - Status Keluarga NAMA_YMK VarChar 30 - Nama yang mengajukan klaim TGLLHR_YMK DateTime - - Tanggal lahir yang mengajukan klaim RP_HAK Float - Jumlah uang hak terima uang
94 Lampiran 5 : Kamus data tabel relasi pstpens dengan 11 buah attribut record 79 Nama Attribut Type Ukuran Key Keterangan NOPEN VarChar 10 Primary No Identitas Pensiun Key JENIS Char 1 - Jenis KP030 DateTime - - Tanggal Lahir KP040 Char 2 - Golongan KP080 Float - - Tunjangan Kel KP180 DateTime - - Tanggal Pensiun KP380 Float - - Gaji Pokok KP570 VarChar 4 - Jenis Pensiun KP550 Float - - Jumlah uang hak diterima KP710 VarChar 6 - Status Keluarga TMT_KERJA DateTime - - Terhitung Mulai Tanggal Kerja
95 80 Lampiran 6 : Contoh isi data tabel relasi pst_ke1 NO_TSP TGL_LHR TMT_PST KD_BUP /12/ /01/ /12/ /03/ /03/ /03/ /08/ /10/ /10/ /12/ /07/ /11/ /09/ /03/ /08/ /01/ /12/ /01/ /06/ /02/ /08/ /04/ /05/ /10/ /11/ /04/ /07/ /07/ /07/ /10/ /06/ /01/ /12/ /07/ /07/ /06/ /05/ /09/ /08/ /12/ /09/ /12/ /08/ /12/ /10/ /12/ /12/ /07/ /12/ /07/ /08/ /12/ /06/ /07/ /12/ /03/ /10/ /07/ /06/ /07/ /06/ /04/ /09/ /05/ /04/ /02/ /02/ /11/ /05/ /11/ /11/ /11/ /08/ /09/ /07/ /12/ /05/ /11/ /02/ /09/ /05/ /10/
96 81 Lampiran 7 : Contoh isi tabel relasi pstaktif NIPPA TGL_LHR TMT_PST SEX GAJI_POKOK BLTH_GAPOK SUSKEL PANGKAT /11/ /10/1963 L B /09/ /08/1963 L A /01/ /01/1963 L B /11/ /07/1963 L A /01/ /01/1997 L C /07/ /12/1963 L B /12/ /08/1963 L A /12/ /12/1963 L D /08/ /03/1963 L D /08/ /07/1963 L D /12/ /03/1963 L A /12/ /03/1963 L D /12/ /03/1963 L C /08/ /12/1963 L B /09/ /10/1963 L B /06/ /11/1963 L A /09/ /04/1963 L C /04/ /06/1964 L C /07/ /02/1963 L D /12/ /01/1963 L C /12/ /08/1963 L B /02/ /12/1963 L B /06/ /08/1963 L B /09/ /07/1963 L C /04/ /10/1963 L A /04/ /07/1963 L D /03/ /01/1963 L D /01/ /01/1997 L C /12/ /08/1963 L D /06/ /02/1963 L D /03/ /11/1963 L D /12/ /09/1963 L A /03/ /12/1963 L D /05/ /06/1963 L B /02/ /06/1963 L A /06/ /06/1963 L B /04/ /12/1963 L A /01/ /12/1963 L B /08/ /06/1963 L A
97 82 Lampiran 8 : Contoh isi tabel relasi pmk_ke1 NO_TSP TMT_PST TGLHR_YMK TGL_KEJ KD_KEJ /09/ /07/ /07/1994 B /04/ /06/ /06/1999 B /07/ /12/ /12/1985 B /07/ /12/ /06/1991 E /11/ /04/ /12/1983 B /11/ /10/ /10/1996 B /09/ /07/ /12/1991 C /09/ /07/ /12/1991 C /04/ /07/ /01/1985 C /12/ /12/ /12/1997 B /09/ /08/ /08/1996 B /06/ /08/ /08/1992 B /01/ /04/ /04/1998 B /01/ /03/ /03/1986 B /01/ /03/ /03/1986 B /01/ /03/ /11/1993 E /08/ /07/ /07/1988 B /08/ /07/ /05/1990 E /06/ /08/ /08/1991 B /06/ /08/ /08/1991 B /06/ /05/ /05/1992 B /08/ /02/ /06/1987 C /01/ /03/ /03/1998 B /01/ /12/ /12/1997 B /01/ /12/ /12/1998 B /12/ /12/ /12/1993 B /04/ /10/ /10/1992 B /06/ /08/ /07/1984 C /07/ /09/ /09/1993 B /07/ /04/ /04/1999 B /08/ /02/ /02/1998 B /06/ /08/ /08/1998 B /01/ /07/ /11/1995 B /01/ /05/ /05/1997 B110
98 83 Lampiran 9 : Contoh isi tabel relasi pstpens NOPEN JENIS KP030 KP040 KP080 KP180 KP380 KP570 KP550 KP /09/1928 1C /10/ /11/1919 1B /05/ /12/1919 1B /11/ /09/1922 1B /10/ /12/1926 1B /01/ /12/1924 1B /04/ /02/1923 1B /03/ /12/1922 1B /04/ /12/1923 1C /04/ /05/1926 1B /04/ /12/1922 1B /01/ /12/1926 1C /03/ /12/1924 1C /04/ /11/1928 1D /10/ /01/1926 1B /08/ /12/1927 1B /04/ /01/1926 1B /04/ /06/1925 1A /07/ /08/1919 1C /09/ /12/1925 1B /08/ /12/1929 1B /11/ /12/1930 1B /01/ /12/1919 1D /12/ /07/1917 1B /07/ /12/1921 1C /05/ /12/1927 1B /06/ /07/1923 1B /04/ /12/1928 1B /06/ /12/1913 1C /08/ /06/1924 2D /08/ /03/1923 1B /08/ /12/1908 1B /06/
99 84 Lampiran 10 : Contoh isi data dari tabel relasi pmk_fd1 NIPPA TMT_PST KD_KEJ TGL_KEJ TGL_KLIM TGL_TRANS PANG GAJI_POKOK THP SUSKEL KAT NAMA_YMK TGLHR_YMK RP_HAK /03/1983 D110 29/02/ /05/ /05/1988 2A TOGA NAPITUPULU 02/07/ /03/1983 C110 30/05/ /08/ /08/1989 1A BACHTIAR EFFENDY 20/08/ /01/1993 C110 31/08/ /10/ /10/1998 2C WILMAR 26/05/ SIMORANGKIR /03/1983 C110 11/05/ /06/ /06/1992 1C MUHAMMAD 21/07/ NASIR LUBIS /01/1993 C110 14/01/ /02/ /02/1997 2C AKMALUDDIN 30/08/ NASUTION /03/1983 C110 14/01/ /02/ /02/1992 2C SYAHRIAL 10/04/ SIHITE /03/1983 C110 11/01/ /02/ /02/1993 2D SYAIFUL MASRUL,BSC 23/04/ /03/1983 C110 17/11/ /12/ /12/1988 2B LEGIMIN SUKARDI 15/07/ /01/1993 C110 10/11/ /01/ /01/1999 2D MASA 16/08/ SEMBIRING /01/1993 B110 31/01/ /02/ /02/1996 2D JAMALEM 14/01/ SITEPU /01/1993 B110 31/05/ /07/ /07/1995 2D MUHAMMAD 05/11/ MUNIR /01/1981 C110 07/12/ /12/ /12/1993 1C AMIR HUSIN 09/08/ /03/1983 C110 21/01/ /03/ /03/1999 2D HERRY TH. 12/05/ PANGARIBUAN /03/1983 C110 30/06/ /12/ /12/1988 2A M IRWAN 01/12/ /03/1983 C110 20/04/ /07/ /07/1995 3A ERNAWATY BR SURBAKTI 08/07/
BAB II TINJAUAN PUSTAKA
BAB II TINJAUAN PUSTAKA 2.1. Basis Data Terdistribusi 2.1.1. Sistem Basis Data Terdistribusi Dalam pengelolaan basis data terdapat dua sistem basis data, yaitu Basis Data Terpusat ( Centralized ) dan Basis
ANALISIS OPTIMISASI FORMULA DISTRIBUTED QUERY DALAM BASIS DATA RELASIONAL R. SUDRAJAT
ANALISIS OPTIMISASI FORMULA DISTRIBUTED QUERY DALAM BASIS DATA RELASIONAL R. SUDRAJAT SEKOLAH PASCASARJANA INSTITUT PERTANIAN BOGOR BOGOR 2007 RINGKASAN ii Proses join query dalam sistem basis data terdistribusi
BAB III METODOLOGI DAN RANCANGAN PENELITIAN
BAB III METODOLOGI DAN RANCANGAN PENELITIAN 3.1. Metodologi Penelitian Sejak tahun 1960 an penelitian-penelitian tentang basis data sudah dimulai dan dikembangkan sesuai kebutuhan, terutama dengan menggunakan
BAB IV HASIL DAN PEMBAHASAN
BAB IV HASIL DAN PEMBAHASAN 4.1. Formulasi Masalah dan Penentuan Tujuan. Dalam bagian ini dibahas tentang formulasi masalah dan penentuan tujuan yang akan dicapai, diperlukan tahapan-tahapan analisis yang
PEMROSESAN QUERY. Gentisya Tri Mardiani, S.Kom
PEMROSESAN QUERY Gentisya Tri Mardiani, S.Kom Pendahuluan Pemrosesan terhadap query di dalam suatu basis data dilakukan dengan menggunakan bahasa query (query language) Bahasa query formal basis data relasional
PENGENALAN PROSES DAN OPTIMISASI QUERY
PENGENALAN PROSES DAN OPTIMISASI QUERY Database Manajemen Sistem (DBMS) adalah kumpulan dari programprogram yang membolehkan user untuk menciptakan dan memelihara sebuah database. DBMS sudah menjadi peralatan
Optimasi Query. by: Ahmad Syauqi Ahsan
05 Optimasi Query by: Ahmad Syauqi Ahsan Optimasi Query 2 Misalkan anda diberi kesempatan untuk mengunjungi 15 kota yang berbeda di Eropa. Satu-satunya batasan yang ada adalah "Waktu". Apakah anda mempunya
ESTIMASI QUERY. Sistem Basis Data. Gentisya Tri Mardiani, M.Kom
ESTIMASI QUERY Sistem Basis Data Gentisya Tri Mardiani, M.Kom Estimasi Biaya Query Optimizer query akan membuat informasi statistik yang tersimpan dalam katalog DBMS untuk memperkirakan besarnya biaya
PEMROSESAN QUERY. Alif Finandhita, S.Kom, M.T
PEMROSESAN QUERY Alif Finandhita, S.Kom, M.T Pemrosesan terhadap query di dalam suatu sistem basis data dilakukan dengan menggunakan bahasa query (query language). Bahasa query formal basis data relasional
PEMROSESAN QUERY. Alif Finandhita, S.Kom
PEMROSESAN QUERY Pemrosesan terhadap query di dalam suatu sistem basis data dilakukan dengan menggunakan bahasa query (query language). Bahasa query formal basis data relasional adalah bahasa untuk meminta
OPTIMASI QUERY. Sistem Basis Data. Gentisya Tri Mardiani, S.Kom., M.Kom
OPTIMASI QUERY Sistem Basis Data Gentisya Tri Mardiani, S.Kom., M.Kom Struktur Sistem Basis Data Tujuan utama dari sistem basis data adalah untuk memudahkan dan memfasilitasi akses ke data. Faktor utama
OPTIMASI QUERY. Sistem Basis Data. Gentisya Tri Mardiani, S.Kom., M.Kom
OPTIMASI QUERY Sistem Basis Data Gentisya Tri Mardiani, S.Kom., M.Kom Struktur Sistem Basis Data Tujuan utama dari sistem basis data adalah untuk memudahkan dan memfasilitasi akses ke data. Faktor utama
ARSITEKTUR SISTEM. Alif Finandhita, S.Kom, M.T. Alif Finandhita, S.Kom, M.T 1
ARSITEKTUR SISTEM Alif Finandhita, S.Kom, M.T Alif Finandhita, S.Kom, M.T 1 Sistem Terpusat (Centralized Systems) Sistem Client Server (Client-Server Systems) Sistem Server (Server Systems) Sistem Paralel
Teknik Informatika, Fakultas Teknik, Universitas Brawijaya,
BASIS DATA Aljabar Relasional Teknik Informatika, Fakultas Teknik, Universitas Brawijaya, Email : [email protected] Pendahuluan Pemrosesan terhadap query di dalam suatu system basis data dilakukan dengan menggunakan
INTEGRASI DATA SEMITERSTRUKTUR SECARA SKEMATIK BERBASIS XML (EXTENSIBLE MARKUP LANGUAGE) TITIN PRAMIYATI K.
INTEGRASI DATA SEMITERSTRUKTUR SECARA SKEMATIK BERBASIS XML (EXTENSIBLE MARKUP LANGUAGE) TITIN PRAMIYATI K. SEKOLAH PASCASARJANA INSTITUT PERTANIAN BOGOR BOGOR 2008 PERNYATAAN MENGENAI TESIS DAN SUMBER
INTEGRASI DATA SEMITERSTRUKTUR SECARA SKEMATIK BERBASIS XML (EXTENSIBLE MARKUP LANGUAGE) TITIN PRAMIYATI K.
INTEGRASI DATA SEMITERSTRUKTUR SECARA SKEMATIK BERBASIS XML (EXTENSIBLE MARKUP LANGUAGE) TITIN PRAMIYATI K. SEKOLAH PASCASARJANA INSTITUT PERTANIAN BOGOR BOGOR 2008 PERNYATAAN MENGENAI TESIS DAN SUMBER
http://www.brigidaarie.com Di lingkungan file-server, pemrosesan didistribusikan ke jaringan yang Local Area Network (LAN). File-Server menunjang kebutuhan file dengan aplikasi-aplikasi dan DBMS. Aplikasi
6/26/2011. Database Terdistribusi. Database Terdesentralisasi
Sekumpulan database independen pada komputer komputer yang tidak saling berhubungan melalui jaringan Suatu database logis secara fisik tersebar pada beberapa komputer (di beberapa lokasi) dihubungkan melalui
BAB 2 LANDASAN TEORI Pengertian DBMS (Database Management System)
21 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
BASIS DATA TERDISTRIBUSI
FRAGMENTASI DATA dalam BASIS DATA TERDISTRIBUSI Disusun Oleh: Alit Mahendra Bramantya FRAGMENTASI DATA dalam BASIS DATA TERDISTRIBUSI Apakah yang dimaksud dengan basis data terdistribusi? Basis data terdistribusi
DATABASE TERDISTRIBUSI
DATABASE TERDISTRIBUSI Yaitu kumpulan data yang digunakan bersama yang saling terhubung secara logic tetapi tersebar secara fisik pada suatu jaringan computer. Karakteristik database terdistribusi yaitu
3. File Laporan (report File) File ini bisa disebut output file, yaitu file yang berisi informasi yang akan ditampilkan
Tipe File : 1. File Induk (Master File) File induk acuan (reference master file) : file induk yang recordnya relatif statis, jarang berubah nilainya. Misalnya file daftar dosen, file mata pelajaran. File
PERBANDINGAN CROSS-PRODUCT DAN SUBSET QUERY PADA MULTIPLE RELASI DENGAN METODE COST-BASED
PERBANDINGAN CROSS-PRODUCT DAN SUBSET QUERY PADA MULTIPLE RELASI DENGAN METODE COST-BASED Metta Santiputri 1) Mira Chandra Kirana 1) Anni 2) 1) Program Studi Teknik Informatika, Politeknik Batam E-mail:
Modul Praktikum Basis Data 4 Relasi Table
Modul Praktikum Basis Data 4 Relasi Table Pokok Bahasan Membuat hubungan beberapa table. Edit Relational Menghapus relational Melakukan pengolahan data dari table yang terintegrasi dalam ERD. Studi Kasus
adalah : Q.1) Suatu susunan/kumpulan data operasional lengkap dari suatu organisasi/perusahaan
Q.1) Suatu susunan/kumpulan data operasional lengkap dari suatu organisasi/perusahaan yang diorganisir/dikelola dan disimpan secara terintegrasi dengan menggunakan metode tertentu dengan menggunakan komputer
Model dan Aljabar Relasional. Rima Dias Ramadhani, S.Kom., M.Kom Wa:
Model dan Aljabar Relasional Rima Dias Ramadhani, S.Kom., M.Kom Email: rima@[email protected] Wa: 087731680017 RECORD BASED DATA MODEL Model Hierarkikal Model Jaringan Model Relasional Struktur Hirarki
Model Relasional. Basis Data. Pengertian
Model Relasional Basis Data Materi Yang Akan Disampaikan Pengertian 3 MODEL DATABASE Istilah dalam Basis Data Relasional Relational Key Di Model Relational Bahasa pada Model Data Relasional Bahasa Query
INTERNET PROGRAMMING DATABASE
INTERNET PROGRAMMING DATABASE Muhmmad Zen Samsono Hadi, ST. MSc. [email protected] POLITEKNIK ELEKTRONIKA NEGERI SURABAYA Bahasan Sistem Database ER Diagram Database MySQL Internet Application Pendahuluan
PROSES PERANCANGAN BASIS DATA
PROSES PERANCANGAN BASIS DATA Seperti telah disebutkan sebelumnya, sebuah sistem basis data merupakan komponen dasar sistem informasi organisasi yang besar. Oleh karena itu siklus hidup aplikasi basis
ANALISIS OPTIMASI QUERY PADA DATA MINING
ANALISIS OPTIMASI QUERY PADA DATA MINING Ermatita Jurusan Sistem Informasi Fakultas Ilmu Komputer, Universitas Sriwijaya E-mail: [email protected] Abstrak Data mining is currently being used by
Pemrosesan data sebelum adanya basis data Perancangan sistemnya masih didasarkan pada kebutuhan individu pemakai, bukan kebutuhan sejumlah pemakai
Basis Data Pemrosesan data sebelum adanya basis data Perancangan sistemnya masih didasarkan pada kebutuhan individu pemakai, bukan kebutuhan sejumlah pemakai Duplikasi data Data yg sama terletak pada
PERTEMUAN 2 DBMS & PERANCANGAN BASIS DATA
PERTEMUAN 2 DBMS & PERANCANGAN BASIS DATA Jum at, 30 Sept. 2016 DATABASE MANAGEMENT SYSTEM (DBMS) DBMS adalah perangkat lunak yang memungkinkan pemakai untuk mendefinisikan, mengelola, dan mengontrol akses
BAB 1 PENDAHULUAN. satu hal yang sangat dominan dan terjadi dengan sangat pesat. Informasi
BAB 1 PENDAHULUAN 1.1 Latar Belakang Di era globalisasi ini, perkembangan teknologi informasi sudah merupakan satu hal yang sangat dominan dan terjadi dengan sangat pesat. Informasi merupakan suatu kebutuhan
BAB 4 ALJABAR RELASIONAL
BAB 4 ALJABAR RELASIONAL Bahasa Query Relasional (Relational Query Language) Bahasa Query : memungkinkan manipulasi dan pemanggilan data dari suatu basis data. Model Relasional mendukung kesederhanaan,
BAB III LANDASAN TEORI. 3.1 Pengertian Pengabdian kepada Masyarakat. kepada masyarakat adalah kegiatan yang mencakup upaya-upaya peningkatan
BAB III LANDASAN TEORI 3.1 Pengertian Pengabdian kepada Masyarakat Menurut Direktorat Riset dan Pengabdian Masyarakat Universitas Indonesia (2011:4), pengabdian kepada masyarakat atau kegaitan pengabdian
PROSES PERANCANGAN DATABASE
PROSES PERANCANGAN DATABASE PENDAHULUAN Sistem informasi berbasiskan komputer terdiri dari komponen-komponen berikut ini : Database Database software Aplikasi software Hardware komputer termasuk media
PERANCANGAN PROTOKOL PENYEMBUNYIAN INFORMASI TEROTENTIKASI SHELVIE NIDYA NEYMAN
PERANCANGAN PROTOKOL PENYEMBUNYIAN INFORMASI TEROTENTIKASI SHELVIE NIDYA NEYMAN SEKOLAH PASCASARJANA INSTITUT PERTANIAN BOGOR BOGOR 2007 PERNYATAAN MENGENAI TESIS DAN SUMBER INFORMASI Dengan ini saya menyatakan
SISTEM BASIS DATA II S A N T I W I D I A N T I
SISTEM BASIS DATA II S A N T I W I D I A N T I SISTEM Definisi sebuah tatanan yang terdiri atas sejumlah komponen fungsional (dengan tugas/fungsi khusus) yang saling berhubungan dan secara bersama-sama
BASIS DATA TERDISTRIBUSI
BASIS DATA TERDISTRIBUSI Kelompok : 1. Herdi Muzadi R (H1D015018) 2. Theza Gema Sandi (H1D015022) 3. M Fauzan Ramadhan (H1D015039) 4. Butar Butar Ines (H1D015047) 5. Mutiara Dwi A (H1D015058) 6. M Endhyka
APLIKASI MANAJEMEN PERPUSTAKAAN BERBASIS WEB MENGGUNAKAN PHP DAN MYSQL PADA SMA NEGERI 5 BINJAI TUGAS AKHIR FATIMAH
APLIKASI MANAJEMEN PERPUSTAKAAN BERBASIS WEB MENGGUNAKAN PHP DAN MYSQL PADA SMA NEGERI 5 BINJAI TUGAS AKHIR FATIMAH 062406065 PROGRAM STUDI D3 ILMU KOMPUTER FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
Obyektif : Mahasiswa dapat mengerti dan memahami konsep perancangan basis data Mahasiswa dapat merancang basis data sesuai dengan fase-fasenya
PROSES PERANCANGAN DATABASE Obyektif : Mahasiswa dapat mengerti dan memahami konsep perancangan basis data Mahasiswa dapat merancang basis data sesuai dengan fase-fasenya PROSES PERANCANGAN DATABASE Tujuan
Analisis Perbandingan Optimasi Query Nasted Join dan Hash Join pada MySQL Server
Melany, Analisis Perbandingan Optimasi Query 31 Analisis Perbandingan Optimasi Query Nasted Join dan Hash Join pada MySQL Server Comparative Analysis and Optimization Query Nasted Join Hash Join in MySQL
BAB 3 ANALISIS DAN PERANCANGAN EVALUASI DAN PENINGKATAN KINERJA SISTEM BASIS DATA SIDJP CORE Gambaran Umum Direktorat Jendral Pajak
BAB 3 ANALISIS DAN PERANCANGAN EVALUASI DAN PENINGKATAN KINERJA SISTEM BASIS DATA SIDJP CORE 3.1 Organisasi Direktorat Jenderal Pajak 3.1.1 Gambaran Umum Direktorat Jendral Pajak Direktorat Jenderal Pajak
perkembangan yang diraih, namun ada juga kegagalan dan ketidakstabilan pada masingmasing Database Engine. Database yang bekerja 24 jam dan yang memili
Analisis Kecepatan Proses Insert Query Pada Tabel Terpartisi Di Database Engine Oracle Dan SQL Server Widhya Wijaksono Fakultas Teknologi Industri, Jurusan Teknik Informatika Universitas Gunadarma [email protected]
Hendra Setiawan ( )
Hendra Setiawan (15.52.0657) Query Database Query ini sendiri atau sering disebut SQL (Structured Query Language) adalah suatu bahasa (language) yang digunakan untuk mengakses database. (Solichin, 2010).
ALJABAR RELASIONAL BA S I S DATA. Rajif Agung Yunmar, S.Kom., M.Cs.
ALJABAR RELASIONAL BA S I S DATA Rajif Agung Yunmar, S.Kom., M.Cs. PRE TEST Sebutkan macam-macam operasi JOIN. Jelaskan perbedaan masing-masing! Apakah yang disebut dengan fungsi agregasi? Jelaskan! Jelaskan
BASIS DATA TERDISTRIBUSI
SIS DT TERDISTRIUSI Dalam sebuah database terdistribusi, database disimpan pada beberapa komputer. Komputer-komputer dalam sebuah sistem terdistribusi berhubungan satu sama lain melalui bermacam-macam
PELABELAN OTOMATIS CITRA MENGGUNAKAN FUZZY C MEANS UNTUK SISTEM TEMU KEMBALI CITRA MARSANI ASFI
PELABELAN OTOMATIS CITRA MENGGUNAKAN FUZZY C MEANS UNTUK SISTEM TEMU KEMBALI CITRA MARSANI ASFI SEKOLAH PASCASARJANA INSTITUT PERTANIAN BOGOR BOGOR 2008 PERNYATAAN MENGENAI TESIS DAN SUMBER INFORMASI Dengan
PROSES PERANCANGAN DATABASE
PROSES PERANCANGAN DATABASE PENDAHULUAN Sistem informasi berbasiskan komputer terdiri dari komponen-komponen berikut ini : Database Database software Aplikasi software Hardware komputer termasuk media
BAB 2 TINJAUAN PUSTAKA DAN DASAR TEORI
BAB 2 TINJAUAN PUSTAKA DAN DASAR TEORI 2.1. Tinjauan Pustaka Pada Penelitian sejenis ini pernah dilakukan oleh Wasino dkk (2013); Maulani dkk (2015); Nilaliliana Prihatin (2017) ; Eka Rahmadyani(2016);dan
BAB II DASAR TEORI. 2.1 Konsep Dasar Sistem Aplikasi Pengertian Sistem. Pengertian sistem adalah kumpulan dari elemen-elemen yang berinteraksi
BAB II DASAR TEORI 2.1 Konsep Dasar Sistem Aplikasi 2.1.1 Pengertian Sistem Pengertian sistem adalah kumpulan dari elemen-elemen yang berinteraksi untuk mencapai suatu tujuan tertentu. Suatu sistem mempunyai
DATABASE TERDISTRIBUSI (DISTRIBUTED DATABASE= DDB)
DATABASE TERDISTRIBUSI (DISTRIBUTED DATABASE= DDB) PENDAHULUAN CERI : A distributed DB is a collection of data which belong logically to the same system but are spread over the sites of a computer network
PERANCANGAN BASIS DATA
BAB IV PERANCANGAN BASIS DATA Database atau basis data adalah kumpulan data yang disimpan secara sistematis di dalam komputer dan dapat dimanipulasi (diolah) menggunakan perangkat lunak (program aplikasi)
BAB II LANDASAN TEORI. digunakan untuk memodelkan kebutuhan data dari suatu organisasi,
BAB II LANDASAN TEORI 2.1 Entity Relationship Diagram Entity Relationship Diagram (ERD) merupakan teknik yang digunakan untuk memodelkan kebutuhan data dari suatu organisasi, biasanya oleh System Analys
Tujuan Instruksional Khusus :
Tujuan Instruksional Khusus : Mahasiswa dapat menjelaskan tingkatan arsitektur basis data Mahasiswa dapat menjelaskan konsep data independence, komponen DBMS, fungsi DBMS serta bahasa yang digunakan didalam
PERANCANGAN PROTOKOL AKTA NOTARIS DIGITAL INAYATULLAH
PERANCANGAN PROTOKOL AKTA NOTARIS DIGITAL INAYATULLAH SEKOLAH PASCASARJANA INSTITUT PERTANIAN BOGOR BOGOR 2007 PERNYATAAN MENGENAI TESIS DAN SUMBER INFORMASI Dengan ini saya menyatakan bahwa Tesis Perancangan
BAB III 3. LANDASAN TEORI. manajemen dan individu lain terhadap kejadian-kejadian internal dan eksternal
BAB III 3. LANDASAN TEORI 3.1. Konsep Dasar Sistem Informasi Sistem informasi dapat dikatakan seperti suatu sistem yang terdapat pada suatu organisasi yang merupakan kumpulan dari individu, teknologi,
BAB II LANDASAN TEORI
digilib.uns.ac.id BAB II LANDASAN TEORI 2.1 Sistem Informasi 2.1.1 Pengertian dan Karakteristik Sistem Sistem adalah suatu jaringan kerja dari prosedur-prosedur yang saling berhubungan, berkumpul bersama-sama
MUHAMMAD ZEN S. HADI, ST. MSC.
INTERNET PROGRAMMING Sistem Basis Data MUHAMMAD ZEN S. HADI, ST. MSC. Bahasan Sistem Database ER Diagram Database MySQL Internet Application Pendahuluan Menyimpan data dalam file biasa memiliki banyak
PENGERTIAN DATABASE MySQL
PENGERTIAN DATABASE MySQL RAHMAT AMIN [email protected] Abstrak Istilah basis data mengacu pada koleksi dari data-data yang saling berhubungan, dan perangkat lunaknya seharusnya mengacu sebagai
KONSEP DAN RANCANGAN BASIS DATA TERDISTRIBUSI SISTEM BASIS DATA TERDISTRIBUSI
KONSEP DAN RANCANGAN BASIS DATA TERDISTRIBUSI SISTEM BASIS DATA TERDISTRIBUSI DEFINISI Basis Data Terdistribusi adalah kumpulan data logic yang saling berhubungan secara fisik terdistribusi dalam jaringan
DRAFT JUDUL : OPTIMALISASI COST DAN TIME DENGAN SQL TUNING PADA APLIKASI PROFIN
DRAFT JUDUL : OPTIMALISASI COST DAN TIME DENGAN SQL TUNING PADA APLIKASI PROFIN Alvian Osalindo Fransiskus Martin Suparto Darudiato Universitas Bina Nusantara ABSTRAK Salah satu tujuan dalam melakukan
Teknik Informatika Universitas Pasundan. Caca E. Supriana, S.Si.,MT.
Sistem Manajemen aje e Basis s Data Sistem Basis Data Terdistribusi Teknik Informatika Universitas Pasundan Caca E. Supriana, S.Si.,MT. [email protected] 2 Pengantar File processing/pemrosesan
RENCANA PEMBELAJARAN
ISO 91 : 28 Written by Checked by Approved by valid date Megawaty. M.Kom A. Haidar Mirza, S.T., M.Kom M. Izman Herdiansyah, S.T., M.M., Ph.D. Subject : Basis Data Semester : 3 Code : Credit : 2 credit
BAB III LANDASAN TEORI. organisasi yang merupakan kombinasi dari orang-orang, fasilitas, teknologi,
BAB III LANDASAN TEORI 3.1 Konsep Dasar Sistem Informasi Sistem informasi dapat didefinisikan sebagai suatu sistem di dalam suatu organisasi yang merupakan kombinasi dari orang-orang, fasilitas, teknologi,
Sistem Basis Data; Tutorial Konseptual Oleh : Yakub
Sistem Basis Data; Tutorial Konseptual Oleh : Yakub Edisi Pertama Cetakan Pertama, 2008 Hak Cipta 2008 pada penulis, Hak Cipta dilindungi undang-undang. Dilarang memperbanyak atau memindahkan sebagian
BASIS DATA ALJABAR RELASIONAL (RELATIONAL ALGEBRA)
BASIS DATA ALJABAR RELASIONAL (RELATIONAL ALGEBRA) Aljabar Relasional Yaitu sekumpulan operasi yang digunakan untuk melakukan proses manipulasi data dalam rangka untuk mendapatkan informasi yang diperlukan
-DATABASE (BASIS DATA)- Nama : Novriansyah Kelas : 2.DB.10 NPM : Dosen : Leli Safitri
-DATABASE (BASIS DATA)- Nama : Novriansyah Kelas : 2.DB.10 NPM : 33109332 Dosen : Leli Safitri PROGRAM DIPLOMA MANAJEMEN INFORMATIKA FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS GUNADARMA
PERANCANGAN PROTOKOL AKTA NOTARIS DIGITAL INAYATULLAH
PERANCANGAN PROTOKOL AKTA NOTARIS DIGITAL INAYATULLAH SEKOLAH PASCASARJANA INSTITUT PERTANIAN BOGOR BOGOR 2007 PERNYATAAN MENGENAI TESIS DAN SUMBER INFORMASI Dengan ini saya menyatakan bahwa Tesis Perancangan
EKSPLORASI MASALAH LOGARITMA DISKRET PADA FINITE FIELD ( ) Y A N A
EKSPLORASI MASALAH LOGARITMA DISKRET PADA FINITE FIELD ( ) Y A N A SEKOLAH PASCA SARJANA INSTITUT PERTANIAN BOGOR BOGOR 2009 PERNYATAAN MENGENAI TUGAS AKHIR DAN SUMBER INFORMASI Dengan ini saya menyatakan
BAB II LANDASAN TEORI. seorang pimpinan atau manajer didalam organisasi untuk mencapai tujuan
BAB II LANDASAN TEORI 2.1 Payment Management Control. Manajemen merupakan proses atau kegiatan yang dilakukan oleh seorang pimpinan atau manajer didalam organisasi untuk mencapai tujuan bersama. Kegiatan
BAB III LANDASAN TEORI
BAB III LANDASAN TEORI 3.1 Sistem Menurut Herlambang (2005:116), terdapat dua pendekatan untuk mendefinisikan sistem, yaitu pendekatan secara prosedur dan komponen. Berdasarkan pendekatan prosedur, sistem
Database bisa dikatakan sebagai suatu kumpulan dari data yang tersimpan dan diatur atau
DATA BASE Database bisa dikatakan sebagai suatu kumpulan dari data yang tersimpan dan diatur atau diorganisasikan sehingga data tersebut bisa diambil atau dicari dengan mudah dan efisien. Sebagai contoh
MANAJEMEN MEMORI. Manajemen Memori 1
MANAJEMEN MEMORI 1. Konsep dasar memori - Konsep Binding - Dynamic Loading - Dynamic Linking - Overlay 2. Ruang Alamat Logika dan Fisik 3. Swapping 4. Pengalokasian Berurutan (Contiguous Allocation) 5.
BAB III LANDASAN TEORI. organisasi yang pada saat dilaksanakan akan memberikan informasi bagi pengambil
11 BAB III LANDASAN TEORI 3.1 Sistem Informasi Menurut (Ladjamudin, 2005), Sistem informasi adalah sekumpulan prosedur organisasi yang pada saat dilaksanakan akan memberikan informasi bagi pengambil keputusan
JARINGAN SYARAF TIRUAN UNTUK PENGENALAN JENIS KAYU BERBASIS CITRA G A S I M
JARINGAN SYARAF TIRUAN UNTUK PENGENALAN JENIS KAYU BERBASIS CITRA G A S I M SEKOLAH PASCASARJANA INSTITUT PERTANIAN BOGOR BOGOR 2006 ABSTRAK Pengenalan jenis kayu yang sering dilakukan dengan menggunakan
Sistem Basis Data Terdistribusi Arif Basofi
Sistem Basis Data Terdistribusi Arif Basofi Sumber: Fundamentals of Database Systems, Third Edition ch.24, Elmasri Sumber Material: tanzir.staff.gunadarma.ac.id, T. Darmanto & Y. H. Chrisnanto, AmikBandung
Database Terdistribusi. by: Ahmad Syauqi Ahsan
14 Database Terdistribusi by: Ahmad Syauqi Ahsan Konsep Basis Data Terdistribusi (1) 2 Sistem Komputasi Terdistribusi adalah sejumlah elemen proses yang terkoneksi melalui jaringan komputer dan saling
BAB III 3 LANDASAN TEORI
BAB III 3 LANDASAN TEORI 3.1 Sistem Informasi Menurut Jogiyanto HM (2003), sistem Informasi merupakan suatu sistem yang tujuannya menghasilkan informasi sebagai suatu sistem, untuk dapat memahami sistem
PERANCANGAN WEBSITE PENJUALAN SECARA ONLINE MENGGUNAKAN PHP DAN MYSQL TUGAS AKHIR MIRA RIZKY S TANJUNG
PERANCANGAN WEBSITE PENJUALAN SECARA ONLINE MENGGUNAKAN PHP DAN MYSQL TUGAS AKHIR MIRA RIZKY S TANJUNG 072406029 PROGRAM STUDI D-3 ILMU KOMPUTER DEPARTEMEN MATEMATIKA FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN
BAB II LANDASAN TEORI. Data adalah deskripsi tentang benda, kejadian, aktifitas, dan transaksi, yang
9 BAB II LANDASAN TEORI 2.1.1 Pengertian Data Pengertian data adalah : Data adalah deskripsi tentang benda, kejadian, aktifitas, dan transaksi, yang tidak mempunyai makna atau tidak berpengaruh langsung
Pertemuan 6 BAHASA QUERY FORMAL
Pertemuan 6 BAHASA QUERY FORMAL BAHASA QUERY FORMAL ALJABAR RELATIONAL Adalah kumpulan operasi terhadap relasi, dimana setiap operasi menggunakan satu atau lebih relasi untuk menghasilkan satu relasi yang
Parallel Database. by: Ahmad Syauqi Ahsan
13 Parallel Database by: Ahmad Syauqi Ahsan Latar Belakang 2 Parallel Database Management System adalah DBMS yang diimplementasikan pada parallel computer yang mana terdiri dari sejumlah node (prosesor
P7 Perancangan Database
P7 Perancangan Database SQ http://sidiq.mercubuana-yogya.ac.id Program Studi Teknik Informatika Fakultas Teknologi Informasi Universitas Mercu Buana Yogyakarta Tujuan Mahasiswa mengetahui & memahami konsep
Bab 6. Basis Data Client / Server POKOK BAHASAN: TUJUAN BELAJAR: 6.1 PENDAHULUAN
Bab 6 Basis Data Client / Server POKOK BAHASAN: Pendahuluan Arsitektur Client-Server Pengaksesan Query pada Basis Data Client-Server TUJUAN BELAJAR: Setelah mempelajari materi dalam bab ini, mahasiswa
MODUL 3 JOIN TABLE. Gambar Model Relasi Basis Data db_mutiara SMK NEGERI 1 CIMAHI REKAYASA PERANGKAT LUNAK
MODUL 3 JOIN TABLE Tujuan Kompetensi Dasar yang ingin dicapai : 3.3 Menganalisis teknik penggabungan data dari beberapa tabel memahami inner join dalam penggabungan data dari beberapa tabel mengaplikasikan
DESAIN DATABASE. Pertemuan 06 3 SKS
Materi 1. Era Informasi 2. Strategi dan Peluang Yang Kompetitif 3. Database dan Database Warehouse 4. Desain Database 5. Sistem Pendukung Keputusan dan Sistem Cerdas 6. E-Commerce DESAIN DATABASE Pertemuan
PERBANDINGAN KEKONVERGENAN BEBERAPA MODEL BINOMIAL UNTUK PENENTUAN HARGA OPSI EROPA PONCO BUDI SUSILO
PERBANDINGAN KEKONVERGENAN BEBERAPA MODEL BINOMIAL UNTUK PENENTUAN HARGA OPSI EROPA PONCO BUDI SUSILO SEKOLAH PASCASARJANA INSTITUT PERTANIAN BOGOR BOGOR 2008 SUMBER INFORMASI Dengan ini saya menyatakan
Model Relational. Dian Dharmayanti
Model Relational Dian Dharmayanti Pendahuluan Relation Properti Relasi Basis Data Relasional Key Konversi Model E-R ke Relasional Transformasi kedalam skema relasi Pendahuluan Model relasional terkait
SISTEM TERDISTRIBUSI
SISTEM TERDISTRIBUSI DATABASE MANAGEMENT SYSTEM PADA SISTEM TERDISTRIBUSI Untuk memenuhi tugas mata kuliah Manajemen Sistem Terditribusi Oleh Diana Laily fithri, M.kom Disusun Oleh: Frista Yogie T (201253065)
BAB 5 IMPLEMENTASI DAN EVALUASI
BAB 5 IMPLEMENTASI DAN EVALUASI 5.1 Hasil Layout Masukan Hasil layout masukan (data master dan transaksi) dapat dilihat dengan lebih lengkap pada Lampiran 6. 5.2 Hasil Layout Keluaran Hasil layout keluaran
Bab VI Value, Domain dan Type
Bab VI Value, Domain dan Type Value Suatu nilai (value) adalah hal apapun yang mungkin dapat dievaluasi, disimpan dalam suatu struktur data, dikirimkan sebagai suatu argumentasi atau dikembalikan lagi
BAB 3 BAHASA BASIS DATA (DATABASE LANGUAGE)
1 BAB 3 BAHASA BASIS DATA (DATABASE LANGUAGE) DBMS merupakan perantara bagi pemakai dengan basis data dalam Disk. Cara berkomunkasi / berinteraksi antara pemakai dengan basis data diatur dalam suatu bahasa
LATAR BELAKANG IBM San Jose Research Laboratory.
SQL LATAR BELAKANG SQL merupakan bahasa basis data relasional standard. Terdapat macam-macam versi SQL. Versi aslinya pertama kali dikembangkan oleh IBM San Jose Research Laboratory. 2 LATAR BELAKANG Bahasa
BAB III LANDASAN TEORI. adalah sebagai berikut: Sistem adalah suatu jaringan kerja dari prosedur-prosedur
BAB III LANDASAN TEORI 3.1 Konsep Dasar Sistem Informasi Terdapat dua kelompok pendekatan di dalam mendefinisikan sistem, yaitu yang menekankan pada prosedurnya dan yang menekankan pada komponen atau elemennya.
BAB 1 PENDAHULUAN. penting dan digunakan di hampir setiap area dari keseluruhan cabang ilmu
BAB 1 PENDAHULUAN 1.1 Latar Belakang Pada era sekarang ini, teknologi penerapan sistem basis data sudah berkembang dengan sangat pesat. Sistem basis data merupakan salah satu komponen yang penting dan
Aplikasi Teori Graf dalam Manajemen Sistem Basis Data Tersebar
Aplikasi Teori Graf dalam Manajemen Sistem Basis Data Tersebar Arifin Luthfi Putranto (13508050) Program Studi Teknik Informatika Institut Teknologi Bandung Jalan Ganesha 10, Bandung E-Mail: [email protected]
