• Tidak ada hasil yang ditemukan

Pada bab ini akan mengemukakan dan mengulas hasil yang telah didapat dari penelitian yang dilakukan. Beberapa langkah dalam penelitian ini telah memberikan hasil seperti diulas pada tiap sub bab di bawah ini.

Perancangan

Langkah awal untuk memulai penelitian ini adalah perancangan, berdasarkan permasalahan yang telah diungkapkan sebelumnya bahwa pencarian suatu objek sangat berkaitan dengan pengecekan keanggotaan objek tersebut pada suatu set maka diperlukan suatu metode yang dapat mendukung kemudahan mendapatkan objek yang dicari. Dalam penelitian ini telah dibuat rancangan untuk mensimulasikan pencarian suatu objek pada suatu set yang besar menggunakan metode Bloom filter dan sequential search.

Perancangan Bloom filter

Perancangan menggunakan Bloom filter dilakukan dengan menerapkan teknik hashing pada semua objek yang ada pada suatu set. Di sisi lain, melakukan

hashing terhadap semua elemen dalam Bloom filter dengan memori tunggal akan

menghasilkan tingkat false positive yang tinggi (Kanizo et al. 2012). Keseluruhan objek yang telah di-hashing ditempatkan pada suatu array dengan penempatan secara acak namun dengan pengkodean menurut ketentuan yang telah ditetapkan. Dengan pengkodean ini setiap objek akan menempati kombinasi bit tertentu dalam suatu array sebagai alamat dari objek tersebut.

Dengan adanya pengalamatan terhadap setiap objek maka untuk mendapatkan kembali objek tersebut bukanlah suatu hal yang rumit, hal ini terjadi ketika objek yang dicari berada pada suatu set yang kecil. Sebaliknya ketika suatu objek berada pada suatu set yang sangat besar dan dengan ketersediaan bit yang disiapkan untuk menampung objek terbatas jumlahnya maka hal ini akan membuat kombinasi alamat pada bit penampung menjadi semakin rumit dan saling tumpang tindih. Dengan pengalamatan yang tumpang tindih ini kemungkinan dapat mengakibatkan terjadinya kesalahan yang diberikan oleh

Bloom filter ketika diminta mencari suatu objek, hal inilah yang dikenal dengan

false positive. Dengan adanya kemungkinan false positive maka keakuratan suatu

Bloom filter menjadi sesuatu yang dipertanyakan.

Dalam penelitian ini digunakan beberapa variabel yang akan dikombinasikan dan dijadikan sebagai input bagi Bloom filter. Setiap kombinasi dari variabel yang ada telah menghasilkan output false positive yang bervariasi.

13 Dengan output yang bervariasi ini dapat dibandingkan hasil kombinasi variabel mana saja yang menghasilkan tigkat false positive yang lebih rendah. Tabel 2 memperlihatkan nilai-nilai dari variabel yang dijadikan sebagai input Bloom filter. Dalam proses pencarian suatu objek menggunakan Bloom filter ini, dilakukan dengan mencari 100 objek acak secara bergantian. Selain menghitung jumlah false positive yang dihasilkan oleh Bloom filter pada penelitian ini juga merekam waktu yang digunakan oleh Bloom filter untuk mendapatkan keanggotaan suatu objek dalam sebuah set. Gambar 5 memperlihatkan alur proses pencarian menggunakan Bloom filter yang dikombinasikan dengan pencarian

sequential search sebagai pembanding dan sekaligus sebagai verifikasi pencarian

objek pada suatu set.

Perancangan Sequential Search

Pencarian menggunakan sequential search lebih sederhana dibandingkan dengan Bloom filter. Pencarian menggunakan metode sequential search dilakukan dengan mencari objek secara berurutan dari bit awal sampai bit terakhir pada suatu set objek. Pencarian secara sequential search tidak memerlukan pengalamatan terhadap objek ataupun pengurutan objek terlebih dahulu. Dalam Gambar 5 juga diperlihatkan alur pencarian menggunakan sequential search. Ketika suatu objek yang akan dicari menggunakan sequential search, objek tersebut akan dibandingkan satu per satu dengan objek yang ada pada buffer. Dalam pencarian menggunakan sequential search, objek tercepat yang ditemukan adalah ketika objek yang dicari berada di awal ruang penyimpanan, dan objek terlama untuk ditemukan adalah ketika objek berada di akhir urutan ruang penyimpanan.

Simulasi Pembangkitan Objek

Tahapan pembangkitan objek yaitu dilakukan menggunakan generator pembangkit objek secara acak dan dalam kondisi yang unik yaitu tidak ada duplikasi objek dari hasil pembangkitan. Hal ini telah dilakukan pengecekan terhadap objek yang dibangkitkan. Objek yang dibangkitkan ini akan tersimpan dalam suatu array yang disediakan. Pembangkitan ini dilakukan dengan beberapa variasi besaran objek. Pembangkitan objek pada penelitian ini mempunyai 3 variasi objek yaitu bervariasi mulai dengan 20000 objek, 200000 objek dan 2000000 objek. Objek yang dibangkitkan dengan variasi seperti ini dimaksudkan agar dapat melihat pengaruh perbedaan besaran objek terhadap false positive dan waktu untuk mendapatkan objek pada suatu set dengan jelas.

Simpan Objek pada Buffer

Buffer yang dimaksud dalam hal ini adalah penetapan jumlah objek yang

akan di-cache dan ditempatkan pada suatu wadah penampungan objek atau dinamakan dengan buffer. Tahapan ini diawali dengan menetapkan besaran jumlah objek yang akan di-cache dengan berbagai besaran yaitu bervariasi antara 2%, 4%, 6%, 8%, 10%, 12%, 14%, 16%, 18%, hingga 20%. Tiap besaran objek yang di-cache tersebut akan dijadikan sebagai masukan yang berbeda-beda dan dikombinasikan dengan variabel lain seperti yang telah dimuat pada Tabel 2. Objek yang disimpan pada buffer ini sebelumnya telah di-hashing dengan teknik dan ketentuan hashing CRC32.

Selain sebagai penyimpanan objek yang di-cache, pada buffer juga disediakan sejumlah bit yang digunakan untuk menampung objek yang telah

di-cache. Jumlah bit yang disediakan sebagai penampung objek yang di-cache juga

divariasikan dengan besaran 8 bit, 16 bit, dan 32 bit. Bit-bit yang disediakan ini digunakan untuk menyimpan alamat objek yang ada. Penyimpanan alamat objek ini dilakukan dengan menggunakan beberapa kombinasi bit (map bit) yaitu mulai dari kombinasi 2, 3, 4, 5, 6, 7, dan 8 bit untuk satu objek.

Get Objek X

Langkah selanjutnya yaitu Get objek x, langkah ini dimaksudkan untuk mendapatkan satu objek dari seluruh objek yang dibangkitkan. Objek x ini digunakan sebagai objek yang akan dicari, dan target pembanding untuk objek x

ini adalah objek yang telah tersimpan pada buffer. Untuk mencari objek x pada

buffer, objek x ini juga di-hashing menggunakan teknik dan ketentuan hashing

yang sama dengan teknik dan ketentuan yang digunakan terhadap objek pada

buffer. Objek x yang didapat pada tahapan ini digunakan untuk Bloom filter dan

sequential search. Dalam penelitian ini diambil sebanyak 100 kali objek yang

berbeda (acak) secara bergantian.

Periksa Objek X dengan Bloom Filter

Objek x yang telah didapat pada tahapan sebelumnya selanjutnya dibandingkan dengan objek yang ada pada buffer menggunakan teknik Bloom

filter. Objek x tersebut akan di-hashing menggunakan teknik dan ketentuan yang

sama dengan teknik dan ketentuan yang digunakan pada objek yang tersimpan pada buffer, yaitu hashing menggunakan CRC32. Nilai hash dari objek x ini akan dibandingkan dengan nilai-nilai hashing dari objek yang ada pada buffer oleh

Bloom filter. Jika nilai hash objek x sama dengan nilai hash objek pada buffer

15 Sebaliknya jika nilai hash dari objek x berbeda dengan nilai hash objek yang ada pada buffer maka Bloom filter akan menyatakan objek x tersebut tidak ada pada

buffer atau bukan bagian dari set. Hal ini akan terus dilakukan hingga sebanyak

objek x yang akan dicari pada suatu set objek yang ada pada buffer.

Periksa Keberadaan Objek X dengan Sequential Search

Untuk memastikan Objek x yang telah dinyatakan oleh Bloom filter ada atau tidak pada buffer, maka diperlukan pencarian menggunakan teknik lain yaitu

sequential search. Pada tahapan ini ketika hasil pencarian menggunakan Bloom

filter menyatakan objek x ada pada buffer maka akan dilakukan verfikasi

menggunakan sequential search terhadap objek x. Apabila hasil pencarian menggunakan sequential search sama dengan hasil yang dinyatakan oleh Bloom

filter maka dapat dipastikan objek x benar-benar ada pada buffer dan akan

dilanjutkan dengan objek x yang lainnya sampai sebanyak objek x yang akan diperiksa, tetapi bila hasilnya menyatakan objek x tidak ada pada buffer maka hal ini akan dihitung sebagai false positive dari Bloom filter.

Sebaliknya jika hasil pencarian menggunakan Bloom filter menyatakan objek x tidak ada pada buffer maka verifikasi menggunakan sequential search

juga tetap dilakukan. Apabila hasil pencarian objek menggunakan sequential

search sama dengan hasil pernyataan dari Bloom filter maka dapat dipastikan

bahwa objek x benar-benar tidak ada pada buffer dan dilanjutkan pada objek x

berikutnya sampai sejumlah objek x yang akan diperiksa, namun ketika hasil pencarian menggunakan sequential search menyatakan objek x ada pada buffer

maka hal ini akan menunjukkan bahwa Bloom filter memberikan jawaban yang keliru atau disebut dengan false negative.

Simulasi Menggunakan Bloom Filter

Seperti dijelaskan pada sub bahasan sebelumnya bahwa objek yang digunakan adalah objek yang dibangkitkan secara acak menggunakan generator pembangkitan objek yang membangkitkan objek secara unik atau tanpa adanya duplikasi objek. Pembangkitan objek pada simulasi ini bervariasi yaitu 20000, 200000, dan 2000000 objek. Objek tersebut kemudian di-hashing menggunakan

hashing CRC32.

CRC32 adalah metode yang digunakan untuk mendeteksi kesalahan dengan menggunakan polynomial 32 bit atau dengan kata lain polynomial 4 byte. Pada

algoritme ini yang pertama dilakukan adalah inisialisasi variabel pada register dengan suatu nilai, dengan kata lain inisialisasi CRC umumnya menggunakan bilangan hexadesimal yaitu FFFFFFFF.

Objek yang telah di-hashing tersebut kemudian ditempatkan pada suatu array dengan beberapa variasi kombinasi bit pengalamatan. Pengalamatan ini

bervariasi dari kombinasi 2, 3, 4, 5, 6, 7, dan 8 bit. Selanjutnya objek tersebut dipilih secara acak dengan jumlah persentase objek yang ditempatkan pada buffer

besarnya bervariasi mulai 2%, 4%, 6%, 8%, 10%, 12%, 14%, 16%, 18%, hingga 20%.

Gambar 5 Proses Simulasi pada Bloom filter dan Sequential search

Setelah objek ditempatkan pada buffer maka disisi lain akan dilakukan pemilihan satu objek secara acak untuk dijadikan objek yang nantinya akan dibandingkan dengan objek yang ada pada buffer. Objek ini juga akan di-hashing

menggunakan teknik hashing yang sama dengan objek yang ada pada buffer yaitu CRC32 sehingga nilai hasing dari objek ini akan dibandingkan dengan nilai

hashing dari objek yang ada pada buffer.

Sequential Search Bloom Filter

j = 1; z = 100; Mulai

Simpan objek pada

Buffer Get Objek X j++ Ada Objek X ? Periksa Keberadaan Objek X Count False Negative Selesai Count False Positive Periksa Keberadaan Objek X Apakah j >= z ? Pembangkitan Objek Ada Tidak Tidak Ada

Ada Tidak Ada

Tidak

17 Ketika nilai hashing objek yang dicari sama dengan nilai hashing objek yang ada pada buffer maka Bloom filter akan menyatakan bahwa objek tersebut berada pada set (dalam hal ini buffer). Namun ketika nilai hashing dari objek yang dicari tidak sama dengan nilai hashing objek yang ada pada buffer, maka Bloom

filter akan menyatakan objek tersebut tidak ada pada set (buffer).

Pencarian objek dapat dilakukan beberapa kali tergantung dengan kebutuhan seberapa banyak objek yang akan dicari, dalam simulasi ini dilakukan pencarian terhadap 100 objek untuk setiap kombinasi parameter. Selain itu setiap pencarian terhadap objek yang dicari pada simulasi ini juga dilakukan pencatatan waktu yang diperlukan oleh Bloom filter untuk mendapatkan objek tersebut. Gambar 5 memperlihatkan proses simulasi pencarian terhadap suatu objek hingga objek tersebut dinyatakan ada atau tidak ada pada suatu set objek.

Simulasi Menggunakan Sequential Search

Pencarian menggunakan sequential search dalam hal ini dilakukan menggunakan objek yang sama dengan objek yang digunakan pada Bloom filter. Objek x telah ditetapkan untuk dicari akan dibandingkan satu per satu dengan objek yang ada pada buffer. Hasil dari pencarian menggunakan sequential search

ini digunakan sebagai pembanding dari pencarian menggunakan Bloom filter. Pencarian menggunakan sequential search ini juga sebagai verifikasi keakuratan hasil pencarian dengan Bloom filter.

Analisis Hasil

Hasil simulasi yang telah dilakukan memperlihatkan pengaruh nilai variabel pada Tabel 2 terhadap adanya false positive (FP). Hal ini dapat dilihat pada Gambar 6 yang memperlihatkan perubahan yang signifikan terhadap false positive

pada saat jumlah objek divariasikan. Pada Gambar 6 juga ditampilkan bahwa tingkat false positive menjadi 0 ketika jumlah objek pada buffer sebesar 6% dari 2000000 objek yang sebenarnya dan terus stabil hingga objek pada buffer sebesar 20%.

Sedangkan variasi terhadap jumlah bit dan map bit walaupun dapat menyebabkan perubahan terhadap false positive tetapi tidak begitu besar pengaruhnya terhadap false positive. Pengaruh map bit hanya dapat menurunkan

false positive dalam ukuran yang kecil atau tidak signifikan hal ini dapat dilihat

pada Gambar 7 dan Gambar 8. Untuk data lebih lengkap berkaitan dengan false

positive akibat kombinasi variabel-variabel yang ada pada Tabel 2 dapat dilihat

Gambar 6 Pengaruh jumlah objek terhadap False Positive

Gambar 7 Pengaruh Jumlah bit terhadap False Positive

19 Jika dilihat dari sisi waktu, pengaksesan suatu objek/data menggunakan

Bloom filter lebih cepat jika dibanding dengan menggunakan sequential search.

Hasil dari Bloom filter ini akan dibandingkan dengan hasil dari sequential search

dari segi akurasi dan kecepatan. Tabel 3 memperlihatkan perbandingan kecepatan akses antara Bloom filter dengan sequential search.

Tabel 3 Perbandingan waktu akses Bloom filter dengan sequential search Objek

pada

Buffer

(%)

Waktu rata-rata (dalam µs)dari 100 kemunculan objek X pada kombinasi:

2000000_32_ 2 2000000_32_ 3 2000000_32_ 4 2000000_32_ 5 2000000_32_ 6 2000000_32_ 7 2000000_32_ 8 BF SS BF SS BF SS BF SS BF SS BF SS BF SS 2 0 220 0 130 0 220 0 150 0 160 10 200 0 230 4 0 240 0 270 0 230 0 290 0 230 0 230 0 200 6 0 250 0 240 0 300 0 220 0 300 0 280 0 230 8 0 270 0 300 0 290 0 340 0 240 10 260 0 200 10 0 280 0 230 0 200 0 220 0 260 0 290 0 300 12 0 420 0 270 0 290 0 270 0 250 0 270 0 290 14 0 280 0 260 0 270 0 250 0 300 0 230 0 330 16 0 240 0 260 0 270 0 290 0 270 0 260 0 220 18 0 180 0 300 0 330 0 280 0 300 0 280 0 250 20 0 270 0 210 10 290 0 290 0 230 0 200 0 270

Perbandingan waktu antara Bloom filter dengan sequential search dapat dilihat pada Tabel 3. Secara umum pencarian menggunakan Bloom filter lebih cepat dibanding pencarian menggunakan sequential search, hal ini dapat dilihat dari hasil penelitian yang mengkombinasikan masing-masing parameter yang dapat mempengaruhi false positive. Pencarian menggunakan Bloom filter lebih cepat dari pada sequential search karena pada Bloom filter ruang pencarian suatu objek menjadi lebih kecil. Hal ini akibat dari penggunaan buffer sebagai tempat penampungan data sementara yang ditentukan hanya sebesar beberapa persen dari data set yang ada. Sementara itu pada sequential search, ruang pencarian adalah sebesar set yang ada. Namun karena kemungkinan adanya false positive pada

Bloom filter maka perlu adanya pembanding yang dapat menguatkan hasil akurasi

dari Bloom filter. Untuk hasil perbandingan waktu antara Bloom filter dan

sequential search secara lengkap dapat dilihat pada Lampiran 2.

Gambar 9 memperlihatkan perbandingan waktu rata-rata pengaksesan antara Bloom filter dengan sequential search. Dapat dilihat bahwa waktu yang digunakan oleh Bloom filter untuk mendapatkan membership suatu objek lebih cepat (0µs) dan konstan walaupun jumlah objek pada suatu set terus meningkat. Sedangkan dengan menggunakan sequential search, waktu yang diperlukan jauh lebih lama dan tidak konstan.

Dengan hasil yang ditampilkan pada Lampiran 2, secara keseluruhan dapat dilihat bahwa hasil terbaik perbandingan waktu pengaksesan objek antara Bloom

filter dengan sequential search adalah pada jumlah objek sebesar 2000000 dengan

Gambar 9 Grafik perbandingan waktu akses Bloom filter Vs Sequential search

Evaluasi

Memperhatikan hasil yang ada, terlihat bahwa untuk mengetahui

membership suatu objek pada suatu set yang besar dapat menggunakan metode

Bloom filter dan sequential search. Dari segi kecepatan, Bloom filter lebih cepat

dibanding dengan sequential search begitu juga dari segi akurasi dan ketepatan. Pada Bloom filter walaupun masih terdapat false positive untuk jumlah objek yang lebih kecil tetapi untuk jumlah objek yang lebih besar Bloom filter lebih baik. Dengan kombinasi bit dan map bit, pada kondisi yang telah diuji didapat bahwa

false positive pada Bloom filter dapat dikurangi bahkan menjadi tidak ada. Hal ini

dapat dilihat pada pengujian membership objek X pada satu set sebesar 2000000 objek dengan kombinasi objek pada buffer sebesar 6% dari jumlah keseluruhan objek yang ada, dengan bit yang disediakan sebesar 8 bit dan dipetakan dengan 7

map bit.

Dari sisi pengaksesan terhadap objek pada suatu set, dari 100 objek yang dicari rata-rata Bloom filter hanya memerlukan waktu rata-rata sebesar 10µs bahkan lebih cepat (0) dari sequential search yang memerlukan waktu rata-rata antara 10 hingga 420µs untuk pencarian dengan jumlah objek yang sama. Bahkan untuk jumlah objek yang semakin besar, waktu yang diperlukan oleh sequential

search semakin besar pula. Berbeda dengan Bloom filter yang lebih stabil pada

10µs dan bahkan lebih cepat (0) pada pencarian objek yang lebih besar seperti tersaji pada Tabel 3.

Berdasarkan persamaan (7), dengan jumlah objek yang ada dan jumlah bit

yang disediakan didapat tingkat false positive dari Bloom filter seperti ditunjukkan pada Gambar 10. Sehingga dapat dilihat besarnya probabilitas false positive (Pfp) yang muncul berdasarkan hubungan jumlah objek dan jumlah bit yang disediakan.

-10 30 70 110 150 190 230 270 310 2 4 6 8 10 12 14 16 18 20 W ak tu ( µ s)

Objek pada Buffer (%)

Waktu rata-rata dari Bloom Filter (BF) Vs Sequential Search (SS) dengan variasi Bit pada Objek =2000000

dan mapBit=5 dari 100 Objek Pencarian

BF8 BF16 BF32 SS

21

Gambar 10 Tingkat false positive dari Bloom filter

Dokumen terkait