Anda di halaman 1dari 12

SISTEM BASIS DATA

Indexing and Hashing

Oleh
Desty Rodiah ( 09071002034 )

IF-6B

PROGRAM STUDY TEKNIK INFORMATIKA


FAKULTAS ILMU KOMPUTER
UNIVERSITAS SRIWIJAYA
2010 - 2011
INDEXING AND HASHING

ORGANISASI FILE INDEX


o Sebuah File Akan Terus Diakses Untuk Mencari Datanya (Fetch Data) Untuk
Kemudian Data Tersebut Diambil Dari File (Retrieve Data)
o Untuk mencari data pada sebuah tabel dapat dilakukan secara sekuential. Namun
cara pencarian ini akan memakan waktu lama jika file terdiri dari banyak record

Pada dasarnya terdapat 2 macam pengurutan :


o Pengurutan secara indeks (Ordered Indices)
Berdasarkan urutan dari sebuah nilai
o Pengurutan secara hash (Hash Indices)
Berdasarkan fungsi hash yang digunakan

Tiap pengurutan memperhatikan faktor faktor , yaitu :


o Tipe Akses (Access time)
Tipe akses dalam mencari record. Yang lebih dipilih tentunya yang lebih
efisien
o Waktu Akses (Insertion time)
Waktu yang dibutuhkan untuk menemukan sebuah record
o Waktu Hapus (Deletion Time)
Waktu yang dibutuhkan untuk menghapus sebuah item
o Ruang Spasi (Space Overhead)
Ruang tambahan yang diminta oleh stuktur index.
1. Index yang terurut (Ordered Indices)
o Untuk mengatasi pencarian record dalam sebuah file secara acak, dapat digunakan
struktur index.
o Tiap struktur index dihubungkan sesuai dengan key yang dicari (search key)
o Sebuah file dapat mempunyai beberapa file indeks, dengan search key yang ber
beda-beda.
o Jika search key yang dipakai adalah primary key pada sebuah file master maka
file index yang dibuat disebut primary indeks
o Jika Search Key Yang Dipakai Adalah Bukan Primary Key Pada Sebuah File
Master Maka File Index Yang Dibuat Disebut Secondary Indeks
o File index terdiri dari nomor record serta field yang digunakan sebagai search key
o Sebelum Mencari Data Pada File Master, Data Dicari Terlebih Dahulu Pada File
Index, Jika Data Tersebut Ada, Maka File Index Langsung Menunjuk Lokasi Dari
Data Tersebut Pada File Master

o
Primary Indeks
Pada file indeks yang menggunakan primary indeks, semua file master telah diurutkan
berdasarkan primary key. File indeks juga telah diurutkan berdasarkan primary key
semua file yang ada di atas disebut file indeks sekuential.

Record indeks terdiri dari search key dan pointer yang menunjuk pada satu atau lebih
record. Pointer terdiri dari identifier dari blok tempat record berada dalam disk
Ada 2 tipe penguurutan indeks yang digunakan
1. Dense index
Semua nilai dari search key muncul pada file index
Kelebihan Desense Indeks
• Mencari lokasi record lebih
cepat dibanding sparse
index
Kekurangan Desense Indeks
• Membutuhkan tempat
indeks lebih besar
dibanding sparse index
• Jika file master berubah,
maka file index juga harus dirubah (maintenace lebih sulit dibanding dengan
sparse index))

2. Sparse index
Hanya sebagian dari nilai search key yang muncul pada file index
Kelebihan Sparse Indeks
• Membutuhkan tempat
indeks lebih kecil
dibanding dense index
• Maintenace lebih
mudah dibanding dengan
dense index
Kekurangan Spares Indeks
• Mencari lokasi record lebih lambat dibanding dense index

Secondary Indeks
Secondary indeks harus berupa
dense indeks
MULTILEVEL INDEKS
o Meskipun menggunakan sparse index, file
index dapat menjadi besar sehingga proses
pencarian tidak efisien.
o Misal, jika file master mempunyai record
100.000, dengan tiap blok menyimpan 10
record. Jika 1 record pada file index
menyimpan 1 blok. Maka file index
mempunyai 10.000 record. File index yang
terbentuk masih sangat besar untuk disimpan
dalam sebuah disk.
o Jika file index tersebut tidak cukup dimuat
di dalam main memory, maka pencarian data akan lambat.
o Untuk mengatasi masalah ini, maka dibuatlah sparse index pada primary index
( multilevel index)

INDEKS UPDATE (INSERT)


o File Indeks Harus Diupdate Jika Proses Insert Atau Delete Record Terjadi
o Insert Record
o Pada dense indeks
Jika nilai yang diinsert belum ada pada file indeks , maka nilai dari search
key diinsert pada file indeks
o Pada sparse indeks
Jika pada file index, nilai yang yang diinsert sudah ada, maka file index
tidak usah dirubah, sebaliknya jika pada file index nilai yang diinsert tidak
ada, maka file index harus dirubah

INDEKS UPDATE (DELETE)


Delete record  Untuk menghapus record, record tersebut harus dicari dulu.
• Pada dense indeks
o Jika nilai yang didelete hanya satu pada file master, maka pada file indeks
nilai yang didelete harus dihapus
o Jika nilai yang didelete lebih dari satu pada file master, maka pada file indeks,
nilai yang didelete tidak perlu dihapus
• Pada sparse indeks
o Jika pada file index, nilai yang yang didelete ada, maka nilai tersebut pada file
index harus dihapus, sebaliknya jika pada file index nilai yang didelete tidak
ada, maka file index tidak dirubah

FILE INDEKS B+ -TREE


B-tree adalah suatu metode untuk menyimpan dan menemukan suatu file (disebut

juga records atau keys) dalam suatu database. Algoritma b-tree meminimalkan jumlah

dari media yang harus dilalui untuk mencapai suatu record database yang diinginkan

sehingga akan mempercepat proses.

Gambar 3. Struktur dari sebuah tree


B-tree lebih dianjurkan ketika pengaksesan ke nodes adalah menggunakan media

harddisk bukan RAM (Random Access Memory). Dibutuhkan waktu seribu kali lebih

lambat untuk mengakses elemen data dari harddisk dibanding RAM, karena struktur

harddisk yang memiliki bagian-bagian mekanik yang bergerak. Metode b-tree sangat

menghemat waktu dimana setiap nodes bisa mempunyai beberapa cabang (disebut

dengan children) jika dibanding dengan binary-tree yang hanya mempunyai dua children.

Ketika terdapat beberapa children dalam suatu nodes, maka suatu record dapat ditemukan

dengan hanya melewati beberapa nodes saja dibandingkan dengan node yang hanya

mempunyai dua children.

Gambar 4. Struktur dari sebuah b-tree

Dalam sebuah tree (pohon), record disimpan dalam suatu lokasi yang disebut

leaves (cabang). Suatu record dalam b-tree selalu berada pada titik akhir. Jumlah

maksimal dari children setiap node disebut order. Jumlah dari disk access yang

dibutuhkan disebut depth. Pada gambar diatas (kanan) menunjukkan sebuah b-tree

dengan 3 buah order untuk menuju suatu record yang ada dalam 8 leaves. Pada gambar

kiri adalah binary-tree dengan depth 4 dan b-tree dengan depth 3. Jelas terlihat bahwa

metode b-tree memungkinkan pengaksesan record lebih cepat dengan asumsi semua

sistem parameter adalah sama.


Dalam prakteknya b-tree bisa memiliki ribuan atau jutaan record. Tidak harus

semua leaves memiliki suatu record, namun paling tidak adalah separuhnya harus

memiliki. Perbedaan depth antara skema b-tree dan binary-tree adalah dalam penggunaan

di sebuah sistem database dimana b-tree bisa memiliki order yang lebih tinggi, misalnya

32,64,128 atau lebih. Penambahan sejumlah record dalam database akan menambah

depth, begitu juga sebaliknya. Struktur tree mendukung berbagai operasi dasar termasuk

search, predecessor, successor, minimu, maximum, insert dan delete dalam sebuah tree.

ORGANISASI FILE HASHING


Komponen Hashed File:
• File Space
o Terbagi dalam slot-slot
o Tiap slot menyimpan sebuah record
• Rumus
Menghasilkan slot address, dihitung berdasarkan key dari sebuah record

Keuntungan pemakaian hashing adalah


• Nilai key yang sebenarnya dapat dipakai karena diterjemahkan ke dalam sebuah
alamat.
• Nilai key adalah address space independent bila berkas direorganisasi, fungsi hash
berubah tetapi nilai key tetap.
Kelemahannya adalah
• Distribusi nilai key yang dipakai
• Banyaknya nilai key yang dipakai relative terhadap ukuran dari ruang alamat
• Banyaknya record yang dapat disimpan pada alamat tertentu tanpa menyebakan
benturan
• Teknik yang dipakai untuk mengatasi benturan

Hashing dapat digunakan bersama-sama dengan pencarian tabel.


Penampilan fungsi hash bergantung pada :

• Distribusi nilai key yang dipakai


• Banyaknya nilai key yang dipakai relatif terhadap ukuran dari ruang
alamat.
• Banyaknya record yang dapat disimpan pada alamat tertentu tanpa
menyebabkan benturan.
• Teknik yang dipakai untuk mengatasi benturan

Beberapa fungsi hash yang umum digunakan :

• Division Remainder
• Mid Square
• Folding

Bucket Addressing
Pendekatan lain dalam mengatasi collision
adalah hash ke dalam block atau bucket yang
dapat memberikan tempat sejumlah record.
Contoh :
Sebuah berkas relative mempunyai relative
address space dari 0 sampai M dan sebuah
bucket berukuran B record, address space
akan terdiri dari B(M+1) record.
Jika file terdiri dari N record, maka :
N__
Factor Muat = B(M + 1)
B record dapat semuanya di hash kedalam
relitf address yang sama tanpa menyebabkan collision.
Pada saat sebuah bucket penuh, beberapa tempat baru harus ditemukan untuk
record tersebut. Pendekatan dari masalah bucket penuh pada dasarnya sama dengan
pendekatan untuk mengatasi collision dengan record addressing.
Jika open addressing dipakai, space dicari untuk bucket berikutnya (misal dengan linear
probing) atau dalam bucket lainnya (misalnya dengan double hashing).
Jika teknik separate overflow yang dipakai, record baru ditempatkan dalam suatu
himpunan bucket yang dirancang khusu untuk tempat record yang tak dapat ditampung
pada bucket primer.Bucket ini disebut bucket overflow.
Record-record yang disimpan dalam sebuah bucket dapat dikelola dalam :
• Dapat disipkan dalam urutan berdasarkan penempatannya di bucket
• Dapat dipertahankan urutan nilai key-nya.
Bucket addressing ini umum dipakai. Ukuran dari sebuah bucket dapat ditentukan oleh
ukuran track atau sector dalam DASD. Ukuran bucket umumnya sama dengan ukuran
block untuk file. Satu keuntungan penting dari penggunaan bucket yang dapat
menampung banyak record ini adalah record dengan panjang yang berbeda dapat dipakai.

INDEX DEFINITION IN SQL


Create index : untuk membuat index.
Syntax : CREATE [UNIQUE] INDEX nama_index ON nama_tabel (nama_kolom);
Contoh : CREATE INDEX KRSx ON KRS(Kd_mk);
Ket : Spesifikasi unique akan menolak key yang sama dalam file.

Drop index : untuk menghapus index


Syntax : Drop index nama_index;
Contoh : Drop index KRSx;

MULTIPLE KEY ACCES


Organisasi berkas yang memperbolehkan record diakses oleh lebih dari satu key
field disebut organisasi berkas dengan banyak key.
Ada banyak teknik yang dipakai untuk organisasi berkas dengan banyak key ini.
Hampir semua pendekatan bergantung pada pembentukan indeks yang dapat memberi
akses langsung dengan banyak nilai key.
Selain organisasi berkas sequential, relative, dan index sequential yang telah dibahas
sebelumnya, berikut akan dibahas mengenai organisasi berkas multi key. Inti dari organisasi
berkas ini adalah, sebuah berkas (file) harus dapat diakses secara langsung (direct) dari berbagai
kunci atribut (key field) yang ditentukan.
Misalkan file MAHASISWA yang berisi biodata mahasiswa, harus bisa dicari record data
seorang mahasiswa berdasarkan NPMnya, atau NAMAnya atau mungkin ALAMATnya.
Organisasi berkas seperti ini sangat diperlukan karena berbagai user akan membutuhkan data
yang sama dengan cara pandang yang berbeda. Sayangnya, jarang software database yang bisa
melakukan hal ini (menyediakan fasilitas pengorganisasian berkasnya secara multi key).
Ada banyak cara untuk mengorganisasi berkas semacam ini, misalkan dengan cara (1)
inversion, dan (2) multi-list. Cara inversion mirip dengan organisasi relative yang satu tabel
index-nya berisi key field yang terurut dan sebuah pointer yang menunjuk ke alamat di mana data
disimpan. Bedanya, karena di sini dibutuhkan banyak kunci, maka di tabel tersebut disimpan pula
kunci-kunci atribut lainnya yang dibutuhkan.
Cara kedua (multi-list) hampir sama dengan cara pertama, yaitu dibuat tabel index yang
terurut key field-nya dan penunjuk ke nomor record (pertama) datanya, hanya di setiap record
ditambahkan pointer (penunjuk) ke record-record berikutnya sesuai urutan key field yang
ditentukannya. Tentu penunjuk itu akan berubah datanya bila akses dilakukan dengan key field
lainnya.
Digunakan indeks untuk beberapa jenis query tertentu
Contoh :
select account-number
from account
where branch-name = “Perryridge” and balance - 1000
Kemungkinan startegi untuk pengolahan indeks pada atribut tunggal
1. Use index on branch-name to find accounts with balances of $1000; test branch-
name = “Perryridge”.
2. Use index on balance to find accounts with balances of $1000; test branch-name
= “Perryridge”.
3. Use branch-name index to find pointers to all records pertaining to the Perryridge
branch. Similarly use index on balance. Take intersection of both sets of pointers
obtained.
Indeks dalam multiple atribut :
Penggabungan indeks pada search key (branch-name, balance).
1. With the where clause
where branch-name = “Perryridge” and balance = 1000
Indeks pada penggabungan search key akan mengambil record yang memenuhi
kondisi keduanya.
2. Menggunakan indeks terpisah dalam waktu yang kurang efisien kita bisa
mendapatkan banyak record(pointer) ynag memenuhi hanya satu kondisi
where branch-name - “Perryridge” and balance < 1000
3. Tapi tidak efisien untuk menangani
where branch-name < “Perryridge” and balance = 1000
record yang memenuhi kondisi pertama tapi tidak kondisi kedua

Anda mungkin juga menyukai