## VALIDASI EKSPORT DATA NO-SQL dan SQL DENGAN PEMANFAATAN FUZZING

## Muhammad Fadly
Fakultas Ilmu Komputer dan Teknologi Informasi, Universitas Gunadarma Jl. Margonda Raya no. 100, Depok 16424, Jawa Barat fadlytur@staff.gunadarma.ac.id

## Abstrak
Database  adalah  kumpulan  informasi  yang  disimpan  di  dalam  komputer  secara sistematik sehingga dapat diperiksa menggunakan suatu program komputer untuk memperoleh  informasi.  Perusahaan  yang  memanfaatkan  teknologi  komputer untuk  manajemen  informasi  dapat  dipastikan  menggunakan  software  database. Fuzzing adalah salah satu cara penting untuk menguji perangkat lunak untuk bug dan kerentanan. Pemanfaatan Fuzzing (Fuzz Testing) untuk validasi eksport data merupakan  pemeriksaan  tentang  kebenaran  sesuatu,  baik  berupa  laporan  atau suatu  informasi.  Sementara  data  merupakan  satuan  terkecil  yang  diwujudkan dalam  bentuk  angka  atau  huruf  yang  menggambarkan  tentang  nilai  dari  suatu variabel.  Dengan  demikian,  teknis  validasi  data  adalah  suatu  cara  untuk melakukan  pemeriksaan  tentang  kebenaran  nilai  dari  suatu  variabel.  Validasi data  sangat  diperlukan  sehingga  hasil  analisis  data  akan  bermanfaat  bagi pembuatan keputusan bila data yang ada adalah data yang baik dan benar.
Kata Kunci : Basis data, fuzzing, validas

## VALIDITY TESTING OF  EXPORTED DATA FROM NO-SQL AND SQL DATABASE USING FUZZ TESTING

## Abstract
The database is a collection of information stored on the computer in a systematic way so that it can be checked using a computer program to obtain information. Companies  that  take  advantage  of  computer  technology  to  the  management  of information can be ascertained using database software. Fuzzing is one important way to test the software for bugs and vulnerabilities. Fuzzing (Fuzz Testing) is an accountability  examination, either in the  form of  a report  or information. While the data is the smallest unit that is manifested in the form of numbers or letters that describe the value of a variable. Thus, the technical validation of the data is a way to check the accountability of a variable. Data validation is needed so that the results of the data analysis will be useful for decision-making when the data is accountable and valid.
Keyword: data basic, fuzzing,validity.

## PENDAHULUAN
Database sangat  penting  dalam mendukung  berbagai software aplikasi, terutama aplikasi bisnis. Perusahaan yang memanfaatkan teknologi komputer untuk manajemen  informasi  dapat  dipastikan menggunakan software  database. Secara garis  besar, software  database dikelom- pokkan  menjadi stand-alone  database dan database  server . Stand-alone data- base  adalah  seperangkat software  data- base yang  dijalankan  dan  diakses  kom- puter  yang  tidak  terhubung  ke  komputer lain, biasanya berupa personal komputer. Microsoft  Access  dan  Visual  FoxPro adalah  beberapa  contoh stand-alone  da- tabase . Sedangkan database server meru- pakan software  database yang  banyak digunakan untuk jaringan komputer.
Database  server dapat  menangani banyak user ,  mengolah  data  yang  sangat banyak,  dan  akses  data  yang  cepat. MySQL,  Oracle,  IBM  DB2,  Microsoft SQL  Server  merupakan  contoh database server  relational  dan  ada  juga  database non relasional seperti Cassandra, mong- goDB,  dan  lain-lain . Database  server banyak  digunakan  dari  pada stand-alone database .  Akan  tetapi  untuk  mengelola database  server lebih  sulit  dari  pada stand-alone database . E-Goverment adalah  penggunaan teknologi  informasi  oleh  pemerintah  un- tuk  memberikan  informasi  dan  pel-aya- nan  bagi  warganya,  urusan  bisnis,  serta hal-hal  lain  yang  berkenaan  dengan pemerintahan. E-Goverment dapat diapli- kasikan  pada  legislatif,  yudikatif,  atau administrasi  publik,  untuk  meningkatkan efisiensi  internal,  menyampaikan  pelaya- nan  publik,  atau  proses  kepemerintahan yang demokratis.
Sebuah  aplikasi E-Go-verment se- bagai  objek  bahan  studi  dalam  jurnal  ini dikarenakan  ada  beberapa  kendala  yang sering  dihadapi  dalam  hal  pengolahan database .  Kendala  yang  dihadapi  adalah ketika kantor pusat ingin mengetahui data
pada  setiap  kantor  cabang  harus  dilaku- kan import data ke sistem yang berada di kantor  pusat  (data  masih  terdistribusi) dan  ketika generate  reporting lambat. Sistem  ini  dibagi  beberapa  level,  level bawah (kantor cabang), pengguna sistem masih  menggunakan  stand -alone  data- base yaitu FoxPro dengan format dbf se- dangkan untuk level pusat (kantor pusat), kontrolnya  menggunakan database  ser- ver yaitu Cassandra . Hal ini mengharus- kan  adanya  migrasi  data  jika  ada  data masuk dari kantor cabang ke kantor pusat ataupun  sebaliknya.  Berkenaan  dengan solusi aplikasi database ini, ada beberapa hal yang direkomendasikan sebuah Data- base  Cassandra  [5] untuk  menangani permasalahan  tersebut  yaitu Big  Data , Cloud  Database , Continuous  Database Availability , Multi-Data  Center  Databa- se , NoSQL , Scalable  Enterprise  Search , Time  Series  Data .  Big  data  merupakan salah satu fitur dari Database Cassandra yang  dapat  memecahkan  ragam  data, velocity , volume dan kompleksitas data. Fuzz  testing  merupakan  serangkai- an  test  yang  dilakukan  dengan  mengim- plementasi mutasi/modifikasi random ke- pada  input  dalam  format  tertentu,  dari suatu  program  kemudian  melakukan  test terhadap  hasil  yang  dihasilkan  [4].  Ide dari  fuzz  testing  ialah  dengan  memasuk- kan  input  yang  telah  dimodifikasi  ini  di- lakukan secara berulangtest ini dilakukan kedalam  program  seingga  dapat  meng- ungkap  bug  keamanan,  seperti  buffer overflows.
Dengan  latar  belakang  permasala- han tersebut, schema mappings database dan reversibility data  dibutuhkan. Sche- ma  mapping  database merupakan  pen- cocokan/memetakan  dua  objek  database yang  berbeda  agar  saling  terkait  dan reversibility data ialah sebuah proses data yang dapat dikembalikan kedalam bentuk awal.  Maka  penulis  mengangkat  perma- salahan  database  ini  ke  dalam  jurnal
dengan judul " Validasi eksport data No- SQL  dan  SQL  dengan  pemanfaatan  fu- zzing ".

## METODE PENELITIAN
Metode  yang  digunakan  dalam penelitian ini, yaitu: (a) Dalam pembaha- san  ini,  metode  penelitian  yang  dipa-kai penulis  adalah  studi  pustaka,  yaitu penulis  memperoleh  semua  bahan  untuk pembuatan  aplikasi  ini  dari  buku-buku, jurnal  yang  terkait  dan  internet.  (b)  Pe- rancangan  program  merupakan  sesuatu yang  amat  penting.  Oleh  karena  itu  pe- nulis  merancang  program  ini  mengguna- kan  flowchart  agar  dapat  lebih  mudah dalam mengerjakan program tersebut.
Implementasi  dalam  membangun program ini dengan menggunakan modul /library  python  yaitu Fussil  Framework dengan Database  Cassandra .  Standar spesifikasi  penggunaan Database  Ca- ssandra dan  tools  yang  digunakan  ialah: Processor  minimal  core  2  duo,  RAM minimal  4  GB,  Sistem  operasi  linux  dan VGA onboard.

## HASIL DAN PEMBAHASAN
Berdasarkan  literatur  yang  diguna- kan,  untuk  mencapai  studi  objektif  perlu dilakukan  analisis  dan  perancangan.  Ta- hap  ini  terdiri  dari  dua  langkah,  yaitu perancangan  import  data  fuzzer  ke Ca- ssandra dan  perancangan  eksport  data kedalam  format  dbf.  Analisis  kebutuhan diperlukan  untuk  berjalannya  program ini.

## Analisis Kebutuhan Program
Dalam membangun program  ini ada  beberapa  kebutuhan  mencakup pekerjaan-pekerjaan  penentuan kebutu- han atau  kondisi  yang  harus  dipenuhi dalam  ter-selesainya  program,  yaitu:  (1) Mempersiapkan  area  kerja  (framework). Pada penelitian ini editor yang digunakan ialah  Eclipse  Juno.  (2)  Mempersipkan,
setting  dan  konfigurasi  library-library yang dibutuhkan: (a) library PyDev, stan- dar  library  yang  harus  digunakan  untuk membangun  program  menggunakan  ba- hasa  pemrograman  python.  (b)  library fusil  framework,  library  yang  digunakan untuk generate  random data.  (c)  library dbfpy,  digunakan  untuk  import  dan  eks- port  data  dalam  bentuk  dbase  file  (dbf). (d)  library  CQL  ( Cassandra  Query Language ),  digunakan  untuk query data pada Database  Cassandra .  (e)  library thrift,  digunakan  untuk  menghubungkan Database  Cassandra dengan  bahasa pemrograman.  (f)  library  PyCassa,  di- gunakan untuk menghubungkan program python dengan Cassandra .

## Analisis Kebutuhan Alur Program
Penelitian  ini  menggunakan  bebe- rapa parameter atau acuan agar dapat ter- capainya  alur  program  dengan  baik.  Pe- nelitian  ini  terdapat  2  parameter  yang akan dilakukan yang akan di tunjukan pa- da gambar 1.
Pada  gambar  1  terdapat  tahapan- tahapan  agar  tercapainya  penelitian  ini. Sebelum  terfokus  pada  proses  eksport data,  dilakukan  import  data  hasil  fuzzer menggunakan  fuzzing  yang  dimasukkan dalam Database  Cassandra .  Pada  tahap pertama  terdapat random data  pada Database  Cassandra yang  di  hasilkan oleh  fuzzer.  Hasil  fuzzer  pada Database Cassandra terdapat pada gambar 2. Kedua  terdapat  "target",  "target" tersebut  ialah  diasumsikan  sebagai  kom- parasi data untuk data yang berada dalam database . "Target" tersebut struktur tabel relational  sedangkan  pada  tahap  pertama data  yang  berada  dalam Database Cassandra struktur  tabel  non  relational. Jadi  ketika  proses  eksport  data  ber-lang- sung  yang  terdapat  pada  tahap  ketiga, pada tahap keempatlah yang berperan da- lam proses verifikasi/menyesuaikan antar data  yang  berada  dalam Database  Ca- ssandra dengan  data  yang  dikeluarkan
menjadi  format  dbf,  yang  nantinya  data tersebut disimpan dalam format dbf.

## Perancangan Import data Fuzzer
Rancangan  flowchart  impor  data diperlukan  di  dalam  proses  pembuatan eksport  data  untuk  mendukungnya  pene- litian  ini.  Perancangan  import  digunakan untuk  mengkomunikasikan  kebutuhan program agar dapat menguji reversibility data  yang  berada  pada  database  NoSQL,
Cassandra .
Flowchart pada  tahap  import  data fuzzer yaitu berupa data acak dalam jum- lah banyak kedalam Database Cassandra. Import data tersebut dimulai pada library/ modul  python  yaitu  fussil  framework yang  mengenerate  data.  Hasil  data  acak yang  fuzzer  ciptakan  pada  penelitian  ini di  simpan  dalam  file  berformat  dbf. Setelah  data  fuzzer  di  simpan  dalam  file dbf,  dilakukan  import  data  kedalam Database Cassandra.
G ambar 1. Metode Penelitian Eksport Data
Gambar 2. Data Fuzzer Pada Cassandra
.
Gambar 3. Flowchart Import Data Fuzzer

## Perancangan eksport data
Pada  gambar  4  adalah flowchart eksport  data  yang  berada  pada Database Cassandra .  Eksport  data  ini  menggu- nakan matching  engine untuk  verifikasi antara data. Ketika proses matching data, pada  penelitian  ini  menguji  banyaknya data  dan  kesesuaian  data  ketika  proses eksport yang hasil eksport data disimpan dalam  format  database  FoxPro  yaitu
dBase  Format  (DBF).  Cara  komparasi yang  dilakukan  ialah  dengan  memban- dingkan  data  yang  berada  dalam Data- base Cassandra dengan file dbf yang te- lah jadi dalam bentuk file. File dbf  hasil dbf di baca dan disesuaikan. Apabila data sesuai  dengan  database  maka  akan  me- nampilkan pesan sukses dan apabila tidak sesuai akan memberikan laporan ketidak- sesuaian.
Gambar 4. Flowchart Eksport data

## Konfigurasi Fusil Framework
Sebelum  tahap  eksport  data  pene- litian  ini  terlebih  dahulu  membuat  data yang  akan  diimport  kedalam Database Cassandra .  Pembuatan  data  pada  pe- nelitian  ini  memanfaatkan  metode  fuzz testing (fuzzing), metode fuzzing ini ber- tujuan untuk menciptkan data acak ( ran- dom data) dalam jumlah banyak. Tools  atau  modul  yang  digunakan untuk  penelitian  ini  ialah  Fusil  Frame- work,  sebuah  library  python  untuk  men- ciptakan  program  fuzzing.  Untuk  meng- gunakan  library  tersebut  ada  beberapa langkah  yang  harus  dilakukan,  yaitu:  (1) Python  2.5+.  Mulai  dari  fussil  versi  1.3, tergantung  pada  versi  python  2.5+  dan python-ptrace  0.6+.  Install  program  py- thon  2.5  atau  versi  di  terbarunya  seperti python  2.7.5  atau  python  3.2.5  yang  da- pat  di  unduh  diwesite  resminya http://py
thon.org/.  (2)  python-ptrace  0.6.3+.  py- thon-ptrace  ialah  sebuah  debugger  yang dibutuhkan ketika proses penggunaan fu- sil  framework.  (3)  Untuk  mengkompile function  dari  fusil  direkomendasikan menggunakan GCC tools tetapi selain itu juga  dapat  menggunakan  IDE  seperti Eclipse. Setelah instalasi kebutuhan yang diperlukan, ada beberapa tambahan paket program  karena  penggunaan  sistem  ope- rasi  linux  yaitu  linux_ioctl  dan  linux_ syscall.

## Instalasi Fusil Framework
Pertama  setting  user  dan  group yang  ada  pada  sistem  operasi  linux karena  fusil  menggunakan  user  "fusil" and  group  "fusil"  untuk  menjalankan program  untuk  mencegah  penghapusan file  atau  proses  yang  sedang  berjalan. Setelah  itu  menggunakan command  line
Untuk  instalasi  fusil  tersebut:  (1)  Tipe sebagai  root:  ./setup.py  install  atau  (2) menggunakan  sudo  program:  sudo  py- thon  setup.py  install.  Pada  gambar  3.5 adalah hasil apabila instalasi fusil frame- work  berhasil  dan  dapat  dicoba  apakah hasil instalasi berjalan dengan baik.

## Instalasi,  Setting  dan  Konfigurasi Database Cassandra
Instalasi  aplikasi  ini,  perlu  diperha-tikan versi  bahasa  pemrograman  java  dan python.  Versi  java  1.6  keatas  dan  versi python  2.7,  ada  beberapa  library  yang harus  di  pasang,  yaitu  :  (1)  openssl.  (2) libopenssl0_9_8.(3)  python-Twisted.  (4) openjdk-devel  (5)  ibxmlsec1-openssl- devel.  (6)  python  –V  (7)  which  openssl. Instalasi,  pengaturan  dan  konfigurasi Database Cassandra dan OpsCenter :
Gambar 5. Hasil Instalasi Fusil Gambar 3.6 Koneksi Database Cassandra (a) (a)
export DSE_HOME=$HOME/datastax/dsc-1.0.1 export CASSANDRA_HOME=$DSE_HOME/resources/cassandra export OPSC_HOME=$HOME/datastax/opscenter-1.3.1 export PATH="$PATH:$DSE_HOME/bin:$CASSANDRA_HOME/bin:$OPSC _HOME/bin"

## (b)
Gambar 7 (a) Hasil fuzzer. (b) Hasil fuzzer diperbesar
Gambar 8. Uji Cba Eksport dan Matching Data Pertama

## Hasil Data Fuzzer
Pada  penelitian  ini  fuzzer  dapat menggenerate  ratusan,  ribuan,  puluh  ri- buan  bahkan  sebanyak  yang  diinginkan. Dibawah  ini  adalah  hasil  generate  ran- dom  data  yang  dihasilkan  oleh  fuzzer (fuzz  testing).mDari  hasil  fuzzer  pada gambar  7  yang  sudah  diimport  kedalam database  cassandra,  dapat  dilakukan matching data. Pada gambar 3.8 merupa- kan  ujicoba  pertama  eksport  data  dan matching  data,  pada  percobaan  pertama masih mengalami kegagalan dikarenakan tidak dapat memparsing data hex byte.
Percobaan  kedua  pada  gambar  9 mencoba  untuk  debugging  percobaan pertama dan mencari sebab error tersebut.
Kegagalan  tersebut  dikarenakan  tidak dapat memparsing dan deserialized seba- gai  text.    Pada  percobaan  ketiga  gambar 10  sudah  dapat  mengeksport  data  dalam format  dbf  file  tetapi  ketika  proses matching data masih mengalami kegaga- lan.  Proses  penyamaan  dengan  melaku- kan  penyamaan  data  yang  berasal  dari database dengan data hasil pada file dbf. Kemudian melakukan debugging kembali kegagalan disebabkan oleh perbedaan ka- rakter  atau  data  yang  dihasilkan  pada database  cassandra  dengan  data/karakter pada dbf file. Pada uji coba keempat telah berhasil  eksport  data  dan  sudah  dapat matching  data.  Pada  ujicoba  keempat dengan  melakukan  penyamaan  pengko-
dean karakter menjadi UTF-8 dan meng-
hasilkan pencapaian penelitian.
Gambar 9. Debugging eksport dan matching data kedua
Gambar 10. Debugging Eksport dan Matching Data Kedua
Gambar 11. Hasil Eksport dan Matching Data

## SIMPULAN DAN SARAN
Pada  kesempatan  ini,  telah  melaku-kan penelitian  pada  eksport  data  dengan memanfaatkan fuzzing yaitu dengan fusil framework.  Eksport  data  pada  penelitian ini  melibatkan  dua  jenis  teknologi  data- base  yaitu  relational  dan  non  relational. Kedua teknologi database tersebut memi- liki masing-masing karakteristik, di mana memiliki  struktur  tabel  yang  berbeda, yang mengharuskan pertukaran data (data exchange)  diperlukan  agar  terbentuknya keakuratan  antara  skema  sumber  dengan skema sasaran. Dari perbedaan teknologi database seperti  perbedaan  skema  basis data dan struktur tabel dapat disimpulkan adalah bahwa untuk menjembatani proses eksport data NOSQL ke SQL harus mela- kukan  proses  penyesuaian  bentuk  dan skema  data  yang  dihasilkan,  pada  proses penyesuaian  data  (matching  data)  di- perlukan  standarisasi  pengkodean  (cha- racter sets).

## DAFTAR PUSTAKA
[1] [lorg,2003] lorg. Fuzz-Testing With Nose page http://www.algorithm.co.il/blogs/pro gramming/python/fuzz-testing-with- nose/
[2] [Tom Krusz, 2007], Tom Krusz. The Mangle/Unmangle  algorithm  page http://is.cs.nthu.edu.tw/course/2010S pring/CS535100/homework/mangle. doc
[3]  [Gadi  Evron,  2007],  Gadi  Evron. Open source fuzzing tools
[4]  [Godefroid,  et  al,  2008]  Godefroid, Patrice, Michael Y. Levin, and David
A.  Molnar.  "Automated  whitebox fuzz testing." NDSS . Vol. 8. 2008.
[5]  [Planet  cassandra  community,  2011], Planet  cassandra  community  http:// www.  datastax.com/what-we-offer/ products-services/datastaxenterprise/ apache-cassandra
[6] [Jake Edge , 2009], Jake Edge. Fusil: a  Python  fuzzing  library  page http://lwn.net/Articles/322826/
[7]  [Ycombinator.com,  2010],  Ycom- binator.com.  SQL  Databases  Don’t Scale page. http://news.ycombinator . com/item?id=859468
[8]  [Roberto  V.  Zicari  ,  2010],  Roberto V.  Zicari.  ODBMS  Industry  Watch page. http://news.ycombinator.com/ item?id=859468
[9]  [Buytaert.net  ,  2010],  Buytaert.net  . NoSQL  and  SQL  page  http://buy- taert.net/ nosql- and-sql
[10]  [Eflorenzano.com,  2010],  Efloren- zano.com . My Thoughts on NoSQL page.http://www.eflorenzano.com/bl og/post/my-thoughts-nosql/
[11] [R. Fagin , 2010], R. Fagin . Schema mappings  page http://users.soe.ucsc .edu/~wctan/Projects/schemamappin gs/index.html
[12] [Bounimova,  et  al,  2013]  Bouni- mova,  Ella,  Patrice  Godefroid,  and David Molnar. "Billions and billions of constraints: Whitebox fuzz testing in  production." Proceedings  of  the 2013  International  Conference  on Software  Engineering .  IEEE  Press, 2013.