Optimasi Struktur Basis Data Pada Sistem Pemantauan Kondisi Perairan Air Laut Propinsi Bangka Belitung Ekasari Nugraheni1), P. Husnul Khotimah2) Puslit Informatika LIPI1,2) Jl. Sangkuriang Cisitu Bandung Email :
[email protected]),
[email protected]) Abstrak
Saat ini telah banyak dikembangkan sistem pemantauan lingkungan otomatis untuk mengumpulkan data parameter fisik ataupun kimia dalam rangka pemantauan untuk isu pemanasan global ataupun untuk mitigasi bencana. Propinsi Bangka Belitung juga telah mengembangkan sistem pemantauan kondisi perairan air laut yang dioperasionalkan oleh BOOST (Babel Ocean Observation Science and Technology) dibawah koordinasi DKP (Dinas Kelautan dan Perikanan) Bangka Belitung. Sistem pemantauan secara otomatis akan berakibat secara otomatis dengan pertumbuhan data yang eksponensial terhadap waktu sehingga metode pengamatan kondisi perairan air laut berhadapan dengan sebuah set data yang sangat besar. Lebih lanjut lagi permasalahan yang muncul adalah waktu akses yang diperlukan untuk mengakses data yang diperlukan. Oleh karena itu dalam pengembangan basis data perlu dipertimbangkan mengenai dua hal, yaitu waktu request dan ukuran basis data. Makalah ini menyajikan hasil penelitian terhadap struktur basis data untuk pengumpulan data selama satu tahun dengan tingkat densitas tiap 30 menit dari lima sensor (pasang surut, arah angin, kecepatan angin, kelembaban dan suhu udara) terpasang pada lima stasiun (setiap stasiun memiliki lima sensor). Hasil analisa dilakukan pada dua struktur basis data berbeda menggunakan kriteria optimasi yaitu waktu request dan ukuran basis data. Struktur pertama menggunakan struktur basis data relasional dan struktur kedua berdasarkan skenario dari data yang diminta. Pengujian akan dilakukan terhadap dua struktur basis data tersebut untuk menganalisa efisiensinya. Kedua struktur tersebut diimplementasikan pada mesin basis data PostgreSQL. Kata kunci : optimasi, basis data relasional, pemantauan pasang surut air laut, struktur basis data
Pendahuluan Pemerintah Daerah Propinsi Kepulauan Bangka Belitung menyadari potensi kelautan yang dimiliki dan ancaman dampak fenomena perubahan iklim yang berpengaruh terhadap kehidupan di Babel. Dinas Kelautan dan Perikanan (DKP) Babel sejak akhir tahun 2007 telah mencanangkan program BOOST (Babel Ocean Observation Science and Technology), yang merupakan pusat observasi, penelitian dan pendidikan diantaranya mengenai pasang surut.
Database management system (DBMS) adalah suatu sistem untuk membangun, mengelola dan mengontrol akses ke basis data dan menjalankan operasi terhadap data yang diminta oleh pengguna[1]. Sebuah DBMS mendefinisikan jenis dukungan basis data, fungsi dan kemampuan operasional serta menyediakan proses internal untuk aplikasi eksternal yang dibangun diatasnya. Setiap basis data memiliki struktur atau skema untuk menggambarkan objek yang diwakilinya dan hubungan antara objek. Model data adalah suatu cara untuk mengorganisasikan skema atau struktur basis data, diantaranya adalah model hierarki, jaringan, relasional dan object[1]. DBMS yang dirancang menggunakan struktur basis data tersebut untuk menyediakan akses pada informasi yang tersimpan dalam basis data.
Dalam melakukan pemantauan perairan air laut di wilayahnya, BOOST menggunakan sistem perekaman data secara dijital melalui komunikasi data secara online via kabel telepon, GSM atau komunikasi satelit. Lima stasiun stasiun pemantau telah dibangun tersebar di pulau Bangka dan Belitung. Setiap stasiun pemantauan memiliki beberapa sensor diantaranya sensor untuk pasang surut air laut, arah angin, kecepatan angin, kelembaban dan suhu udara.
Perancangan basis data harus memperhatikan dua faktor utama yang berdampak pada optimasi, yaitu faktor waktu respon dan ukuran basis data. Faktor
1
waktu respon digunakan untuk memastikan bahwa data dapat diakses dengan cepat. Perkiraan waktu data diterima (response time) dalam kondisi sebenarnya adalah masalah yang sangat kompleks, karena selain waktu untuk pemrosesan ada juga waktu tunggu yang dibutuhkan selama menunggu ketersediaan resources.
UNIX, Windows dan Mac OS. phpPgAdmin digunakan sebagai antarmuka ke basis data postgreSQL. PostgreSQL memiliki utilitas yang disebut EXPLAIN, digunakan untuk mengkaji bagaimana query akan dieksekusi. Hasilnya berupa informasi berapa lama waktu yang diperlukan untuk mendapatkan baris data pertama, berapa lama waktu yang dibutuhkan untuk mendapatkan seluruh baris data, dan seberapa besar ukuran bytes rows[5].
Ketika sesi sedang dalam akses ke CPU belum tentu langsung diproses, karena seringkali CPU sedang menunggu atau menyelesaikan operasi lainnya sebelum dapat dilanjutkan. Sehingga ketika beberapa sesi bersaing untuk pemrosesan sumber resources yang sama waktu tunggu menjadi komponen yang paling penting daripada waktu respon yang sebenarnya. Selain itu terdapat variabel tambahan seperti script untuk efisiensi dan lebar band yang mempengaruhi pengukuran [2].
Analisa hanya akan dilakukan berdasarkan pengukuran waktu yang diperlukan oleh internal manajemen basis data dalam memberikan respon. Fokus pengukuran terhadap waktu response yang sebenarnya akan mengabaikan waktu tunggu (manipulating buffers, waiting on locks, dan semua waktu yang dibutuhkan basis data untuk melakukan proses intrumentasi sesuai dengan setiap vendor basisdata).
Optimasi dipengaruhi oleh beberapa faktor, diantaranya model data logis (relasional atau yang lainnya), profil akses query, profil data (statistik volume data) dan modus lokasi (terpusat, distribusi, dll) [3]. Tujuan utama dari penelitian ini adalah untuk menunjukkan bagaimana faktor yang berbeda seperti struktur basis data (model data logis) dan jumlah titik pengumpulan data (volumen data) dengan menggunakan profil akses query dan modus lokasi yang sama berpengaruh dalam efisiensi penyimpanan dan manajemen akses data.
Gambar 1. Response query time Sebuah program PHP sederhana digunakan untuk mendapatkan waktu respon sebenarnya yang diperlukan oleh internal basis data.
Bahan dan Metode
Untuk penelitian ini menggunakan spesifikasi perangkat keras : Intel(R) Xeon(R) CPU E3110 @ 3.00GHz RAM 4 GB hard drive : total 40GB sistem operasi : Fedora release 10 (Cambridge)
echo "Total Rekord: ".pg_numrows($resultsets); echo "
Waktu Respon: ". number_format($time_stop-$time_start,4); ?>
Penelitian berdasarkan basis data pada sistem pemantauan perairan air laut di wilayah kepulauan Bangka Belitung. Jaringan pemantauan terdiri dari lima sensor yang dipasang pada lima stasiun yang tersebar. Setiap stasiun mengumpulkan data dengan selang waktu 30 menit dan presisi waktu pengukuran 1 detik.
Function number_format() menggunakan 4 digit setelah desimal untuk menyimpan argumen microtime(). Variabel time_start dan time_stop di tandai sebagai microtime() agar dapat menghasilkan waktu dalam microseconds.
Skenario penelitian menggunakan dua kumpulan data yang berbeda : data selama 3 bulan dan data selama 1 tahun. Periode pengumpulan data ini dipilih untuk memperlihatkan gambaran waktu respon untuk basis data dengan ukuran yang berbeda.
Semua data pengamatan telah di masukkan ke dalam sistem basis data, dan beberapa query yang dirancang akan dijalankan.
Pada kegiatan penelitian ini diasumsikan bahwa semua data dari sensor pemantauan akan ditransmisikan ke satu sistem pusat dan disimpan di server basis data pusat. Server basis data dapat melayani data yang dijalankan secara lokal maupun yang terhubung via web browser.
Dua buah struktur relasional akan diuji. Struktur basis data pertama (S1) menggunakan struktur basis data relasional dan struktur basis data kedua (S2) berdasarkan skenario dari data yang diminta.
Struktur Basis Data
Mesin basis data yang digunakan adalah postgreSQL 8.1.4. PostgreSQL adalah salah satu sistem database object-relational yang bersifat open source dan berjalan pada banyak platform diantaranya Linux,
2
Query ini menggunakan indeks kunci dan tujuannya adalah untuk menganalisa efisiensi dari pengindeksan yang paling sering digunakan. Cari data mulai dari periode 2011-03-01 00:30:00 hingga 2011-05-31 23:30:00 SELECT measurement.*, stations.name FROM measurement, sensors, stations WHERE measurement.sensor_id = sensors.sensor_id AND sensors.station_id=stations.station_id AND time between ‘2011-03-01 00:30:00’ AND ‘2011-05-31 23:30:00’
Gambar 2. Struktur 1 basis data Struktur S1 menggunakan pendekatan normalisasi yang sesuai dengan normalisasi bentuk ke-3. Struktur ini berbentuk statis, dimana strukturnya tidak mengalami perubahan.
untuk basis data struktur kedua akan menggunakan select union untuk mendapatkan data seluruh stasiun. (SELECT ‘st1’ as stasiun, * FROM st1 WHERE time between ‘2011-03-01 00:30:00’ AND ‘2011-05-31 23:30:00’) UNION (SELECT ‘st2’ as stasiun, * FROM st2 WHERE time between ‘2011-03-01 00:30:00’ AND ‘201105-31 23:30:00’) ...
Semua data pengukuran akan disimpan dalam satu tabel pengukuran (tabel measurement). Kunci utamanya adalah field time, tetapi pengindeksan dilakukan pada setiap field time dan sensor_id. Informasi tentang region, stasiun, sensor dan unit terletak dalam tabel regions, stasiuns, sensors dan units yang saling berhubungan.
Query 2. Tujuan : mencari data yang melebihi nilai tertentu.
Karena strukturnya statis dan sederhana, maka keuntungan dari struktur ini adalah pengelolaannya lebih terukur. Tetapi karena data dari setiap sensor disimpan dalam baris terpisah dan semua pengamatan disimpan dalam satu tabel, maka ukuran basis data akan meningkat dengan pesat.
Mencari data sensor pasang surut air laut pada stasiun ke-3 yang nilainya melebihi 1,5 meter (data selama tahun 2011) SELECT * FROM measurement JOIN sensors ON measurement.sensor_ID=sensors.sensor_ID WHERE measurement.sensor_id=13 AND value >1.5
Untuk basis data struktur kedua, query lebih sederhana karena langsung mengakses ke satu tabel station. SELECT time, tides from st3 where tides > 1.5
Query 3. Tujuan : menghitung statistik dari kelompok data yang dipilih Hitung rata-rata ketinggian pasang ombak setiap minggunya selama satu bulan pada seluruh stasiun Gambar 3. Struktur 2 basis data
select station_id, extract (month from time) as month, AVG(value) FROM measurement Join sensors ON measurement.sensor_id=sensors.sensor_id where sensors.unit_id=1 GROUP BY station_id, month ORDER BY station_id
Struktur kedua bersifat lebih dinamis. Data dari satu stasiun disimpan dalam satu tabel dengan kolom yang sesuai untuk sensor. Nama tabel yang menunjukkan id stasiun memiliki informasi mengenai masing-masing stasiun. Informasi ini didapatkan dengan bantuan metadata dari tabel stasiuns. Tipe struktur ini bervarian dan dapat berubah jika ada stasiun baru dijalankan atau jika ada sensor baru yang diinstalkan. Tabel untuk menyimpan hasil pengukuran dinamai dengan st1, st2, .., st5. Setiap tabel memiliki field time sebagai kunci utama yang diindeks dan memilki field untuk menyimpan hasil pengukuran setiap sensor. Untuk mengurus penamaan tabel, jumlah dan tipe field dijalankan melalui program eksternal.
(SELECT 'st1' as stasiun, extract(month from time) as month, AVG(tides) FROM st1 GROUP BY month) UNION (SELECT 'st2' as stasiun, extract(month from time) as month, AVG(tides) FROM st2 GROUP BY month)...
Hasil dan Pembahasan Untuk set data yang besar, ukuran basis data berperan penting dalam perencanaan karena secara langsung mempengaruhi kinerja terhadap permintaan. Gambar berikut menunjukkan perbandingan ukuran basis data dari kombinasi ke dua struktur basis data dengan jumlah stasiun dan waktu pengumpulan data yang berbeda.
Pengujian Query Tiga buah query akan dianalisa yaitu : Query 1. Tujuan : mendapatkan data seluruh sensor pada setiap stasiun untuk jangka waktu tertentu.
3
menghasilkan waktu respon 0,017 ms dan mengalami kenaikan waktu respon yang signifikan untuk1 tahun. Maksimal waktu untuk Query kedua untuk S1 hampir 0,06 ms dan untuk kondisi krisis hal ini bisa diterima.
Gambar 4. Grafik ukuran basis data S1 dan S2
Gambar 7. Grafik Response Time Q3
Pada S1 dengan 5 stasiun pengamatan terjadi perubahan ukuran basis data yang signifikan selama penambahan waktu pengamatan. Untuk 5 stasiun selama 1 tahun pengamatan pada struktur pertama akan mencatat data sebesar 30,954 MB. Pada struktur kedua data pengamatan 1 tahun yang dihasilkan untuk 5 stasiun adalah sebesar 10,523 MB.
Pada query ketiga, pengamatan untuk 5 stasiun pada S1 menghasilkan waktu respon 0,158 ms. Pada S2 menghasilkan waktu respon 0,18 ms. Sebuah teknik optimasi dianggap memberikan dampak yang signifikan saat waktu proses berkurang sebanyak 30% dan waktu kecepatan pemrosesan per barisnya meningkat[4]. Pada pembahasan makalah ini tingkat signifikansi optimalisasi struktur tabel dititikberatkan pada waktu respon. Hasil pengujian tingkat signifikansi struktur basisdata S2 terhadap S1 melalui proses query adalah seperti pada tabel di bawah ini. Tabel 1. Hasil Pengujian Struktur tabel Perbandingan 3 bulan
Query
Q1
Gambar 5. Grafik Response Time Q1 Parameter kedua dalam analisa ini adalah waktu respon terhadap query. Untuk query pertama (Q1) yang menggunakan indeks pada S1 pada 1 stasiun menghasilkan waktu respon 0,11 sampai 0,123 ms. Waktu respon untuk lima stasiun yang disimpan dalam S1 bernilai antara 0,44 sampai 0,74 ms. Nilai ini dapat diterima untuk monitoring secara real-time. Hal ini menunjukkan pentingnya pengindeksan untuk efisiensi. Waktu respon tergantung pada struktur basis data yang dipilih dan jumlah stasiun.
Q2
Q3
Pada S2 tidak ada perbedaan waktu yang signifikan antara pemantauan tiga bulan dan pemantauan 1 tahun.
S1- 1 stasiun >< S2 – 1 stasiun S1 – 5 stasiun >< S2 5 stasiun S1- 1 stasiun >< S2 – 1 stasiun S1 – 5 stasiun >< S2 5 stasiun S1- 1 stasiun >< S2 – 1 stasiun S1 – 5 stasiun >< S2 - 5 stasiun
12 bulan
67,4 %
Signifikan
66, 9%
Signifikan
0,91 %
Tidak signifikan
40, 7%
signifikan
59,6 %
Signifikan
66 %
Signifikan
71,6 %
Signifikan
72 %
Signifikan
51,6 %
Signifikan
46, 5%
Signifikan
62,9 %
Signifikan
14, 6%
Tidak Signifikan
Berdasarkan tabel di atas diketahui bahwa S2 memiliki pengaruh yang signifikan terhadap optimalisasi waktu proses hampir pada setiap query baik pada 1 stasiun ataupun lebih dari satu stasiun. Optimalisasi terjadi terutama jika jumlah data bertambah besar. Akan tetapi pada Q3 hal tersebut tidak terjadi pada penambahan jumlah stasiun (5 stasiun). Karena walaupun pada data 12 bulan waktu respon S2 masih lebih rendah daripada waktu respon S1, akan tetapi gradien waktu respon terhadap pertambahan jumlah data perbulannya untuk S2 lebih besar dari pada gradien S1.
Gambar 6. Grafik Response Time Q2 Query kedua melakukan pencarian pada field yang tidak diindeks. Struktur pertama untuk 3 bulan
4
Perbedaan tren pada Q3 dapat dijelaskan menggunakan perintah EXPLAIN ANALYZE [Q3] pada S1 dan S2. Dengan perintah tersebut diketahui, pada S1 Q3 dieksekusi sebagai satu query sedangan pada S2 Q3 dibreakdown menjadi 5 subquery scan sesuai dengan penambahan jumlah tabel stasiun yang harus diunionkan. Selain itu pada Q3 terdapat statement sql untuk fungsi AVG() yang membutuhkan perhitungan. Hal ini menyebabkan semakin banyak penambahan stasiun pada S2 akan meningkatkan waktu respon. Hal ini dikarenakan penambahan jumlah subquery scan yang harus dilakukan oleh PostgreSQL.
Kesimpulan dan saran Berdasarkan hasil pengujian diperoleh hasil bahwa struktur basis data S2 lebih optimal jika dibandingkan dengan struktur S1, baik jika dilihat dari ukuran basis data dan jika dilihat dari waktu respon. Akan tetapi jika sistem aplikasi membutuhkan banyak fungsi baik matematis ataupun fungsi pada string, struktur S2 akan memberikan waktu respon yang lebih besar. Untuk aplikasi semacam ini , beban perhitungan matematis ataupun fungsi string tidak harus dikenakan pada permintan query, tetapi dapat dimplementasikan pada skrip program.
Daftar Pustaka [1] Connolly, Thomas, Carolyn Begg. (2005). Database Systems: A Practical Approach to Design,Implementation, and Management. 4th Edition. Pearson Education Limited, Essex. [2] Ph.D. Robert SZCZEPANEK. (2008). Optimization of Database Structure for Hydrometeorological Monitoring System,GIS. Ostrava. [3] T.A. Halpin and H.A. Proper. (1995). Database Schema Transformation & Optimization. OOER’95: 14 th International Conference on Conceptual Modeling, Springer LNCS, Vol. 1021, pp 191-203 [4] Karina Novita Suryani, Ir. Hira Laksmiwati Zoro, M. Sc., Jurnal Sarjan. (2012). Evaluasi Teknik Optimalisasi Proses ETL dan Skema Data Warehouse untuk Mendukung Tactical Business Intelligence. Institut Teknologi Bandung Bidang Teknik Elektro dan Informatika, Volume 1 Number 2. [5] http://www.postgresql.org/docs/current/static/using -explain.html, akses tanggal 8 Oktober 2012
5