• Tidak ada hasil yang ditemukan

Perbandingan Fungsionalitas dan Kinerja Spatial-DBMS (PostgreSQL/PostGIS dan MonetDB/Spatial)

N/A
N/A
Protected

Academic year: 2017

Membagikan "Perbandingan Fungsionalitas dan Kinerja Spatial-DBMS (PostgreSQL/PostGIS dan MonetDB/Spatial)"

Copied!
27
0
0

Teks penuh

(1)

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

(2)

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

(3)

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.

(4)

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

(5)

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

(6)

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.

(7)

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

(8)

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)………. 2

2 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

(9)

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

(10)

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).

(11)

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

(12)

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).

(13)

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

(14)

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’

(15)

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

(16)

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

(17)

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

(18)

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

(19)

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

(20)

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

(21)

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

(22)

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

(23)

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

(24)

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.

(25)

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].

(26)
(27)

Gambar

Gambar 1
Gambar 2
Gambar 3  Struktur dari R-Tree (Guttman
Gambar 6  Neighborhood dari New York.
+7

Referensi

Dokumen terkait

Berdasarkan hasil analisis yang telah dilakukan, dapat dilihat pada gambar 4.16 bahwa grafik waktu eksekusi kedua metode dalam menentukan pejabat struktural dengan metode SAW

Perbedaan waktu eksekusi antara metode steepest descent dan metode Barzilai-Borwein dapat dilihat pada Tabel 1 untuk fungsi dengan dua variabel, Tabel 2 untuk

Dapat dilihat pada gambar 4.3 bahwa nilai BER yang dihasilkan oleh sistem dengan PN sequence lebih kecil atau lebih baik jika dibandingkan dengan sistem tanpa PN

Berdasarkan hasil pengujian dapat dilihat bahwa antena dipole fraktal kurva Koch yang dibuat memiliki kualitas gambar dan suara yang sama baik dibandingkan dengan

Berdasarkan hasil pengujian dapat dilihat bahwa antena dipole fraktal kurva Koch yang dibuat memiliki kualitas gambar dan suara yang sama baik dibandingkan dengan

Berdasarkan gambar 4 dapat dilihat pada uji coba tahap pertama dengan ukuran paket 20000 byte/s VPN Tunnel memiliki waktu delay yang lebih lama selama 22 ms, sedangkan

Hasil penelitian menunjukkan kinerja Kota Tomohon lebih baik dibandingkan Kota Manado dilihat dari analisis selisih anggaran, tingkat kemandirian Kota Manado lebih

Dari Gambar 3, dapat dilihat bahwa roti terigu 100% (standar) memiliki pengembangan volume yang lebih baik dibandingkan roti tepung sorgum : terigu (30 : 70) dengan penambahan