0
Pengantar Komputasi Modern (Tugas 2)
Posted by Chalvin Julian
on
08.47
IMPLEMENTASI WEBSITE PENCARIAN KOS DENGAN NOSQL
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 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. Dokumen Data Pemilik
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.
Analisis dan 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.
Kesimpulan 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.
Latar Belakang
Meningkatnya 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 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.
Metode
Adapun penelitian ini dilakukan dengan tahapan sebagai berikut:
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.
Gambar 1. DFD Aplikasi Pencarian Kos Berbasis Web
dan MongoDB
Tabel I. Dokumen Admin
Tabel I. Dokumen 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 II. Dokumen 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. Dokumen 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
|
Gambar 2 Pemanggilan Basis Data MongoDB di PHP
Analisis dan Pembahasan
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.
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.
Kesimpulan 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