TUGAS BASIS DATA FILE ORGANIZATION IF2250 SEMESTER GENAP 2013/2014 K01 : Darwin Prasetio (13512001) Jan Wira Gotama Putra (13512015) Melvin Fonda (13512085) TEKNIK INFORMATIKA SEKOLAH TEKNIK ELEKTRO DAN INFORATIKA INSTITUT TEKNOLOGI BANDUNG Makalah ini menjelaskan prinsip mengorganisasi file dalam sistem basis data dengan metode hash dan metode operasi-operasi pada record pada metode ini. Makalah ini juga menganalisis dan membandingkan metode hash dengan metode-metode lainnya(Heap, Sequential, Multitable Clustering) berdasarkan parameter-parameter tertentu. 10. Memory Memory adalah perangkat keras untuk menyimpan data pada komputer. 11. Memory Space Memory space adalah kapasitas ruang penyimpanan data pada komputer. Index Terms—Database, Database File Organization, Hash. III. PARAMETER PERFORMANSI FILE I. PENDAHULUAN Sistem basis data adalah suatu sistem untuk mengorganisasi data berikut metode operasi-operasi terhadap basis data. Pada suatu sistem, seringkali manusia bekerja dengan data komputer yang banyak. Untuk mempermudah mengorganisasi data pada suatu sistem, diperlukan suatu sistem basis data untuk menyimpan dan membaca data secara cepat. Salah satu organisasi file dalam sistem basis data menggunakan metode hash yang mempunyai kelebihan dan kekurangan dibanding metode lainnya. II. ISTILAH TERKAIT 1. Collision [1] Bila pemetaan dua kunci hashing yang menghasilkan alamat sama, maka dinamakan terjadi collision (benturan). 2. Fungsi hash [1] Fungsi hash adalah sebuah fungsi aritmatka yang mentransformasikan sebuah kunci menjadi sebuah alamat yang digunakan untuk menyimpan atau mengekstraksi record. 3. Record Pada sistem basis data, record merupakan sekumpulan informasi yang tersusun atas atribut-atribut pembentuknya, berisikan sebuah informasi mengenai suatu data. 4. Fetch record Fetch record merupakan kegiatan membaca data ke dalam memory. 5. Get-next record Get-next record adalah kegiatan mengambil record berikutnya berdasarkan kriteria yang sama. 6. Insert a record Insert a record adalah kegiatan menyisipkan sebuah record baru. 7. Update a record Update a record adalah kegiatan memperbaharui isi suatu record. 8. Retrieve all records Retrieve all records adalah kegiatanuntuk membaca seluruh record. 9. Reorganization Reorganization adalah kegiatan menghapus record yang tidak valid, mengosongkan space untuk data baru dan mengatur ulang pengelompokkan data. 1. TF : waktu yang dibutuhkan untuk mem-fetch sembarang record dari file. 2. TN : waktu yang dibutuhkan untuk mendapatkan record berikutnya di dalam suatu file. 3. TI : waktu yang dibutuhkan untuk memperbaharui isi file dengan menambahkan sebuah record baru. 4. TU : waktu yang dibutuhkan untuk memperbaharui file dengan merubah isi record. 5. TX : waktu yang dibutuhkan untuk membaca seluruh file. 6. TY : waktu yang dibutuhkan untuk mereorganisasi file. IV. PEMBAHASAN Hashing adalah sebuah metode untuk memetakan data ataupun mengambil data dengan cara yang efisien berdasarkan kunci yang didapat dari fungsi hash. Pada metode hashing kita menempatkan data pada suatu tempat tertentu, dimana tempat untuk setiap data unik satu sama lainnya untuk memudahkan penyimpanan maupun pencarian data. Fungsi hash adalah fungsi yang memetakan data berdasarkan suatu kunci tertentu dimulai dari range terkecil sampai range maksimal. Pada sistem basis data, kita definisikan terlebih dahulu besar blok memory (statis) yang akan digunakan untuk menyimpan data. Bila tidak diketahui berapa banyak data yang akan ditampung, kita dapat menggunakan sistem dynamic hashing dimana blok memory berkembang seiring kebutuhan. Kunci keberhasilan organisasi dengan hash adalah membuat suatu fungsi hash yang baik, karena performansi sistem dengan penggunaan metode hashing bergantung pada fungsi hash. Berikut ini adalah contoh penyimpanan sebuah record mahasiswa pada sistem basis data mahasiswa dengan huruf pertama dan huruf terakhir nama panggilan mahasiswa sebagai kunci fungsi hash. Ilustrasi1.Tabel Contoh penyimpanan menggunakan hashing. A Mekanisme Operasi-operasi basis data : 1. Fetch record Untuk mem-fetch sebuah record yang terdapat dalam data, kita memetakan kunci dari query yang diminta oleh user untuk kemudian dilewatkan ke fungsi hash., kemudian fungsi hash akan menunjukkan alamat dari data yang diminta oleh user dan kemudian data dipindahkan ke memory buffer untuk diproses lebih lanjut. 2. Get-next record Untuk mendapatkan record selanjutnya setelah kita selesai membaca sebuah record, manfaatkan pointer pada record sebelumnya yang menunjuk pada address di mana record ke- n+1 disimpan setelah record ke n. Dengan memanfaatkan pointer maka waktu untuk mendapatkan record ke- n+1 dapat dikurangi. Jika kita tidak menggunakan pointer , maka sistem harus menelusuri seluruh data untuk mencari record ke-n+1. Ilustrasi 2. Get-next record memanfaatkan pointer. Bila tidak ada pointer, kita dapat memanfaatkan konsep dense index files. 3. Insert a record Untuk menyisipkan sebuah record baru, kita perlu memetakan kunci fungsi hash untuk mendapatkan alamat penyimpanan, kemudian langsung menyisipkan record yang baru ke alamat tersebut. Berikut contoh penyisipan data mahasiswa dengan fungsi hash yaitu jumlah seluruh kode ascii huruf-huruf pertama kata-kata penyusun nama mahasiswa di modulo 100. record yang pertama direkam akan dicatat utuk kemudahan operasi retrieve all records. 4. Update a record Untuk memperbaharui sebuah record, kita harus mengetahui dimana record tersebut berada, alamat sebuah record dicari menggunakan kunci hash yang dipetakan melalui fungsi hash, kemudian mencari atribut-atribut yang ingin diperbaharui dan menimpa nilai yang lama. Kasus bila ternyata alamat hasil fungsi hash tidak berisikan kunci yang sama (artinya terjadi collision saat penyisipan), berarti kita harus mencari alamat record tersebut berada dimana berdasarkan strategi hash kita untuk penanganan collision, kasus ini mirip seperti saat fetch a record, tetapi record tersebut tidak berada pada alamat yang bersangkutan. 5. Retrieve all records Alamat record pertama yang direkam telah tersimpan, maka kita dapat menelusuri record-record berikutnya sampai habis untuk membaca semua record. Bila tidak ada pointer, kita dapat memanfaatkan konsep dense index files. 6. Reorganization Dalam metode insert a record , terdapat peluang untuk mencapai collision dimana alamat hasil fungsi hash sudah berisikan record. Dalam hal ini,beberapa strategi diterapkan untuk menghindari collision ini seperti contohnya Linear Probing, Quadratic Probing, Separate Probing, dan Multi Hash Function. Dengan menggunakan strategi Linear Probing, ataupun Separate Chaining, record akan tersusun dengan baik dan blok kosong yang tidak terpakai dapat diminimalisir sehingga reorganisasi file mungkin kurang dibutuhkan untuk data yang padat. Sedangkan pada kasus Multi Hash Function (Quadradtic Probing juga dapat menghasilkan kasus yang serupa) dapat menghasilkan tabel seperti di bawah ini : Ilustrasi 3.Penyisipan Pada beberapa kasus, terjadi collision dimana alamat hasil fungsi hash sudah berisikan record. Bila hal tersebut tejadi, maka ada beberapa strategi yang dapat kita lakukan, misalnya membuat 2 fungsi hash, bila fungsi pertama menghasilkan collision maka record akan dipetakan kembali menggunakan fungsi kedua. Strategi-strategi tersebut dibahas lebih dalam pada bagian “Strategi hash”. Kelakuan sistem database saat collision terjadi tergantung strategi mana yang kita implementasikan. Saat menyisipkan data baru, data sebelumnya akan menunjuk ke data baru yang dianggap sebagai next record (sesuai urutan perekaman). Alamat Ilustrasi 4. Multi Fungsi hash. Memetakan ke blok data berbeda. Hal ini menyebabkan blok-blok baru yang dialokasikan sebagai tempat untuk record yang mengalami collision memiliki alamat-alamat kosong (dalam gambar di atas diperlihatkan hanya 2 alamat yang digunakan sedangkan memory yang dialokasikan untuk satu blok adalah 50). Dalam keadaan seperti ini lah akan dilakukan reorganisasi file sehingga blok-blok tersebut dapat digunakan semaksimal dan se-efisien mungkin. Prinsip reorganisasinya yaitu blok-blok yang hanya memiliki sedikit record (batas “sedikit” tergantung pengimplementasi) disisipkan ke blok-blok lain yang memiliki memory kosong (dapat dibantu oleh indeks untuk mencari blok memory kosong). Pada contoh diatas, saat reorganisasi, bisa memindahkan kedua record di blok 2 ke alamat kosong di blok 1, kemudian blok 2 dibebaskan. B Strategi hash : 1. Linear Probing Bila sebuah pemetaan kunci oleh fungsi hash ternyata sudah ditempati oleh record tertentu, maka cara paling sederhana adalah mencari posisi kosong terdekat berikutnya, metode ini disebut Linear Probing. Separate Chaining adalah membuat list berkait saat terjadi collision, ketika alamat pemetaan ternyata sudah berisi suatu record, maka kita sambung saja record tersebut menggunakan struktur data list berkait. Ilustrasi 6. Separate Chaining. Nama sebagai Kunci Untuk kasus pencarian data kita harus membaca suatu alamat sampai habis (baca sampai ujung list berkait). List berkait tersebut mempunyai 2 pointer yaitu pointer tehadapat elemen list berikutnya dan pointer terhadap next record, karena belum tentu elemen list berikutnya merupakan next record. 4. Multi Hash Function Bila terjadi collision atau data yang kita maksud (pencarian maupun pembaharuan) ternyata bukan di alamat hasil fungsi, kita dapat memetakan kembali kunci fungsi hash ke fungsi hash kedua, fungsi hash ketiga dan seterusnya. Fungsi hash bukan pertama ini dapat memetakan record ke block data yang sama ataupun block data yang berbeda. Ilustrasi 5. Linear Probing. Nama sebagai Kunci penyisipan. Begitu pula untuk pencarian maupun pembaharuan data, bila data yang kita maksud ternyata bukan di alamat hasil fungsi, maka lanjut mencari ke alamatalamat berikutnya. 2. Quadradtic Probing Linear Probing hanya mencari lokasi kosong terdekat, bila collision banyak terjadi maka metode hash bisa menjadi sama seperti sequential. Bila hasil fungsi hash merupakan K, maka kita akan mencari lokasi kosong di K+1, K+4, K+9 dan seterusnya. Metode seperti ini disebut Quadradtic Probing. Begitu pula untuk pencarian maupun pembaharuan data, bila data yang kita maksud ternyata bukan di alamat hasil fungsi, maka lanjut mencari ke alamat-alamat berikutnya. 3. Separate Chaining Ilustrasi 4. Multi Fungsi hash. Memetakan ke blok data berbeda. Ketika terjadi overflow,dalam artian semua alamat hasil pemetaan kunci seluruh fungsi hash telah berisi record maka strategi resolusinya menggunakan Linear Probing dimana kita mencari tempat kosong terdekat. V. PERFORMANSI AKSES banyak memory kosong bila tidak pernah ada kunci yang dipetakan ke alamat memory bersangkutan. Reorganisasi pada hash walau mengefektifkan memory, tetapi dapat menyebabkan waktu operasi data menjadi meningkat. Metode hash ini baik untuk kasus data yang unik, semakin berbeda karakteristik kunci data maka semakin cocok fungsi hash ini dipakai, karena collision dapat diminimalisir dan proses operasi terhadap data lebih cepat (alamat pemetaan makin unik). Contohnya adalah sistem basis data mahasiswa dimana kuncinya merupaan NIM mahasiswa, produk supermarket (barcode produk unik), perpustakaan (ISBN buku unik). VI. PENGARUH INDEKS Tabel 2. Perbandingan dengan model lain Tabel 3. Perbandingan dengan model lain Parameter waktu diukur berdasarkan kompleksitas algoritma. Secara prinsip Hash merupakan metode yang relatif sulit untuk diimplementasikan dibandingkan metode-metode lainnya karena banyak aspek yang perlu diperhatikan. Heap unggul dalam kesederhanaan implementasi tetapi mudah terjadi kekusutan pencarian record. Sequential dan multitable clustering unggul dalam hal efektivitas memory space tetapi tidak terlalu optimal dalam hal waktu, contohnya untuk operasi penyisipan, pada kasus banyak kunci dengan awalan mirip walau dibantu indeks sekalipun tetap membutuhkan waktu pencarian ruang kosong. Reorganisasi file pada ketiga metode ini selain mengefektifkan memory, juga dapat mempercepat waktu operasi. Hash unggul dalam hal waktu untuk melakukan operasioperasi yang sering dilakukan berupa fetch a record, insert a record dan update (dengan kompleksitas algoritma O(1)) bila fungsi hash dapat dirancang dengan sangat baik. Pada kenyataannya, pada sistem basis data sangatlah sulit untuk tidak ada collision sama sekali, sehingga kita hanya dapat mengurangi hal tersebut melalui strategi-strategi yang sudah ada. Hash kurang unggul dalam hal efektivitas memory space karena bisa ada Indeks secara umum dapat membantu dalam hal mekanisme operasi. Indeks yang dgunakan dapat membantu menemukan sub-blok alamat kosong pada blok yang telah dialokasikan, ketika overflow terjadi, maka akan dicari alamat kosong melalui indeks untuk diletakkan pada alamat tersebut. Dalam hal reorganisasi, bila terdapat blok dengan jumlah record yang sedikit (batas “sedikit” ditentukan oleh pembuat sistem) maka data tersebut akan dipindah ke alamat kosong (dengan bantuan indeks) untuk melepas memory pada blok bersangkutan, hal ini mempercepat proses dibanding harus menelusuri terlebih dahulu blok lain mana yang masih mempunyai alamat kosong. Indeks yang cocok digunakan dapat berupa dense index files, menyimpan semua kunci yang pernah muncul, kemudian memetakan kunci-kunci tersebut menjadi alamat dengan fungsi hash, dari hal tersebut kitadapat menghitung berapa alamat yang kosong pada suatu blok (alamat awal dan akhir suatu blok diketahui) tanpa harus menelusurinya. Dense index files juga dapat dimanfaatkan untuk operasi retrieve all records maupun get-next record dengan mengindeks sesuai urutan kunci. REFRENSI DAN BACAAN [1] [2] [3] [4] [5] [6] Patil, Varsha H. “Data Structures Using C++”. India : Oxford University Press, 2012. Silberchatz, Abraham. Korth, Henry F. S. Sudharsan. “Database System Concepts”6th Ed. New York : Mc Graw Hill, 2011. http://ecomputernotes.com/database-system/rdbms/types-of-fileorganization. Diakses pada Selasa, 4 Februari 2014 (17:07 WIB) http://www.cs.cmu.edu/~clo/www/CMU/DataStructures/Lessons/l esson11_2.htm. Diakses pada Rabu, 5 Februari 2014 (09:36 WIB) A.T Akinwale dan F.T. Ibharalu. “The Usefulness of Multilevel Hash Tables with Multiple Hash Functions in Large Database”. Annals : Computer Science Series. 7th Tome 1st Fasc. 2009. http://www.cise.ufl.edu/~sahni/dsaac/enrich/c11/overflow.htm. Diakses pada Rabu, 5 Februari 2014 (10:11WIB). PERNYATAAN Dengan ini kami menyatakan bahwa makalah yang kami tulis ini adalah tulisankamia sendiri, bukan saduran, atau terjemahan dari makalah orang lain, dan bukan plagiasi. Bandung, 10 Februari 2013 Darwin Prasetio (13512001) Jan Wira Gotama Putra (13512015) Melvin Fonda (13512085)