## IMPLEMENTASI WEBSITE PENCARIAN KOS DENGAN NOSQL
Danny Kriestanto 1 , Alif Benden Arnado 2
1, 2,) Jurusan Teknik Informatika, STMIK AKAKOM Yogyakarta Jl. Raya Janti 143, Karangjambe Yogyakarta e-mail : danny@akakom.ac.id , benden.alif@gmail.com

## ABSTRAK
Perkembangan teknologi basis data baru tidak seperti basis data relasional pada umumnya. Kini, jumlah data yang sangat besar dan tidak terstruktur mendorong terciptanya basis data jenis baru yang mengarah pada pemanggilan data tanpa menggunakan query. Salah satu penerapannya adalah yang dikenal dengan basis data dengan NoSQL (Not Only SQL). Salah satu contoh RDBMS yang menerapkan ini adalah MongoDB yang menyediakan pendukung teknologi penyimpanan data yang tidak lagi terdapat hubungan antar tabel dan tidak menyimpan data dalam format tabel kaku. Selain itu, skema tabel dibuat fleksibel mungkin untuk menangani perubahan pada isi data.
Karakteristik MongoDB yang mampu menyimpan data dalam model array dianggap cocok apabila diimplementasikan pada aplikasi pencarian kos yang setiap dari datanya memiliki struktur skenario yang berbeda. Basis data MongoDB juga mendukung beberapa bahasa pemrograman untuk dapat melakukan manipulasi data antara lain bahasa pemrograman PHP sedangkan Bootstrap material sebagai bentuk interface dari tampilan aplikasi tersebut.
Hasil penelitian menunjukkan bahwa terdapat banyak perbedaan implementasi basis data dengan NoSQL cenderung lebih rumit jika dibandingkan dengan basis data relasional dalam hal struktur, tipe data, maupun CRUD. Hasil penelitian juga menunjukkan bahwa dibutuhkan dua kali proses untuk menampilkan array di dalam array.
Kata Kunci : Basis Data, Bootstrap, Google Maps, Google Street View, MongoDB, Material Design, NoSQL

## ABSTRACT
The new technology of database has moved forward the relational databases. Now, the massive and unstructured data encourage experts to create a new type of database without using query. One of this technology is  called NoSQL (Not Only SQL).  One  of  the  developing  RDBMS  that  using  this  technique  is  MongoDB,  which  already  supporting  data  storage technology that is no longer need for structured tables and rigid-typed of data. The schema was made flexible to handle the changes  of  data.  The  MongoDB  data  collecting  characteristics  in  the  form  of  arrays  is  considered  suitable  for  the implementation  of  boarding  house  searching  where  each  of  the  boarding  houses  have  their  own  scenario  structures. MongoDB also supports several programming language, including PHP with Bootstrap material as interface. The results of the  research  showed  that  there  are  alot  of  difference  in  implementing  a  NoSQL  database  with  the  regular  relational  one. NoSQL databases considered alot more complicated in structure, data type, even the CRUD system. The results also showed that in order to view an array inside another array will need two processes . . Keywords : Bootstrap, Database, Google Maps, Google Street View, MongoDB, Material Design, NoSQL

## I. P ENDAHULUAN
eningkatnya perkembangan teknologi aplikasi berbasis web tiap waktu meningkat dengan cepat, begitu pula dengan kebutuhan sistem database untuk menyimpan data yang semakin meningkat menjadikan suatu data menjadi aset yang bernilai tinggi, sehingga menyimpan dan mengelola data dengan ukuran data yang berskala besar kini menimbulkan permasalahan dari skalabilitas, karena pertambahan data yang terjadi setiap saat, sehingga memiliki struktur hubungan relasi yang sangat rumit.
Mengambil  contoh  pencarian  tempat  hunian  sementara  atau  dapat  disebut  kos,  pada  musim  masuk  kuliah yang  mengambil  kuliah  tempat  jauh  dari  rumah  tinggal  sehingga  mengharuskan  menjadi  calon  mahasiswa perantauan, sebagai pendatang yang masih belum mengerti tentang suasana baru atau  kota yang menjadi tempat tinggal baru sehingga masih kesulitan untuk mencari tempat hunian sementara [1].
Dengan  adanya  perkembangan  teknologi  yang  berbasis web ,  maka  untuk  mencari  dan  memilih  tempat tinggal sementara menjadi merasa mudah dan dapat memilih fasilitas yang dapat diukur sesuai modal untuk sewa tempat  tersebut.  Munculnya  teknologi  basis  data  baru  yang  tidak  seperti database lainnya, database yang menggunakan  model  basis  data NoSQL ( Not  Only  SQL )  khususnya MongoDB  yang menyediakan  pendukung kecepatan database agar  tetap  optimal,  dengan  memanfaatkan  teknologi  penyimpanan  data  yang  berbeda  dari Database Relasional , di dalam teknologi basis data ini tidak lagi terdapat relasi antar tabel dan tidak menyimpan data  dalam  format  tabel  kaku,  skema  tabel  dibuat  fleksibel  mungkin  yang  menangani  perubahan  pada  isi  data
M
tersebut.  Walaupun  MongoDB  memiliki  kecepatan  yang  lebih  dalam  proses  pengambilan  data,  namun  tetap memiliki kelemahan disisi proses penyimpanan data. Penyimpanan data pada MongoDB yang lebih  lambat jika dibandingkan dengan pada basis data relasional [2].
Tujuan  utama  dalam  penelitian  ini  adalah  menghasilkan  aplikasi  yang  menerapkan  teknologi  informasi dalam hal menyimpan data dengan database NoSQL menggunakan MongoDB dan tujuan berikutnya adalah dapat memberikan info tentang kos yang berada di Yogyakarta berupa sistem berbasis web.
Manfaat  utama  yang  dapat  diperoleh  adalah  untuk  meneliti  teknologi  NoSQL  yang  tidak  memiliki  relasi tabel dengan menggunakan basis data MongoDB sebagai tool impementasinya , serta apakah MongoDB ini dapat diimplementasikan dalam aplikasi pencarian kos yang berada di Yogyakarta berupa sebuah sistem berbasis web.

## II. M ETODE
Adapun penelitian ini dilakukan dengan tahapan sebagai berikut:
1. Melakukan analisis kebutuhan input (data-data tentang kos, pemilik, harga, dsb)
2. Melakukan pengambilan data pada beberapa lokasi kos langsung dari para pemiliknya.
3. Melakukan analisa data-data yang diperoleh untuk merancang model dari basis data yang akan dibentuk.
4. Membuat diagram alir aplikasi.
5. Mengimplementasikan basis data dengan teknik NoSQL dengan basis data MongoDB
6. Desain aplikasi menggunakan Material Design dengan JSON untuk pertukaran data.
7. Peta yang digunakan adalah peta dari Google Map dan Google Streetmap
8. Menggunakan  PaaS  (Platform  as  a  Service)  millik  OpenShift  ( https://www.openshift.com/ )  yang  harus dikonfigurasi secara manual.
Oleh  karena  masih  adanya  ketidaksamaan  dalam  pendapat  mengenai  pemodelan  yang  digunakan  untuk  basis data  berbentuk  NoSQL,  dalam  penelitian  ini  akan  menggunakan  DFD  sebagai  tool  untuk  membentuk  desain perancanannya.  Adapun  DFD  ( Data  Flow  Diagram )  level  1  yang  digunakan  dalam  penelitian  ini  dapat  dilihat pada gambar 1.
Perancangan  basis  data  pada  NOSQL  tidak  sama  dengan  perancangan  basis  data  pada  DBMS  konvensional. Terdapat  perbedaan  mendasar  pada  model,  dan  juga  tipe  data-nya.  Adapun  tabel  berubah  namanya  menjadi Document . Dan semua dokumen yang dibentuk dapat dilihat pada tabel I, tabel II, dan juga pada tabel III.
Tabel I Document Admin Key Type Deskripsi _id Objectid Collection Primary key Nama String Nama Administrator User_name String User_name Password String Password admin Icon_profil String Icon profil dashboard administrator
Tabel I menunjukkan dokumen admin yang menjelaskan deskripsi, tipe serta kunci tiap atribut yang ada pada dokumen admin. Sedangkan pada tabel II menunjukkan dokumen data pemilik kos yang berisi deskripsi atribut pemilik kos beserta tipe dan key -nya.
Tabel II Document Data Pemilik Key Type Deskripsi _id Objectid Collection Primary key Nama_pemilik String Nama_pemilik User_name String User_name Password String Password pemilk kos Confirm_password String Confirm  Password  pemilik kos Nomor_handphone String Nomor Handphone Tgl_daftar String Tanggal daftar pemilik kos Icon_profil String Icon  profil  dasboard  pemilik kos Tabel III Document data kos Key Type Deskripsi _id Objectid Collection Primary key Tgl_daftar String Tanggal daftar kos Nama_pemilik String Nama pemilik yang kos Nomor_handphone String Nomor handphone pemilik kos Nama_kos String Nama kos Jenis_kos String Jenis kos baik putra atau putri Ukuran_kos Object Ukuran ruangan kos Panjang_kamar String Panjang kamar kos Lebar_kamar String Lebar kamar kos Status_kos String Status_kos ( Tersedia, Full, Sisa ) Alamat_kos String Letak alamat kos Alamat_jalan_kos String Letak alamat kos berdasarkan maps Map Object Map posisi koordinat kos Latitude String Garis lintang koordinat kos Longitude String Garis bujur koordinat kos Harga_sewa Object Biaya sewa kos Harga_sewa Int Harga sewa kos Hitungan_sewa String Hitungan sewa kos Lama_sewa String Lama sewa (1 bln s/d 3 bln, 1 Thn) Fasilitas_kos Array Fasilitas yang dimiliki kos Catatan_pemilik String Catatan pemilik Foto Array Foto sekitar lingkungan kos
Untuk  tabel  III  menunjukkan  rincian  dari  dokumen  data  kos  yang  memuat  data-data  mengenai  data  pemilik kos, letak kos beserta koordinat latutide dan longitudenya, harga sewa kamar kos, fasilitas dan lainnya.
Gambar 3. Alokasi Perintah INSERT Data Pemilik pada MongoDB

## III. HASIL
Setiap halaman yang akan dibuat wajib memanggil basis data MongoDB dibuat dengan skrip pembuatan objek  variabel  $mongo  dengan  metode  class  library  Mongo(),  seperti  yang  tampak  pada  gambar  2.  Gambar  3 menunjukkan potongan perintah untuk memasukkan data ke dalam basis data dari sisi PHP. Dari gambar tersebut terlihat  bahwa  proses  pengisian  data  tidak  menggunakan  perintah  DML  seperti  biasanya  digunakan,  namun dengan menggunakan array.
Jika  dilihat  dari  strukturnya,  basis  data  yang  dibuat  dengan  menggunakan  MongoDB  sekilas  tidak  banyak perbedaannya  dengan  basis  data  relasional.  Akan  tetapi,  sesungguhnya  ada  beberapa  perbedaan  yang  sangat mendasar. Misalkan pada tabel II, terdapat sebuah tipe data array. Array tidak terdapat pada basis data relasional karena  dalam  1  record  tidak  diijinkan  menyimpan  data  yang  non-atomik. Akan  tetapi,  pada  MongoDB  hal  ini sangat dimungkinkan. Salah satu penggunaan array dalam penelitian ini adalah untuk menunjukkan fasilitas kos.
Pada [3], jika menggunakan basis data relasional biasa, kolom tersebut dapat dipecah menjadi tabel terpisah untuk memudahkan pencarian dengan query. Namun, pada MongoDB hal itu tidak diperlukan, sehingga fasilitas- fasilitas  kos  dapat  dicari  per item -nya  walaupun  tidak  berada  pada  field  yang  berbeda  layaknya  basis  data relasional.  Walaupun  demikian,  setiap  fasilitas  tersebut  harus  dimasukkan  ke  dalam  array  (Array  di  dalam  sel sebuah record)  [4]. Di dalam MongoDB, sebuah record merupakan sebuah array. Jadi, dalam implementasinya, tipe  data  array  merupakan  sebuah  array  di  dalam  array.  Untuk  menampilkan  data  tersebut  diperlukan  dua  kali proses.  Hal  ini  disebabkan  oleh  karena  struktur  dari  array  itu  sendiri.  Adapun  contoh  implementasi  ini  dapat dilihat pada gambar 2.
Dalam  implementasi basis data  relasional,  latitude  dan  longitude akan  disimpan  terpisah pada  kolom  yang berbeda, namun seperti yang terlihat pada gambar 2, objek “map” menyimpan 2 buah nilai array yakni “latitude” dan  “longitude”.  Penggunaan  array  juga  dilakukan  pada  “ukuran_kos”,  “harga_sewa”,  dan  “fasilitas_kos”. Adapun  obyek  “fasilitas_kos”  menyimpan  array  data  yang  bervariasi  oleh  karena  tidak  semua  kos  memiliki fasilitas yang sama.

## IV. PEMBAHASAN
Implementasi  aplikasi  berbasis  web  dengan  menggunakan  MongoDB  memerlukan  beberapa  pengaturan terlebih  dahulu.  Tidak  seperti  MySQL  dan  basis  data  relasional  lainnya,  MongoDB  perlu  diatur  secara  manual untuk  menghubungkan  PHP  dengan  MongoDB,  dengan  mengedit  file  php.ini  dan  menambahkan “extension=mongo.so”. Dalam implementasi, oleh karena aplikasi ini mengunggah lebih dari satu gambar maka diperlukan  sebuah  skrip  agar  data  tersebut  disimpan  pada  database  MongoDB  dengan  struktur  array  di  dalam array.  Pada  akhirnya,  teknik  sederhana  yang  digunakan  adalah  dengan  memindahkan  gambar  ke  dalam  folder yang  sebelumnya  sudah  diciptakan  dengan skrip terlebih  dahulu.  Berikutnya,  perlu  membuat  URL  dari  gambar tersebut untuk disimpan di dalam database.
Untuk  menampilkan  data,  terutama  menampilkan  data  yang  menggunakan  array  di  dalam  sebuah  array, dibutuhkan  setidaknya  dua  buah  proses.  Masing-masing  untuk  memproses  satu  array,  mulai  dari  array  yang berada  paling  dalam,  sebelum  array  pada  bagian  luar.  Proses  ini  tampak  kemiripannya  dengan  subquery  pada basis  data  relasional  namun  lebih  rumit  karena  tidak  menggunakan  bahasa  SQL.  Perintah  untuk  basis  data NoSQL untuk menampilkan data semacam ini membutuhkan pengkodean sendiri.
Namun, oleh karena MongoDB merupakan basis data yang tidak terstruktur, apabila terjadi perubahan terhadap struktur collection ,  maka  data-data  yang  sudah  ada  sebelumnya  tidak  perlu  disesuaikan  kembali.  Mongo  DB memungkinkan adanya penambahan, penghapusan, dan perubahan struktur data tanpa mengubah data yang sudah
ada  sebelumnya.  Dengan  kata  lain,  tiap-tiap  record  data  dapat  memiliki  struktur  yang  berbeda  pada  satu collection (tabel) yang sama.
Konfigurasi  yang  digunakan  dalam  proses  hosting  cukup  rumit,  dan  oleh  karena  menggunakan  PaaS  maka konfigurasi  tersebut  wajib  dilakukan  secara  manual.  Hingga  saat  ini,  hosting  yang  dapat  digunakan  untuk implementasi MongoDB masih yang berbayar dan jumlahnya masih sedikit.

## V. S IMPULAN DAN SARAN
Berdasarkan penelitian ini, maka dapat ditarik kesimpulan berikut:
1. Implementasi dalam CRUD pada MongoDB dengan PHP dapat dilakukan dengan baik.
2. Pencarian data kos berdasarkan fasilitas dengan menggunakan MongoDB dapat berjalan dengan baik.
3. Adanya  waktu  untuk  inisialisasi  struktur collection sehingga  dibutuhkan  waktu  lebih  banyak  pada  saat hendak mengunggah data baru.
4. Penympanan data gambar yang lebih dari satu membutuhkan struktur array di dalam array. Banyaknya array di dalam array tersebut dapat pula menentukan kecepatan unggah data
5. Membutuhkan  dua  kali  proses  dalam  menampilkan  data  array  dalam  array  sehingga  membuat  proses memuat data menjadi lambat.
6. Tidak  perlu  adanya  pembuatan  tabel  seperti  basis  data  RDBMS.  Pada  MongoDB  dapat  dibuat  langsung menggunakan array assosiatif agar hasil tersebut berupa JSON.
Berdasarkan hasil evaluasi terhadap aplikasi ini, adapun saran untuk pengembangan selanjutnya adalah:
1. Diperlukan penelitian untuk mencari teknik memuat data dengan lebih cepat.
2. Perlu  diteliti  lebih  jauh  seberapa  lamakah  waktu  yang  dibutuhkan  untuk  memuat  data  apabila  aplikasi dengan collection yang lebih banyak dan lebih kompleks.

## REFERENSI
[1] _____, “Pengertian Kos”, http://library.binus.ac.id/eColls/eThesisdoc/Bab2/2009-1-00024-AR%20Bab%202.pdf, tanggal akses 31 Januari 2016.
[2] Andi Wahju Raharjo E, Jimmy Sentosa, “Perbandingan Kinerja Data Manipulation Language MongoDB dan SQL Server”,   http://www.andiwre.itmaranatha.org/jurnal/Paper%20Andi%20WRE%20cs%20- %20Seminasik%202013%20v%20prosiding.pdf, tanggal akses 26 September 2015, 2013
[3] _____, “PHP MongoDB”, http://php.net/manual/en/book.mongo.php, tanggal akses 18 September 2015.
[4] _____, “MongoDB Manual”, http://docs.mongodb.org/manual/crud, tanggal akses 18 September 2015.