PERBANDINGAN FUNGSIONALITAS DAN KINERJA
SPATIAL
-DBMS
(POSTGRESQL/POSTGIS DAN MONETDB/
SPATIAL
)
ANGGI PUTRANTIO JUNIARD
DEPARTEMEN ILMU KOMPUTER
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
INSTITUT PERTANIAN BOGOR
ANGGI PUTRANTIO JUNIARD
DEPARTEMEN ILMU KOMPUTER
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
INSTITUT PERTANIAN BOGOR
BOGOR
2013
Skripsi
sebagai salah satu syarat untuk memperoleh gelar
Sarjana Komputer pada
Departemen Ilmu Komputer
PERBANDINGAN FUNGSIONALITAS DAN KINERJA
SPATIAL
-DBMS
ABSTRACT
ANGGI PUTRANTIO JUNIARD. Comparison of Functionality and Performance of Spatial-DBMS (PostgreSQL/PostGIS and MonetDB/Spatial). Supervised by HARI AGUNG ADRIANTO.
Spatial-DBMS is a software module that can work with an underlying database management system and support multiple spatial data models, spatial indexing, and spatial function. Several examples of spatial-DBMS is PostgreSQL, MYSQL, IBM DB2, Oracle, SQL Server, and MonetDB. PostgreSQL as a well-known spatial-DBMS has been widely used all over the world. Meanwhile, MonetDB is still in the phase of system development and has many rooms for improvement. This research compared the two spatial-DBMS in terms of functionality and performance. The results showed that PostgreSQL has more complete spatial function compared to MonetDB. From their performance, it was found that MonetDB is better than PostgreSQL in handling simple non-spatial queries. As for the simple and complex spatial queries, PostgreSQL has shown better performance compared to MonetDB.
Judul Skripsi : Perbandingan Fungsionalitas dan Kinerja Spatial-DBMS (PostgreSQL/PostGIS dan MonetDB/Spatial)
Nama : Anggi Putrantio Juniard NRP : G64080103
Menyetujui: Pembimbing
Hari Agung Adrianto, S.Kom., M.Si. NIP. 19760917 200501 1 001
Mengetahui:
Ketua Departemen Ilmu Komputer
Dr. Ir. Agus Buono, M.Si., M.Kom. NIP. 19660702 199302 1 001
KATA PENGANTAR
Segala puji dan syukur penulis panjatkan ke hadirat Allah subhanahu wata’ala atas segala limpahan rahmat serta karunia-Nya sehingga penulis mampu menyelesaikan tugas akhir dengan baik. Shalawat dan salam penulis sampaikan kepada Nabi Muhammad shallallahu ‘alaihi
wasallam serta kepada keluarganya, sahabatnya, serta para pengikutnya yang selalu berpegang kepada Al-Quran dan As-Sunnah.
Penulis juga menyampaikan terima kasih kepada seluruh pihak yang telah berperan dalam penelitian ini, antara lain:
1 Ayahanda Katiya, Ibunda Dian Etika Sari, Kakak Putri Anggraeni, serta Adik Rachma Alfazdilla atas doa, kasih sayang, dukungan, serta motivasi kepada penulis untuk penyelesaian penelitian ini.
2 Bapak Hari Agung Adrianto, S.Kom., M.Si. selaku dosen pembimbing yang telah memberi banyak ide, saran, bantuan, serta dukungan sampai selesainya penelitian ini.
3 Shaila, Adisty Dewi Kania, dan Resti Indrias atas doa, nasihat, dukungan, serta motivasi kepada penulis untuk penyelesaian penelitian ini.
4 Rekan-rekan seperjuangan di Ilmu Komputer IPB angkatan 45 atas segala kebersamaan, bantuan, dukungan, serta kenangan bagi penulis selama menjalani masa studi. Semoga kita bisa berjumpa kembali kelak sebagai orang-orang sukses.
5 Hafizhia Dhikrul Anugrah, Ryantie Octaviani, Melki Hasali, Catur Purbo, Jaka Ahmad, Rian Senja, Irvan Ahadi, Fulsi Wiyata, Asrori, dan sahabat lainnya yang telah menjadi mitra dan menemani penulis dalam menjalani kehidupan sebagai mahasiswa.
6 Rekan satu bimbingan, Mitha Rachmawati, Praditya Pamungkas, dan Ilman Dwi Santoso.
7 Sahabat satu kontrakan, Abdul Rahman Halim, Nanda Ichsan Pratama, Ahmad Bagus Diponegoro, Ryan Satria Nugroho, yang telah memberikan dukungan untuk segera menyelesaikan studi.
Penulis berharap semoga penelitian ini dapat memberikan manfaat, khususnya bagi umat Islam di Indonesia dan masyarakat pada umumnya.
Bogor, Februari 2013
RIWAYAT HIDUP
Penulis dilahirkan di Jakarta pada tanggal 13 Juni 1990. Penulis merupakan anak kedua dari pasangan Katiya dan Dian Etika Sari. Pada Tahun 2008, penulis menamatkan pendidikan di SMA Negeri 67 Jakarta. Pada tahun yang sama, penulis diterima menjadi mahasiswa di Institut Pertanian Bogor (IPB) melalui jalur Seleksi Nasional Masuk Perguruan Tinggi Negeri (SNMPTN). Penulis menjadi mahasiswa di Departemen Ilmu Komputer, Fakultas Matematika dan Ilmu Pengetahuan Alam.
v
DAFTAR ISI
Halaman
DAFTAR TABEL ... vi
DAFTAR GAMBAR ... vi
PENDAHULUAN Latar Belakang ... 1
Tujuan ... 1
Ruang Lingkup ... 1
TINJAUAN PUSTAKA Struktur Data Spasial ... 2
Shapefile ... 2
PostgreSQL ... 2
Arsitektur PostgreSQL ... 2
PostGIS ... 3
MonetDB ... 3
Spesifikasi MonetDB dan PostgreSQL ... 4
R-Tree ... 4
Hash ... 5
METODE PENELITIAN Identifikasi Masalah ... 5
Pengumpulan Data ... 5
Pembangunan Database menggunakan PostgreSQL ... 5
Pembangunan Database menggunakan MonetDB ... 5
Input dan Hasil Query ... 5
Analisis Hasil ... 5
HASIL DAN PEMBAHASAN Pengumpulan Data ... 6
Pembangunan Database menggunakan PostgreSQL ... 7
Pembangunan Database menggunakan MonetDB ... 9
Input dan Hasil Query ... 10
Analisis Hasil ... 15
SIMPULAN DAN SARAN Simpulan ... 16
Saran ... 16
vi
DAFTAR TABEL
Halaman
1 Query non-spasial sederhana……… 11
2 Hasil eksekusi query non-spasial sederhana………...…. 11
3 Query spasial sederhana………... 12
4 Hasil eksekusi query spasial sederhana……… 12
5 Query spasial kompleks………...… 14
6 Hasil eksekusi query spasial kompleks……… 14
DAFTAR GAMBAR
Halaman 1 Architecture PostgreSQL (Matthew & Stones 2005)………. 22 Binary Association Table MonetDB (MonetDB 2012)……….. 3
3 Struktur dari R-Tree (Guttman 1984)………. 4
4 Tahapan Penelitian………. 5
5 Persentase populasi kulit hitam……….. 6
6 Neighborhood dari New York……… 6
7 Jalan Kota New York………. 7
8 Titik lokasi subway station... 7
9 Pembangunan database pada PostgreSQL………. 7
10 Antarmuka PostGIS……….. 8
11 Syntax untuk implementasi Minimum Bounding Rectangle………. 9
12 Perbandingan waktu eksekusi untuk query non-spasial sederhana………... 11
13 Perbandingan waktu eksekusi untuk query spasial sederhana………... 13
14 Perbandingan waktu eksekusi untuk query spasial kompleks……… 14
1
PENDAHULUAN
Latar Belakang
Seiring dengan kemajuan teknologi saat ini, aplikasi yang menggunakan data spasial terus dikembangkan. Oleh karena itu, dibutuhkan sarana penyimpanan data spasial yang baik guna menghasilkan aplikasi yang andal. Data spasial dapat disimpan dalam sebuah file, misalnya disimpan dalam format
shapefile, yaitu format data spasial yang dikeluarkan oleh Environmental System Resource Institute (ESRI). Akan tetapi, menyimpan dalam file memiliki permasalahan seperti pengelolaan file, concurrency control,
bulk loading, storage, dan keamanan.
Untuk menangani permasalahan penyimpanan data spasial berbasis file, dapat digunakan Database Management System
(DBMS). Banyak DBMS yang dapat digunakan sebagai sarana penyimpanan data spasial seperti PostgreSQL, MYSQL, IBM DB2, Oracle, SQL Server, dan MonetDB. Masing-masing DBMS tersebut memiliki kemampuan untuk menyimpan dan mengolah data spasial dengan didukung oleh berbagai fasilitas lainnya.
PostgreSQL atau sering disebut Postgres merupakan salah satu dari sejumlah DBMS yang telah digunakan secara luas. Hal ini dikarenakan PostgreSQL merupakan open source database system yang telah teruji kemampuannya. Berdasarkan situs resmi PostgreSQL1, PostgreSQL telah memenangkan banyak penghargaan dan juga telah sukses digunakan oleh berbagai perusahaan. PostGIS menjadikan PostgreSQL sebagai spatial-DBMS dengan didukung oleh tiga fasilitas yang dimiliki oleh PostGIS, yaitu mendukung berbagai tipe data spasial seperti
point, line, dan polygon, kemampuan untuk pengindeksan data spasial, dan terakhir tersedianya fungsi spasial yang digunakan untuk mengeksekusi query spasial. Berbagai perusahaan atau kelompok pengembang aplikasi di bidang Sistem Informasi Geografis (SIG) menggunakan PostgreSQL sebagai DBMS. Sebagai contoh adalah MapServer yang mendukung PostgreSQL sebagai sarana penyimpanan data spasial.
Namun untuk menangani data yang besar, PostgreSQL memiliki kelemahan di dalam hal kinerja akses data. Model penyimpanan data pada PostgreSQL adalah row-store database.
1
http://www.postgresql.org
Andurkar (2012) menyatakan bahwa pada
row-store DBMS, saat kita ingin mencari data hanya pada beberapa kolom dari sebuah tabel dengan kolom yang banyak, maka hal ini dapat mengurangi kecepatan untuk pengaksesan data. Hal tersebut disebabkan setiap kali data dibaca dalam row-store
DBMS, kolom yang tidak relevan akan ikut diakses karena row-store DBMS merupakan DBMS dengan model penyimpanan yang menyimpan seluruh kolom dari suatu tabel secara satu kesatuan yang saling terkait di dalam disk drive.
Di sisi lain, CWI (Centrum Wiskunde and Informatica) mengembangkan column-store
DBMS yang dapat digunakan untuk menangani data yang besar. Pada tahun 2004 untuk pertama kalinya, CWI merilis produknya dengan nama MonetDB yang merupakan open source database system.
Column-store DBMS dapat mengakses hanya atribut yang dibutuhkan saja. Hal ini dikarenakan column-store DBMS menyimpan atribut secara terpisah. Vermeij et al. (2008) menyatakan bahwa column-store approach
memiliki keuntungan untuk spatial query. Alasan utamanya adalah field geometri yang tidak relevan dalam eksekusi spatial query
tidak ikut diakses.
Saat ini MonetDB masih dalam tahap awal pengembangan sistem. Mengingat banyaknya potensi yang dimiliki oleh MonetDB, maka perlu dilakukan perbandingan antara MonetDB dengan PostgreSQL. Oleh sebab itu, pada penelitian ini dilakukan perbandingan dari sisi fungsionalitas dan kinerja dua DBMS, yaitu PostgreSQL dan MonetDB.
Tujuan
Tujuan dari penelitian ini adalah membandingkan PostgreSQL dan MonetDB dalam hal fungsionalitas dan kinerja untuk data spasial.
Ruang Lingkup
1 Sistem operasi yang digunakan terbatas hanya pada Windows, khususnya Windows Seven 32-bit.
2 Query yang diujikan hanya mencakup dari tiga kelompok ini, yaitu query non-spasial sederhana (menggunakan non-fungsi spasial), query spasial sederhana (menggunakan fungsi spasial), dan query
2
TINJAUAN PUSTAKA
Struktur Data Spasial
Dalam kerangka kerja SIG, data dibagi menjadi dua kategori, yaitu data spasial dan data tekstual (atribut). Data spasial merupakan data yang memiliki informasi lokasi atau data yang bereferensi geografis dan data atribut merupakan data yang memiliki fitur spasial (Chang 2008).
Shapefile
Menurut Chang (2008), shapefile
merupakan sebuah format data spasial yang menyimpan lokasi geografis berupa informasi atribut titik (point), garis (line), dan poligon (polygon). Bentuk geometri yang tersimpan adalah dalam bentuk koordinat vektor. Format ini adalah format yang dikeluarkan oleh
Environmental System Resource Institue
(ESRI) yang merupakan salah satu vendor SIG terkemuka. ESRI shapefile terdiri atas:
1 Main file (.shp)
Merupakan file yang dapat diakses secara langsung dan panjang dari record variabel dalam file mendeskripsikan bentuk vertex. 2 Index file (.shx)
Pada file indeks, tiap record terdiri atas proses cetakan offset yang berhubungan dengan record file utama.
3 Tabel dBASE (.dbf)
Pada tabel dBASE terdapat fitur atribut dengan record pada setiap fiturnya.
PostgreSQL
PostgreSQL adalah open source
ORDBMS (Object Relational Database Management System) dengan reputasi yang baik dalam keandalan, integritas data, dan
correctness. PostgreSQL mulai diimplementasikan sejak tahun 1986. PostgreSQL dapat berjalan pada sistem operasi Linux, UNIX, maupun Windows. PostgreSQL mendukung penuh ACID (atomicity, consistency, isolation, durability) dan sebagian besar standar ANSI SQL 92/2003. PostgreSQL sangat scalable, mampu menangani kuantitas data yang besar dan mengakomodasi banyak pengguna secara konkuren. Ada banyak procedural languages
yang didukung oleh PostgreSQL, juga ada banyak library interface yang membuat beragam bahasa tersebut dapat compiled dan
interpreted ke interface pada PostgreSQL. Ada interface untuk Java (JDBC), ODBC, Perl, Python, Ruby, C, C++, PHP, Lisp,
Scheme, dan Qt yang dapat digunakan pada PostgreSQL (PostgreSQL 2012).
Arsitektur PostgreSQL
PostgreSQL terdiri atas proses (program) yang saling terkait, yaitu proses server untuk mengelola database file, menerima koneksi ke
database dari client application, dan mengeksekusi permintaan dari client dan progam client user application (front-end) yang berfungsi untuk melakukan operasi
database. Client dan server dapat berada pada
host yang berbeda. Server PostgreSQL dapat menangani koneksi bersamaan dari client. Untuk dapat mengkoneksikan client secara bersamaan, PostgreSQL memulai dengan membuat proses (program) yang baru untuk masing-masing koneksi. Maka, client dan proses server yang baru dapat berkomunikasi tanpa adanya intervensi oleh proses PostgreSQL yang asli. Dengan demikian, proses dari master server masih tetap berjalan dan menunggu koneksi client (PostgreSQL Global Development Group 2009).
Pada Gambar 1, dapat kita lihat beberapa
client terhubung ke server melalui sebuah jaringan. Pada PostgreSQL, jaringan yang dibutuhkan seperti TCP/IP, Local Area Network (LAN) atau mungkin jaringan internet. Masing-masing client
menghubungkan ke database server utama (postmaster). Postmaster dapat membuat proses server baru yang spesifik untuk melayani permintaan client tersebut (Matthew & Stones 2005).
Gambar 1 Architecture PostgreSQL (Matthew & Stones 2005).
3
1 Sebuah koneksi dari application program
ke server dari PostgreSQL terlebih dahulu harus dibuat. Application program
mengirimkan query dari pengguna ke server dan menunggu untuk menerima hasil yang dikirim kembali oleh server ke
application program.
2 Tahap berikutnya adalah parser yang berfungsi memeriksa query yang dikirimkan oleh application program
untuk mengkoreksi syntax dan membuat sebuah query tree. Syntax diperiksa agar sistem dapat mengetahui apakah syntax
yang dituliskan oleh pengguna tersebut benar.
3 Kemudian rewrite system mengambil
query tree yang telah dibuat pada tahap
parser dan memeriksa setiap aturan yang sesuai (disimpan dalam katalog sistem) untuk diterapkan pada query tree. Rewrite system melakukan transformasi yang dimasukkan ke dalam sebuah aturan
syntax dan menulis ulang query dari pengguna ke dalam sebuah query yang nantinya akan mengakses ke tabel dasar. 4 Planner atau optimizer mengambil query
tree yang telah ditulis ulang dan membuat
query plan yang akan dimasukkan ke dalam eksekutor. Planner atau optimizer
melakukannya dengan terlebih dahulu menciptakan semua path yang memungkinkan dan akhirnya mengarah ke hasil yang sama. Pertama adalah
sequential scan dan yang lainnya menggunakan pengindeksan. Selanjutnya biaya untuk eksekusi dari masing-masing
path diestimasikan dan dipilih path yang biayanya paling murah. Path yang termurah diperluas ke dalam complete plan yang kemudian eksekutor dapat menggunakannya.
5 Eksekutor akan mengulangi langkah di atas dengan kembali melewati plan tree
dan mengambil baris-baris dengan cara yang diwakili oleh plan. Eksekutor memanfaatkan sistem penyimpanan ketika melakukan scaning tabel, melakukan sort
dan join, mengevaluasi kualifikasi dan akhirnya baris-baris yang sesuai dengan
query akan diproses sebagai output.
PostGIS
PostGIS merupakan sebuah software yang
open source yang menjadikan PostgreSQL sebagai spatial DBMS dengan menambahkan dukungan tiga fasilitas, yaitu dukungan untuk semua tipe data spasial, pengindeksan data spasial, dan tersedianya fungsi spasial.
PostGIS digunakan untuk menyimpan tipe data geografis pada PostgreSQL (PostGIS Team 2010).
MonetDB
MonetDB adalah open source column-oriented database management system yang dikembangkan oleh CWI (Centrum Wiskunde and Informatica). MonetDB sebagai pelopor dari column-store yang merupakan solusi untuk kinerja yang tinggi dari data warehouse
untuk business intelligence dan eScience sejak tahun 1993. Inovasi yang dikembangkan oleh MonetDB untuk semua lapisan dari DBMS adalah model penyimpanan yang berdasarkan
vertical fragmentation, sebuah arsitektur untuk eksekusi query yang modern dengan CPU-tuned, otomatis dan adaptif untuk
indexing, run-time query optimization, dan
software architecture yang standar. MonetDB juga mendukung penuh ACID dan SQL yang digunakan oleh MonetDB berdasarkan standar SQL 2003. MonetDB sudah diuji pada Linux (Fedora, RedHat Enterprise Linux, Debian, Ubuntu), Gentoo, Mac OS, SUN Solaris, Open Solaris, dan Windows. Antarmuka pemograman yang didukung oleh MonetDB adalah JDBC, ODBC, PHP, Python, RoR, C, C++, dan Perl (MonetDB 2012).
Model penyimpanan yang dikembangkan pada MonetDB secara signifikan berbeda dengan traditional database system. Ini digambarkan dengan tabel baru yang merupakan hasil fragmentation secara vertikal dari entitas dalam arti menyimpan masing-masing kolom (atribut) dari entitasnya pada tabel secara terpisah. Pada tabel baru yang merupakan hasil dari fragmentation, terdiri atas dua kolom. Ini disebut dengan Binary Association Table (BAT) yang dapat dilihat pada Gambar 2.
Gambar 2 Binary Association Table
4
Kolom yang sebelah kiri adalah surrogate
atau object-identifier (OID) yang disebut head
dan kolom sebelah kanan adalah value yang disebut tail (MonetDB 2012).
Manfaat column-store ini berasal dari penyederhanaan yang lebih baik untuk aliran data yang berasal dari disk melewati memori yang masuk ke CPU cache. Keuntungan yang didapat dari column-store database adalah hanya data yang relevan yang akan diproses dan diambil dari disk. MonetDB terdiri atas arsitektur dua lapis, yaitu sebuah database server dan beberapa front-end. Saat ini front-end yang tersedia adalah SQL dan XQuery yang berfungsi sebagai antarmuka ke
database server. Server diprogram dalam bahasa pemrograman yang disebut MonetDB Association Language (MAL). MAL adalah bahasa aljabar relational yang mendukung koleksi besar dari relational yang primitif, fungsi-fungsi, dan hubungan yang mudah dengan fungsi yang didefinisikan pengguna (Vermeij et al. 2008).
Spesifikasi MonetDB dan PostgreSQL
Spesifikasi pada MonetDB yang pertama adalah memiliki arsitektur sebagai relation model. MonetDB tidak memiliki GUI (Graphical User Interface). Rilis pertama untuk umum pada tahun 2004. Untuk pengindeksan data menggunakan hash index. Untuk limit pada MonetDB seperti berapa batas ukuran maksimal sebuah tabel di dalam
disk, kemudian batas maksimal ukuran sebuah
database, dan yang lainnya tidak diketahui. Hanya terdapat keterangan bahwa maksimal kolom per baris tidak memiliki batasan untuk ukuran pada disk. Sedangkan spesifikasi pada PostgreSQL yang pertama adalah memiliki arsitektur sebagai object-relational model. PostgreSQL memiliki GUI untuk mempermudah pengguna. Rilis pertama untuk umum pada tahun 1989. Untuk pengindeksan data PostgreSQL memiliki banyak cara, yaitu bitmap, expression, full-text, GIN, GiST,
hash, partial, R-/R+ Tree, dan reverse. Pada PostgreSQL maksimum kolom per baris adalah 250-1600 bergantung pada tipenya. Ukuran maksimum untuk database adalah tidak terbatas. Ukuran maksimum untuk baris adalah 1.6 TB dan ukuran maksimum untuk tabel adalah 32 TB (Findthebest 2012).
R-Tree
R-tree merupakan sebuah height-balanced tree yang serupa dengan B-Tree dengan pencatatan indeks di dalam setiap leaf node
yang juga berisi pointer ke objek data. Struktur dari R-Tree didesain agar pencarian untuk spasial hanya mengunjungi jumlah node
yang sedikit. Untuk proses insert dan delete
dapat dibarengi dengan proses search dan tidak perlu reorganisasi secara periodik. Indeks tersebut merupakan proses yang dinamis. Leaf node di dalam R-Tree berisi masukan pencatatan indeks dari bentuk:
(I, tuple-indentifier)
Tuple-identifier menunjuk ke tuple di dalam database dan I adalah sebuah
n-dimensional rectangle yang merupakan
bounding box dari objek spasial yang diindeks. Non-leaf node berisi masukan dari bentuk:
(I, child-pointer)
Child-pointer merupakan alamat dari node
yang berada di bawahnya di dalam R-Tree dan
I meliputi semua rectangle masukan node di bawahnya.
Gambar 3 Struktur dari R-Tree (Guttman 1984).
5
Hash
Salah satu cara yang digunakan untuk implementasi metode himpunan abstract data type (ADT) adalah dengan menggunakan tabel
hash. Proses search pada tabel hash
merupakan exact search. Ide utama yang melatarbelakangi semua implementasi tabel
hash adalah menyimpan sebuah himpunan dari n = |S| elemen di dalam array (tabel
hash) A dengan panjang m ≥ n. Oleh karena itu, kita perlu sebuah fungsi yang memetakan elemen-elemen x tersebut ke dalam lokasi dari array. Fungsi ini disebut dengan fungsi
hash h dan nilai dari h(x) disebut nilai hash
dari x. Elemen x dapat disimpan pada lokasi array A[h(x)]. Banyak implementasi dari tabel hash didasarkan dengan integer universe assumption (Mehta & Sahni 2005).
METODE PENELITIAN
Secara umum metode penelitian yang digunakan tersusun dalam suatu diagram alur penelitian yang dapat dilihat pada Gambar 4.
Gambar 4 Tahapan Penelitian.
Identifikasi Masalah
Identifikasi masalah merupakan tahap awal dari penelitian ini. Masalah yang diidentifikasi adalah berkaitan dengan waktu eksekusi query, output dari proses eksekusi
query dan juga ketersedian fungsi spasial pada kedua DBMS, yaitu PostgreSQL dan MonetDB. Oleh karena itu, dalam penelitian ini dilakukan perbandingan pada kedua DBMS tersebut untuk masalah tersebut.
Pengumpulan Data
Pada tahap ini dilakukan pengumpulan data yang akan digunakan untuk pengujian. Data terdiri atas dua jenis data, yaitu data spasial dan data non-spasial. Data spasial didapat dalam format shapefile. Sedangkan data non-spasial didapat dari sebuah file
dengan ekstensi *.sql. File tersebut berisi baris-baris SQL yang memuat keseluruhan isi data non-spasial.
Pembangunan Database menggunakan PostgreSQL
Setelah semua data diperoleh, maka tahap selanjutnya adalah memasukkan data ke dalam DBMS. Data yang dimasukkan terdiri atas empat data spasial dengan format
shapefile dan satu data non-spasial dalam sebuah file dengan ekstensi *.sql. Oleh karena itu, diperlukan sebuah database baru pada PostgreSQL.
Pembangunan Database menggunakan MonetDB
Untuk MonetDB, data spasial yang akan dimasukkan harus terlebih dahulu diubah ke dalam baris-baris SQL yang disimpan dalam
file dengan ekstensi *.sql. Kemudian dilanjutkan dengan membuat database baru pada MonetDB.
Input dan Hasil Query
Query yang akan digunakan untuk pengujian DBMS dikelompokkan menjadi tiga kelompok, yaitu query non-spasial sederhana, spasial sederhana, dan spasial kompleks.
Analisis Hasil
Hasil pengujian berupa pencatatan waktu dan output dari setiap query yang diuji pada masing-masing DBMS. Selain itu, kemampuan kedua DBMS untuk menjalankan fungsi spasial yang terdapat di dalam query
6
Spesifikasi Perangkat Keras
Untuk spesifikasi perangkat keras yang digunakan di dalam penelitian ini adalah
processor Intel core i5, memori DDR3 2 GB, dan harddisk 500 GB.
HASIL DAN PEMBAHASAN
Pengumpulan Data
Data yang akan digunakan untuk pengujian DBMS terlebih dahulu dikumpulkan. Data terbagi menjadi dua jenis, yaitu data spasial dan data non-spasial. Data didapat dari workshop PostGIS yang disediakan oleh situs OpenGeo2. Data terdiri atas empat data spasial dalam format shapefile
dan satu data non-spasial dalam sebuah file
dengan ekstensi *.sql. Empat data shapefile
ini adalah nyc_census_blocks,
nyc_neighborhoods, nyc_streets, dan
nyc_subway_stations. Satu data non-spasial adalah nyc_census_sosiodata.
Data spasial nyc_census_blocks
merupakan daerah pemetaan terkecil (per blok) dari sensus penduduk yang berada di Kota New York. Gambar 5 merupakan contoh pemetaan dari persentase populasi kulit hitam dari total populasi.
Gambar 5 Persentase populasi kulit hitam.
Data spasial nyc_census_blocks memiliki atribut yang memberikan keterangan untuk
data geometrinya, yaitu ‘blkid’ (identitas blok), ‘popn_total’ (total populasi), ‘popn_white’ (populasi kulit putih), ‘popn_black’ (populasi kulit hitam),
2
http://workshops.opengeo.org
‘popn_nativ’ (populasi penduduk asli Amerika), ‘popn_asian’ (populasi penduduk Asia), ‘popn_other’ (populasi penduduk lainnya), ‘hous_total’ (total rumah), ‘hous_own’ (total rumah pribadi), ‘hous_rent’
(total rumah yang disewakan), dan
‘boroname’ (nama sektor).
Data spasial nyc_neighborhoods ini adalah pemetaan per sektor wilayah. Setiap sektor memiliki beberapa neighborhood. Di New York, neighborhood merupakan suatu konstruksi sosial yang tidak mengikuti garis yang ditetapkan oleh pemerintah. Untuk contoh, neighborhood dari Brooklyn, yaitu Carrol Gardens, Red Hook, dan Cobble Hill yang diketahui sebagai Brooklyn selatan.
Nyc_neighborhoods memiliki dua atribut,
yaitu ‘name’ yang berisikan nama dari
neighborhooddan ‘boroname’ yang berisikan
nama dari sektor-sektor yang ada di New York, yaitu Manhattan, The Bronx, Brooklyn, Staten Island, dan Queens. Gambar 6 merupakan pemetaan untuk neighborhood
pada Kota New York.
Gambar 6 Neighborhood dari New York.
Data spasial nyc_streets ini adalah pemetaan centerline street dari jaringan transportasi kota. Jalan-jalan ini ditandai dengan berbagai tipe untuk membedakan antara jalan umum yang ada seperti gang-gang belakang gedung atau rumah yang sempit, jalan arteri, jalan raya, dan jalan-jalan kecil. Data ini memiliki tiga atribut, yaitu ‘name’
7
Gambar 7 Jalan Kota New York.
Data spasial yang terakhir adalah
nyc_subway_stations. Pemetaan stasiun kereta bawah tanah ini tersimpan di data spasial nyc_subway_stations. Lokasi stasiun ini memudahkan orang dalam menggunakan transportasi kereta bawah tanah. Data ini
memiliki atribut ‘name’ (nama stasiun), ‘borough’ (nama sektor), ‘routes’ (rute), ‘transfers’ (jalur transfer), dan ‘express’
(stasiun untuk kereta ekspres atau tidak). Gambar 8 merupakan pemetaan dari subway station di Kota New York.
Gambar 8 Titik lokasi subway station.
Data non-spasial nyc_census_sociodata
yang didapat adalah data sosial ekonomi yang dikumpulkan selama proses sensus. Data ini
berisikan beberapa atribut, yaitu ‘tractid’ (identitas grup blok), ‘transit_total’ (total
pekerja pada grup blok), ‘transit_public’ (total pekerja dengan transportasi umum),
‘transit_private’ (total pekerja dengan kendaraan pribadi), ‘transit_other’ (total
pekerja dengan berjalan kaki atau bersepeda),
‘transit_time_mins’ (total waktu dalam menit
untuk bekerja), ‘family_count’ (jumlah keluarga di grup blok),
‘family_income_median’ (median pendapatan
keluarga dalam US dolar),
‘family_income_aggregate’ (total pendapatan dari seluruh keluarga), ‘edu_total’ (total orang
dengan sejarah pendidikan),
‘edu_no_highschool_dipl’ (total orang tanpa ijazah sekolah tinggi), ‘edu_highschool_dipl’
(total orang dengan ijazah sekolah tinggi dan tidak diteruskan pendidikannya),
‘edu_college_dipl’ (total orang dengan ijazah
perguruan tinggi dan tidak dilanjutkan pendidikannya), dan ‘edu_graduate_dipl’ (total orang dengan ijazah lulusan sekolah).
Pembangunan Database menggunakan PostgreSQL
Setelah semua data diperoleh, proses selanjutnya adalah memasukkan data ke
database dalam DBMS PostgreSQL. PostgreSQL yang digunakan adalah versi 8.4 dengan PostGIS versi 1.5. Tahap pertama dalam proses pembangunan database
PostgreSQL adalah membuat database baru pada PostgreSQL melalui pgAdmin III yang merupakan antarmuka dari PostgreSQL.
Gambar 9 Pembangunan database pada PostgreSQL.
Gambar 9 merupakan proses pembangunan
8
menggunakan pgAdmin III. Database
tersebut diberi nama ‘sig’. Karena sebelumnya
telah dilakukan instalasi PostGIS, template
yang dipakai dalam database ini adalah
template PostGIS. Hal ini bertujuan agar data spasial format shapefile (*.shp) dapat dikonversi menjadi format PostGIS (*.sql) dan dapat langsung menyimpan hasil konversi ke dalam database. Selain itu, dengan menggunakan template PostGIS, kita memilki tiga fasilitas yang dimiliki oleh PostGIS seperti dapat menerima masukan untuk semua tipe data spasial, pengindeksan data spasial, dan fungsi spasial. Setelah database yang baru selesai dibuat, di dalam database tersebut sudah tersedia dua tabel, yaitu tabel
‘geometry_columns’ dan ‘spatial_ref_sys’.
Tabel-tabel ini secara otomatis dibuat oleh PostgreSQL karena kita menggunakan
template PostGIS sebagai database template.
Tahap yang kedua adalah melakukan konversi data spasial format shapefile ke dalam format PostGIS. Konversi dilakukan dengan menggunakan PostGIS. PostGIS menyediakan antarmuka seperti pgAdmin III
pada PostgreSQL yang memberi kemudahan bagi pengguna untuk mengkonversi data spasial dengan format shapefile ke dalam format PostGIS. Gambar 10 merupakan antarmuka dari PostGIS. Dengan adanya antarmuka dari PostGIS kita tidak perlu menggunakan program shp2pgsql.
Gambar 10 Antarmuka PostGIS.
Antarmuka dari PostGIS yang akan secara otomatis menjalankan program shp2pgsql.
Shp2pgsql merupakan sebuah program untuk mengubah format shapefile (*.shp) ke dalam format PostGIS (*.sql), sedangkan cara manual untuk mengkonversi data spasial menggunakan shp2pgsql adalah dengan mengetikan syntax seperti di bawah ini:
shp2pgsql [option] [shapefile] [schema.table_name] > [file_name
*.sql]
Sebelum dilakukan konversi data dari format shapefile menjadi format PostGIS, salin semua data yang akan digunakan ke
folder directory‘bin’ seperti di bawah ini:
C:\Program Files\PostgreSQL\8.4\bin
Kemudian data dimasukkan satu per satu menggunakan PostGIS. Selanjutnya data dikonversi oleh PostGIS dan hasil konversi langsung masuk ke dalam tabel database
‘sig’. Tabel-tabel tersebut dibuat otomatis oleh PostGIS dengan nama tabel yang sama seperti nama data spasialnya. Untuk data non-spasial nyc_census_sociodata, data didapat dalam sebuah file dengan ekstensi *.sql. Data dimasukkan dengan memuat ke dalam SQL queries PostgreSQL yang ada pada pgAdmin III PostgreSQL.
Setelah semua data dikonversi dan telah dimuat, database ‘sig’ akan memiliki lima tabel baru, yaitu tabel ‘nyc_census_blocks’,
‘nyc_neighborhoods’, ‘nyc_streets’, ‘nyc_subway_stations’, dan ‘nyc_census_sociodata’. Tahap yang terakhir
adalah melakukan vacuum analyze pada setiap tabel. Hal ini perlu dilakukan karena diperkirakan jumlah baris pada masing-masing tabel menyimpang jauh dari jumlah baris yang sebenarnya. Oleh sebab itu, kita harus menjalankan vacuum analyze pada masing-masing tabel agar tidak mengurangi kinerja database. Kita dapat melakukan
vacuum analyzedengan menggunakan menu
maintenance pada pgAdmin III.Cara lainnya adalah menggunakan Command Prompt PostgreSQLdengan mengeksekusi:
VACUUM ANALYZE [tbl_name] (the_geom); Database‘sig’ pada PostgreSQL memiliki
ukuran di dalam disk sebesar 30 MB. Ukuran
database ‘sig’ sesuai dengan ukuran data
9
SELECT pg_size_pretty(pg_database_size ('sig'));
Pembangunan Database menggunakan MonetDB
Proses pembangunan database pada MonetDB berbeda dengan PostgreSQL karena MonetDB tidak memiliki program shapefile loader seperti PostGIS. Format data yang didukung oleh MonetDB adalah CSV, SQL, TAB, RAW dan XML. Oleh karena itu, untuk memasukkan data spasial format shapefile ke dalam MonetDB, tahap pertama yang harus dilakukan adalah mengubah data spasial format shapefile (*.shp) menjadi baris-baris SQL yang disimpan dalam sebuah file dengan ekstensi *.sql.
ArcView adalah software yang dapat digunakan untuk mengubah data spasial (shapefile) menjadi baris-baris SQL yang disimpan dalam sebuah file dengan ekstensi *.sql. Dengan tersedianya extension Gix Export Tool pada ArcView, maka shapefile
dapat diubah menjadi baris-baris SQL.
Data dimasukkan satu per satu kemudian dilakukan konversi menggunakan Gix Export Tool. Setelah semua data dikonversi, perlu
dilakukan penyesuaian struktur syntax SQL yang sesuai dengan standar SQL MonetDB. Oleh karena itu, dilakukan pengeditan agar MonetDB dapat memuat SQL tersebut.
Tahap selanjutnya adalah membuat
database baru pada MonetDB yang dimulai dengan membuat database kosong yang baru. MonetDB tidak memiliki antarmuka bagi pengguna seperti PostgreSQL. MonetDB menggunakan Command Prompt (CMD) sebagai program antarmuka. Dalam menggunakan MonetDB, kita harus terlebih dahulu mengaktifkan server MonetDB. Pengaktifan server dilakukan dengan menggunakan CMD. Pada CMD, directory
yang akan digunakan ke folder directory‘bin’
diubah seperti berikut:
C:\Program Files\MonetDB\MonetDB5\bin
Dilanjutkan dengan mengetikkan syntax
seperti berikut:
mserver5 –-dbname=sig --dbfarm=C:\skripsi
Syntax –-dbname adalah syntax yang digunakan untuk membuat database baru atau menjalankan database yang telah dibuat. Jika kita sudah mengetikkan itu, server sudah aktif dan database baru telah kita buat. Syntax --dbfarm merupakan syntax yang digunakan
untuk membuat folder directory penyimpanan data ke database dalam MonetDB dan juga digunakan untuk memuat directory yang telah kita buat sebelumnya.
Setelah server aktif, kita baru dapat menjalankan client MonetDB. Cara menjalankan client sama seperti menjalankan server. Perbedaannya hanya syntax yang kita
Tahap yang berikutnya adalah memasukkan semua data SQL ke dalam MonetDB. Jadi ada lima data yang akan dimasukkan, empat data hasil konversi menggunakan ArcView dan satu data non-spasial dalam sebuah file dengan ekstensi *.sql. Cara memasukkan data tersebut dengan mengeksekusi perintah ini pada Command Prompt MonetDB pada client MonetDB:
\<C:\Program
Files\MonetDB\MonetDB5\bin\’data.sql’
Setelahnya akan didapatkan lima tabel, yaitu
tabel ‘nyc_census_blocks’, ‘nyc_neighborhoods’, ‘nyc_streets’, ‘nyc_subway_stations’, dan ‘nyc_census_sociodata’.
Minimum Bounding Rectangle (MBR) merupakan cara yang digunakan untuk menambah kecepatan operasi query spasial. Karena MBR ini bekerja seperti filter, maka kinerja untuk proses eksekusi query spasial dapat ditingkatkan. Hanya diperlukan tambahan syntax query sedikit untuk mengimplementasikan MBR ke database
dalam MonetDB seperti pada Gambar 11.
1 ALTER TABLE nyc_census_blocks ADD 2 bbox mbr;
3 UPDATE nyc_census_blocks SET bbox 4 = mbr(shape);
5 ALTER TABLE nyc_neighborhoods ADD 6 bbox mbr;
7 UPDATE nyc_neighborhoods SET bbox 8 = mbr(shape);
9 ALTER TABLE nyc_subway_stations ADD 10 bbox mbr;
11 UPDATE nyc_subway_stations SET bbox 12 = mbr(shape);
13 ALTER TABLE nyc_streets ADD 14 bbox mbr;
15 UPDATE nyc_streets SET bbox 16 = mbr(shape);
Gambar 11 Syntax untuk implementasi
10
Pada MonetDB tidak ada syntax yang dapat digunakan untuk mengetahui ukuran pada disk dari sebuah database pada MonetDB. Berbeda dengan PostgreSQL yang menyediakan syntax untuk mengetahui ukuran
database pada disk. Jika kita ingin melihat ukuran dari database pada MonetDB, kita dapat membuka folder directory dari database
yang kita buat. Untuk database‘sig’ memiliki ukuran sebesar 21 MB yang berada pada mengenai SQL spasial. Oleh karena itu, query
yang digunakan untuk pengujian kinerja DBMS diambil dari modul tersebut.
Modul workshop terbagi menjadi 33
section. Setiap section memiliki materi yang berbeda mulai dari pengenalan PostGIS, cara instalasi software OpenGeo Suite, membuat
database spasial sampai dengan penjelasan dan latihan mengenai query. Oleh sebab itu,
query yang ada pada modul diurutkan mulai dari yang sederhana sampai dengan yang kompleks sesuai dengan pembagian section
dan tingkat kompleksitasnya.
Query yang akan digunakan sebagai pengujian kinerja DBMS dikelompokkan menjadi tiga kelompok, yaitu query non-spasial sederhana, non-spasial sederhana, dan spasial kompleks. Masing-masing query
dijalankan pada PostgreSQL (sql shell) dan MonetDB (client interface program).
Query yang dimasukkan diulang sebanyak empat kali percobaan. Query ulangan ke-2, ke-3, dan ke-4 yang akan dilakukan pencatatan waktu yang dibutuhkan DBMS untuk mengeksekusi query. Query ulangan ke-1 memiliki waktu eksekusi yang jauh lebih lama dibandingkan ulangan ke-2, ke-3, dan ke-4, sedangkan untuk ulangan ke-2, ke-3, dan ke-4 memiliki waktu eksekusi yang tidak jauh berbeda. Oleh karena itu, query ulangan ke-1 tidak masuk dalam pencatatan.
Output dari proses eksekusi query pada kedua DBMS juga perlu dilakukan pencatatan. Hal ini bertujuan untuk menganalisis apakah terdapat perbedaan
output dari kedua DBMS. Perbandingan fungsi spasial bagi kedua DBMS yang
3
http://workshops.opengeo.org
dilakukan adalah menganalisis apakah fungsi tersebut dapat dieksekusi dan mengeluarkan hasil dari eksekusi query yang dijalankan pada masing-masing DBMS.
Query non-spasial sederhana adalah query
untuk mengakses atribut (field) non-geometry. Tidak ada fungsi spasial yang digunakan dalam query. Tabel yang digunakan untuk pengujian query non-spasial sederhana ini
adalah tabel ‘nyc_census_blocks’. Satuan waktu yang digunakan adalah millisecond
(ms).
Query spasial sederhana adalah query
yang menggunakan fungsi spasial untuk mendapatkan hasil yang sesuai dengan fungsi spasialnya. Query ini mengakses field
geometri dan atribut lainnya. Untuk query
spasial, terdapat perbedaan penulisan syntax
di dalam mendefinisikan fungsi spasial dalam PostgreSQL dan MonetDB. PostgreSQL menambahkan ST di depan fungsi spasialnya,
sedangkan pada MonetDB tidak ditambahkan. Kemudian untuk mengakses field geometri, pada PostgreSQL didefinisikan dengan
the_geom, sedangkan pada MonetDB didefinisikan dengan shape. Hal tersebut
disesuaikan dengan nama field geometri pada masing-masing database.
Query spasial kompleks ini menggunakan fungsi spasial dan syntax join untuk mengakses dua tabel berbeda. Dua field
geometri dari dua tabel berbeda diakses secara bersamaan untuk query spasial kompleks. Jadi perbedaan antara query spasial sederhana dengan spasial kompleks adalah dalam penggunaan syntax join pada query spasial kompleks.
Query non-spasial sederhana yang diujikan dapat dilihat pada Tabel 1. Sedangkan untuk waktu eksekusinya beserta
output dicatat pada Tabel 2. Sebagai tambahan perbandingan waktu eksekusi kedua DBMS dapat dilihat pada Gambar 12 untuk query
non-spasial sederhana. Query spasial sederhana yang diujikan dapat dilihat pada Tabel 3 dan Tabel 4 merupakan dokumentasi untuk waktu eksekusi dan output. Gambar 13 menunjukkan perbandingan waktu eksekusi untuk query spasial sederhana. Sedangkan untuk query spasial kompleks dapat dilihat pada Tabel 5 dan waktu eksekusi beserta
output ditunjukkan pada Tabel 6. Gambar 14 merupakan grafik yang menunjukkan perbandingan waktu eksekusi untuk query
11
Tabel 1 Query non-spasial sederhana
No Query
Fungsi Query Non-Spasial Sederhana (PostgreSQL dan MonetDB)
1 Menghitung jumlah populasi di New York
SELECT Sum(popn_total) AS population
FROM nyc_census_blocks;
2 Menghitung jumlah populasi dari Bronx SELECT Sum(popn_total) AS population
FROM nyc_census_blocks WHERE boroname = 'The Bronx';
3 Menghitung rata-rata dari jumlah orang yang tinggal pada masing-masing rumah
SELECT
Sum(popn_total)/Sum(hous_total) AS popn_per_house
FROM nyc_census_blocks;
4 Menghitung persentase populasi kulit putih pada masing-masing borough
SELECT
boroname, 100 *
Sum(popn_white)/Sum(popn_total) AS white_pct
FROM nyc_census_blocks GROUP BY boroname;
Tabel 2 Hasil eksekusi query non-spasial sederhana
No Query
Rataan Waktu (3x ulangan) Output
MonetDB PostgreSQL MonetDB PostgreSQL 1 5.331 ms 39.855 ms 8008278 8008278
2 5.626 ms 42.161 ms 1332650 1332650
3 5.882 ms 54.306 ms 2.650354 2.650354
4 12.284 ms 58.233 ms Boroname White_pct The Bronx 29.8655 Brooklyn 41.2006 Manhattan 54.3594 Queens 44.0807 Staten Island 77.5969
Boroname White_pct Brooklyn 41.2006 The Bronx 29.8655 Manhattan 54.3594 Queens 44.0807 Staten Island 77.5969
Gambar 12 Perbandingan waktu eksekusi untuk query non-spasial sederhana. 0
10 20 30 40 50 60 70
1 2 3 4
Waktu (ms)
Query
12
Tabel 3 Query spasial sederhana
No Query
Fungsi Query MonetDB Query PostgreSQL
1 Menghitung luas area SELECT Area(shape) FROM nyc_neighborhoods WHERE name = 'West Village';
SELECT ST_Area(the_geom) FROM nyc_neighborhoods WHERE name = 'West Village';
2 Menghitung total luas area dari Manhattan
SELECT Sum(Area(shape)) / 4047 FROM nyc_neighborhoods WHERE boroname = 'Manhattan';
SELECT Sum(ST_Area(the_geom)) / 4047
FROM nyc_neighborhoods WHERE boroname =
4 Menghitung panjang
jalan Columbus Cir
SELECT Length(shape) FROM nyc_streets
WHERE name = 'Columbus Cir';
SELECT ST_Length(the_geom) FROM nyc_streets
WHERE name = 'Columbus Cir';
5 Menghitung panjang
jalan yang
6 Menampilkan nilai
geometri
SELECT AsText(shape) FROM nyc_streets WHERE name = 'Atlantic Commons';
SELECT ST_AsText(the_geom) FROM nyc_streets
WHERE name = 'Atlantic
8 Menghitung jarak dari sebuah titik ke sebuah garis
Tabel 4 Hasil eksekusi query spasial sederhana
No Query
Rataan Waktu (3x ulangan) Output
MonetDB PostgreSQL MonetDB PostgreSQL 1 4.782 ms 1.457 ms 1044614.5296 1044614.5303 2 6.595 ms 1.266 ms 13965.320 13965.320
3 39.974 ms 32.516 ms 10418.905 10418.905
13
Lanjutan Tabel 4 Hasil eksekusi query sederhana
5 39.221 ms 34.321 ms Type Length Residental 8629870.338 Motorway 403622.4781 Tertiary 360394.879 Motorway 403622.4781 Tertiary 360394.879
6 4.593 ms 8.858 ms MULTILINESTRING((586781.70 158 4504202.1531, 586863.5196 4504215.988))
MULTILINESTRING((586781.701 58 4504202.1531, 586863.5196 4504215.988))
7 18.671 ms 1.789 ms name Boroname Fort Green Brooklyn
name Boroname Fort Green Brooklyn
8 2.35 ms 0,658 ms 4076.845 4076.845
14
Tabel 5 Query spasial kompleks
No Query
Fungsi Query MonetDB Query PostgreSQL
1 Mencari lokasi stasiun kereta bawah tanah yang ada di Little Italy dan ada berapa rute yang tersedia
SELECT s.name, s.routes FROM nyc_subway_stations AS s JOIN nyc_neighborhoods AS n ON Contains(n.shape, s.shape) WHERE n.name = 'Little Italy';
SELECT s.name, s.routes FROM nyc_subway_stations AS s JOIN nyc_neighborhoods AS n ON ST_Contains(n.the_geom, s.the_geom)
WHERE n.name = 'Little Italy';
2 Menghitung total
populasi di Battery Park
SELECT Sum(popn_total) FROM nyc_neighborhoods AS n JOIN nyc_census_blocks AS c ON "Intersect"(n.shape, c.shape) WHERE n.name = 'Battery Park';
SELECT Sum(popn_total) FROM nyc_neighborhoods AS n JOIN nyc_census_blocks AS c ON ST_Intersects(n.the_geom, c.the_geom)
WHERE n.name = 'Battery Park';
3 Menghitung kepadatan penduduk
SELECT n.name,
Sum(c.popn_total) /
(Area(n.shape) / 1000000.0) AS popn_per_sqkm
FROM nyc_census_blocks AS c JOIN nyc_neighborhoods AS n ON "Intersect"(c.shape, n.shape) WHERE n.name = 'Upper West Side' OR n.name = 'Upper East Side' GROUP BY n.name, n.shape;
SELECT n.name,
Sum(c.popn_total) / (ST_Area(n.the_geom) / 1000000.0) AS popn_per_sqkm FROM nyc_census_blocks AS c JOIN nyc_neighborhoods AS n ON ST_Intersects(c.the_geom, n.the_geom)
WHERE n.name = 'Upper West Side'
OR n.name = 'Upper East Side' GROUP BY n.name, n.the_geom;
Tabel 6 Hasil eksekusi query spasial kompleks
No Query
Rataan Waktu (3x ulangan) Output
MonetDB PostgreSQL MonetDB PostgreSQL
1 29.746 ms 3.944 ms Name Routes Upper East Side 47943.359 Upper West Side 39729.578
name Popn_per_sqkm Upper East Side 47943.359 Upper West Side 39739.578
15
Analisis Hasil
Hasil dokumentasi untuk pencatatan waktu dan output dari uji query yang dieksekusi oleh kedua DBMS dapat dilihat pada Tabel 2, Tabel 4, dan Tabel 6. Dari tabel tersebut, dapat diketahui waktu yang dibutuhkan untuk mengeksekusi setiap query yang dimasukkan dan juga output dari proses eksekusi query. dibandingkan dengan PostgreSQL. Tabel 4 merupakan dokumentasi dari waktu eksekusi dan output untuk query spasial sederhana. PostgreSQL memiliki rata-rata waktu eksekusi yang lebih baik dibandingkan MonetDB untuk query spasial sederhana. Tabel 6 adalah dokumentasi dari waktu eksekusi dan output untuk query spasial kompleks. Untuk query ini, PostgreSQL masih unggul dibandingkan MonetDB karena waktu yang dibutuhkan oleh PostgreSQL untuk eksekusi query lebih baik dari MonetDB.
Pada Gambar 12 dapat kita perhatikan dari empat query yang dieksekusi oleh kedua DBMS, MonetDB memiliki waktu eksekusi yang lebih cepat dari PostgreSQL. PostgreSQL memiliki waktu eksekusi yang lebih baik dibandingkan dengan MonetDB untuk query spasial sederhana yang dapat dilihat pada Gambar 13. Waktu eksekusi antara kedua DBMS untuk query spasial sederhana menunjukkan perbedaan yang tidak terlalu signifikan. Pada Gambar 14 menunjukkan bahwa PostgreSQL masih lebih cepat dalam mengeksekusi query spasial kompleks. Jika dibandingkan dengan MonetDB, maka terlihat sekali perbedaan waktu eksekusi.
Kemudian peneliti mencoba untuk melihat perbedaan waktu eksekusi dari kedua DBMS dengan cara mengeksekusi query yang sama untuk tabel yang memiliki jumlah baris yang berbeda. Tabel tersebut disimpan pada
database yang berbeda. Jadi ada empat
database baru pada masing-masing DBMS, yaitu database ‘sample1’ yang berisi satu
tabel dengan jumlah baris 36592, ‘sample2’ dengan 20000 baris, ‘sample3’ dengan 10000 baris, dan ‘sample4’ dengan 5000 baris. Data yang digunakan adalah data spasial
nyc_census_blocks yang nantinya akan digunakan pada masing-masing database.
Data spasial nyc_census_blocks memiliki
kolom atribut dengan jumlah baris hingga 36592. Data tersebut dilakukan perubahan sehingga sesuai dengan jumlah baris pada masing-masing database.
Gambar 15 Perbandingan waktu eksekusi untuk tabel yang memiliki jumlah baris berbeda.
Query yang akan dieksekusi adalah query
non-spasial sederhana untuk menghitung persentase total populasi kulit putih pada masing-masing borough:
SELECT boroname,
100 * Sum(popn_white)/Sum(popn_total) AS white_pct FROM nyc_census_blocks GROUP BY boroname;
Pada Gambar 15 dapat kita melihat bahwa waktu eksekusi untuk MonetDB tidak mengalami perubahan yang signifikan. MonetDB memiliki waktu eksekusi yang tidak berbeda jauh untuk masing-masing tabel yang memiliki jumlah baris yang berbeda. Sedangkan pada PostgreSQL terlihat perbedaan waktu yang cukup signifikan untuk waktu eksekusi terhadap perubahan jumlah baris pada tabel bila dibandingkan dengan MonetDB.
Skema penyimpanan field (kolom) geometri pada PostgreSQL menyerupai seperti model penyimpanan column-store
DBMS. Field geometri disimpan terpisah pada satu tabel yang bernama
‘geometry_columns’. Tabel
‘geometry_columns’ merupakan tabel yang
menyimpan seluruh field geometri dari setiap tabel. Oleh karena itu, untuk query spasial yang dieksekusi pada PostgreSQL, memiliki
16
waktu eksekusi yang cukup baik. Berbeda untuk query non-spasial sederhana dimana MonetDB memiliki waktu eksekusi yang lebih baik dari PostgreSQL. Hal ini dikarenakan untuk query non-spasial sederhana pada PostgreSQL, atribut yang tidak relevan dengan query akan ikut diakses dan mengakibatkan waktu eksekusi menjadi bertambah. Hal lainnya yang terkait dengan kecepatan proses eksekusi query adalah pengindeksan data yang dilakukan oleh kedua DBMS. Kemampuan pengindeksan data spasial yang dilakukan oleh kedua DBMS dapat berpengaruh kepada kecepatan proses pencarian untuk data spasial. Pengindeksan data spasial pada PostgreSQL menggunakan GiST (Generalized Search Tree) yang mengimplementasikan R-Tree. Pengindeksan data spasial pada PostgreSQL merupakan salah satu fasilitas yang dimiliki oleh PostGIS. Pengindeksan data spasial dengan menggunakan R-Tree dilakukan dengan membagi data ke dalam rectangle, sub-rectangle, sub-rectangle, dan seterusnya yang disebut dengan Minimum Bounding Rectangle
(MBR). Pada MonetDB, untuk pengindeksan dilakukan secara otomatis dan adaptif. Pengindeksan pada MonetDB menggunakan
hash index. Pengindeksan pada MonetDB ini dilakukan dengan memasukkan search key
dari data spasial tersebut ke dalam fungsi hash
yang kemudian disimpan pada tabel hash. Tabel hash tersebut menyerupai sebuah array.
Untuk output hasil eksekusi query dari kedua DBMS tidak terdapat perbedaan seperti yang ditunjukkan pada Tabel 2, 4, dan 6. Dari ketiga jenis query yang dieksekusi, yaitu
query non-spasial, spasial sederhana, dan kompleks memiliki kesamaan output. Untuk
query spasial sederhana dan kompleks yang menggunakan fungsi spasial memiliki kesamaan output dari hasil eksekusi query.
Fungsi spasial yang dimiliki PostgreSQL lebih lengkap dibandingkan MonetDB. Fungsi spasial yang ada pada pengujian query spasial seperti NumInteriorRings, DWithin,
AsGeoJSON, dan NumGeometries tidak dapat dieksekusi oleh MonetDB karena belum diimplementasikan. Pada PostgreSQL, fungsi spasial tersebut dapat dieksekusi. Di samping itu, berdasarkan Tabel 4 dan Tabel 6 bahwa
query spasial sederhana dan kompleks dengan fungsi spasial Intersect memiliki waktu yang sangat signifikan berbeda antara MonetDB dengan PostgreSQL. Dari semua fungsi spasial yang telah dieksekusi oleh kedua DBMS, perbedaan waktu eksekusinya
tidak berbeda jauh kecuali untuk fungsi spasial Intersect. MonetDB membutuhkan waktu yang lebih lama untuk mengeksekusi
query dengan fungsi spasial Intersect
dibandingkan dengan PostgreSQL. Oleh karena itu, untuk pengelompokan query
spasial sederhana dan kompleks seharusnya dilihat dari waktu eksekusi yang berkaitan dengan fungsi spasial, contohnya seperti fungsi spasial Intersect. Jadi bukan lagi
dilihat dari penggunaan syntaxjoin.
SIMPULAN DAN SARAN
Simpulan
Sesuai dengan data yang digunakan dan berdasarkan tabel hasil pengujian, MonetDB lebih unggul dalam hal kinerja akses data dibandingkan PostgreSQL untuk query non-spasial sederhana. MonetDB memiliki waktu rata-rata lebih cepat untuk mengeksekusi
query non-spasial sederhana. Untuk query
spasial sederhana dan kompleks, PostgreSQL memiliki waktu yang lebih cepat untuk mengeksekusi query dibandingkan dengan MonetDB. Berdasarkan pada Gambar 15, MonetDB memiliki perubahan waktu terhadap jumlah baris pada tiap-tiap tabel yang tidak terlalu signifikan. Berbeda dengan PostgreSQL yang memiliki perubahan waktu secara signifikan. Fungsi spasial yang dimiliki oleh PostgreSQL jauh lebih lengkap dan banyak jika dibandingkan dengan MonetDB.
Saran
Penelitian selanjutnya diharapkan dapat menggunakan PostgreSQL sebagai DBMS untuk mengembangkan sebuah Sistem Informasi Geografis (SIG). Karena jika dilihat dari hasil waktu eksekusi untuk query spasial bahwa PostgreSQL memiliki waktu yang baik. Di samping itu perlu dipelajari lebih lanjut dari MonetDB untuk mengetahui cara mengoptimalkan kinerja dalam mengeksekusi
query spasial.
DAFTAR PUSTAKA
Andurkar AD. 2012. Implementation of column-oriented database in PostgreSQL for optimization of read-only queries.
17
Chang KT. 2008. Introduction to Geographic Information Systems. Ed ke-4. New York: McGraw-Hill.
Findthebest. 2012. Unbiased, Data-driven Comparisons [internet]. http://database-management-systems.findthebest.com [27 Des 2012].
Guttman A. 1984. R-Trees a dynamic index structure for spatial searching. Di dalam:
Proceedings of ACM SIGMOD International Conference on Management Data; Berkeley, 1984. hlm 47-57.
Matthew N, Stones R. 2005. Beginning Databases with PostgreSQL. Ed ke-2. New York: Springer-Verlag, Inc.
Mehta DP, Sahni S. 2005. Handbook of Data Structures and Applications. New York: Chapman & Hall/CRC.
MonetDB. 2012. Column Store Features [internet]. http://www.monetdb.org [20 Nov 2012].
PostGIS Team. 2010. PostGIS 1.5.1 Manual [internet]. http://postgis.refractions.net [9 Okt 2012]
PostgreSQL. 2012. The World’s Most
Advanced Open Source Database [internet]. http://www.postgresql.org/ [29 Des 2012].
PostgreSQL Global Development Group. 2009. PostgreSQL 8.4.1.4 Documentation [internet]. http://www.postgresql.org/files/documen tation [23 Okt 2012].