File_Organization_Hash

advertisement
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)
Download