+ All Categories
Home > Documents > Implementasi Database Abstraction Layer untuk MySQL ... · membuat sebuah aplikasi web dengan...

Implementasi Database Abstraction Layer untuk MySQL ... · membuat sebuah aplikasi web dengan...

Date post: 20-Mar-2019
Category:
Upload: lethuy
View: 218 times
Download: 0 times
Share this document with a friend
10
1 Implementasi Database Abstraction Layer untuk MySQL Menggunakan Google Go Isar Norwandi, Wahyu Suadi, Baskoro Adi Pratomo Jurusan Teknik Informatika, Fakultas Teknologi Informasi, Institut Teknologi Sepuluh Nopember 1 [email protected] 2 [email protected] 3 [email protected] Abstract— DBaccesslayer atau DBSlayer adalah sebuah database abstraction layer ringan yang sesuai untuk kebutuhan high-load website yang membutuhkan connection pooling. Ditulis dengan menggunakan bahasa C, DBSlayer berkomunikasi dengan client dengan format data JSON melalui HTTP. Pada tugas akhir ini, dilakukan implementasi awal API DBSlayer dan beberapa fitur yang ada di DBSlayer ke dalam sebuah aplikasi database abstraction layer dengan menggunakan bahasa Google Go. Implementasi fitur yang telah dilakukan adalah komunikasi dengan client dengan JSON melalui HTTP, MySQL adapter, round-robin distribution, automatic failover dan multiple connection databases. Hasil uji coba terhadap perfoma aplikasi GoSlayer, dengan melakukan query SELECT, INSERT, UPDATE, dan DELETE dalam jumlah tertentu, menunjukkan bahwa aplikasi GoSlayer memiliki waktu eksekusi yang hampir sama dengan aplikasi DBSLayer. . KeywordsDBSlayer, Google Go, database abstraction layer, JSON, automatic failover, round-robin distribution I. PENDAHULUAN 1.1 Latar belakang masalah DBaccesslayer atau DBSlayer adalah sebuah database abstraction layer ringan yang sesuai untuk kebutuhan high-load website yang membutuhkan connection pooling. Ditulis dengan menggunakan bahasa C untuk kecepatan, DBSlayer berkomunikasi dengan client dengan JSON melalui HTTP. Beberapa fitur yang dimiliki oleh DBSlayer antara lain, interface HTTP yang sederhana, menggunakan format pertukaran data JSON, MySQL adapter, connection pooling, round-robin distribution, automatic failover, dan multiple connection databases. Dengan berkomunikasi dengan client menggunakan HTTP sebagai protokol dan JSON sebagai sebuah encoding, menyebabkan DBSlayer mudah digunakan oleh berbagai bahasa pemrograman yang dapat berkomunikasi dengan HTTP dan JSON. Pada tugas akhir ini, diimplementasikan API DBSlayer dan beberapa fitur yang dimiliki oleh DBSlayer ke dalam sebuah aplikasi database abstraction layer dengan menggunakan bahasa pemrograman Google Go. Beberapa fitur DBSlayer yang diimplementasikan adalah komunikasi dengan client dengan JSON melalui HTTP, MySQL adapter, round-robin distribution, automatic failover dan multiple connection database. Google Go adalah sebuah bahasa eksperimental yang dikeluarkan oleh Google inc. Google Go merupakan bahasa pemrograman yang mengkombinasikan antara performa dan keamanan yang merupakan keuntungan dalam penggunaan bahasa compiler seperti C++ dan kecepatan dari bahasa yang dinamis seperti pyton. Untuk saat ini bahasa Google Go hanya dapat berjalan di FreeBSD, Linux, dan OS X. Berikut ini adalah beberapa keistimewaan dari Google Go, yaitu fast, safe, concurrent, dan open source. JSON singkatan JavaScript Object Notation adalah sebuah format ringkas pertukaran data computer. Formatnya berbasis teks dan terbaca manusia serta digunakan untuk merepresentasikan struktur data sederhana dan larik asosiatif (disebut objek). JSON dianggap sebagai format data yang tidak bergantung pada suatu bahasa dan kode pengolahan dan pembuatan JSON telah tersedia untuk banyak bahasa pemrograman. Database abstraction layer atau lapisan abstraksi database adalah sebuah interface aplikasi pemrograman yang menyatukan komunikasi antara sebuah aplikasi komputer dengan database seperti MySQL, PostgreSQL, dan lain-lain. Database abstraction layer merupakan sebuah pendekatan penyederhanaan atau sebuah penyeragamaan fungsi dari setiap database engine yang ada, jadi tidak perlu mengetahui fungsi API dari database spesifik yang digunakan, yang perlu diketahui hanya fungsi API dari database abstraction layer. 1.2 Tujuan Tujuan dari pembuatan tugas akhir ini adalah untuk mengimplementasikan API DBSlayer dan beberapa fitur dari DBSlayer, yaitu komunikasi dengan client dengan JSON melalui HTTP, MySQL adapter, round-robin distribution, automatic failover, dan multiple connection dengan menggunakan bahasa pemrograman Google Go. 1.3 Batasan masalah Batasan akhir dalam pembuatan tugas akhir ini adalah sebagai berikut : Bahasa pemrograman yang digunakan adalah Google Go. Database yang digunakan adalah MySQL. Hanya dapat berjalan di komputer yang berbasis OS Linux. Aplikasi yang telah menggunakan DBSlayer sebagai aplikasi database abstraction layer, dapat menggunakan aplikasi database abstraction layer tanpa mengubah source code yang ada. Aplikasi database abstraction layer ini tidak perlu
Transcript
Page 1: Implementasi Database Abstraction Layer untuk MySQL ... · membuat sebuah aplikasi web dengan menggunakan bahasa ... - Secara otomatis memungkinkan penggunaan format ... - Kompatibilitas

1

Implementasi Database Abstraction Layer untuk MySQL Menggunakan Google Go

Isar Norwandi, Wahyu Suadi, Baskoro Adi Pratomo

Jurusan Teknik Informatika, Fakultas Teknologi Informasi, Institut Teknologi Sepuluh Nopember [email protected] [email protected]

[email protected]

Abstract— DBaccesslayer atau DBSlayer adalah sebuah database abstraction layer ringan yang sesuai untuk kebutuhan high-load website yang membutuhkan connection pooling. Ditulis dengan menggunakan bahasa C, DBSlayer berkomunikasi dengan client dengan format data JSON melalui HTTP. Pada tugas akhir ini, dilakukan implementasi awal API DBSlayer dan beberapa fitur yang ada di DBSlayer ke dalam sebuah aplikasi database abstraction layer dengan menggunakan bahasa Google Go. Implementasi fitur yang telah dilakukan adalah komunikasi dengan client dengan JSON melalui HTTP, MySQL adapter, round-robin distribution, automatic failover dan multiple connection databases. Hasil uji coba terhadap perfoma aplikasi GoSlayer, dengan melakukan query SELECT, INSERT, UPDATE, dan DELETE dalam jumlah tertentu, menunjukkan bahwa aplikasi GoSlayer memiliki waktu eksekusi yang hampir sama dengan aplikasi DBSLayer. . Keywords— DBSlayer, Google Go, database abstraction layer, JSON, automatic failover, round-robin distribution

I. PENDAHULUAN

1.1 Latar belakang masalah DBaccesslayer atau DBSlayer adalah sebuah

database abstraction layer ringan yang sesuai untuk kebutuhan high-load website yang membutuhkan connection pooling. Ditulis dengan menggunakan bahasa C untuk kecepatan, DBSlayer berkomunikasi dengan client dengan JSON melalui HTTP. Beberapa fitur yang dimiliki oleh DBSlayer antara lain, interface HTTP yang sederhana, menggunakan format pertukaran data JSON, MySQL adapter, connection pooling, round-robin distribution, automatic failover, dan multiple connection databases. Dengan berkomunikasi dengan client menggunakan HTTP sebagai protokol dan JSON sebagai sebuah encoding, menyebabkan DBSlayer mudah digunakan oleh berbagai bahasa pemrograman yang dapat berkomunikasi dengan HTTP dan JSON.

Pada tugas akhir ini, diimplementasikan API DBSlayer dan beberapa fitur yang dimiliki oleh DBSlayer ke dalam sebuah aplikasi database abstraction layer dengan menggunakan bahasa pemrograman Google Go. Beberapa fitur DBSlayer yang diimplementasikan adalah komunikasi dengan client dengan JSON melalui HTTP, MySQL adapter, round-robin distribution, automatic failover dan multiple connection database.

Google Go adalah sebuah bahasa eksperimental yang dikeluarkan oleh Google inc. Google Go merupakan bahasa

pemrograman yang mengkombinasikan antara performa dan keamanan yang merupakan keuntungan dalam penggunaan bahasa compiler seperti C++ dan kecepatan dari bahasa yang dinamis seperti pyton. Untuk saat ini bahasa Google Go hanya dapat berjalan di FreeBSD, Linux, dan OS X. Berikut ini adalah beberapa keistimewaan dari Google Go, yaitu fast, safe, concurrent, dan open source.

JSON singkatan JavaScript Object Notation adalah sebuah format ringkas pertukaran data computer. Formatnya berbasis teks dan terbaca manusia serta digunakan untuk merepresentasikan struktur data sederhana dan larik asosiatif (disebut objek). JSON dianggap sebagai format data yang tidak bergantung pada suatu bahasa dan kode pengolahan dan pembuatan JSON telah tersedia untuk banyak bahasa pemrograman.

Database abstraction layer atau lapisan abstraksi database adalah sebuah interface aplikasi pemrograman yang menyatukan komunikasi antara sebuah aplikasi komputer dengan database seperti MySQL, PostgreSQL, dan lain-lain. Database abstraction layer merupakan sebuah pendekatan penyederhanaan atau sebuah penyeragamaan fungsi dari setiap database engine yang ada, jadi tidak perlu mengetahui fungsi API dari database spesifik yang digunakan, yang perlu diketahui hanya fungsi API dari database abstraction layer.

1.2 Tujuan Tujuan dari pembuatan tugas akhir ini adalah untuk

mengimplementasikan API DBSlayer dan beberapa fitur dari DBSlayer, yaitu komunikasi dengan client dengan JSON melalui HTTP, MySQL adapter, round-robin distribution, automatic failover, dan multiple connection dengan menggunakan bahasa pemrograman Google Go.

1.3 Batasan masalah Batasan akhir dalam pembuatan tugas akhir ini

adalah sebagai berikut : Bahasa pemrograman yang digunakan adalah Google

Go. Database yang digunakan adalah MySQL. Hanya dapat berjalan di komputer yang berbasis OS

Linux. Aplikasi yang telah menggunakan DBSlayer sebagai

aplikasi database abstraction layer, dapat menggunakan aplikasi database abstraction layer tanpa mengubah source code yang ada.

Aplikasi database abstraction layer ini tidak perlu

Page 2: Implementasi Database Abstraction Layer untuk MySQL ... · membuat sebuah aplikasi web dengan menggunakan bahasa ... - Secara otomatis memungkinkan penggunaan format ... - Kompatibilitas

2

melakukan proses installasi Aplikasi database abstraction layer ini memiliki fitur:

- Komunikasi dengan client melalui HTTP dengan JSON

- Menangani single database server maupun multiple database server

- Automatic failover - Round-robin distribution

II. TINJAUAN PUSTAKA

A. Google Go Go adalah sebuah bahasa pemrograman yang dikembangkan oleh Google inc. desain awal dari Go dimulai pada bulan September 2007 oleh Robert Griesemer, Rob Pike, dan Ken Thompson. Go secara resmi diumumkan pada November 2009, dengan implementasi pada platform Linux dan Mac OS X. Google Go merupakan bahasa pemrograman yang mengkombinasikan antara performa dan keamanan yang merupakan keuntungan dalam bahasa compiler seperti C++ dan kecepatan dari bahasa yang dinamis seperti Python. Go diproyeksikan menjadi bahasa yang dipergunakan untuk system programming dengan dukungan terhadap multi-processing dan ringan untuk object-oriented design. Berikut ini adalah keistimewaan Google Go, yaitu

- Fast Compiler Go menghasilkan code secara cepat. Build hanya memakan waktu hitungan detik dan hasil programnya berjalan secepat C atau C++ code.

- Safe Go aman terhadap penggunaan memori

- Concurrent Go memperkenalkan lightweight communicating process, yang disebut goroutines.

- Fun Go build secara cepat, clean syntax, garbage collection, methods for any type, and run time reflection. Seperti dynamic language tetapi memiliki kecepatan dan keamanan seperti static language.

- Opensource Go adalah sebuah proyek open source yang didistribusikan dibawah BSD-style license.

B. Web.go Web.go adalah jalan yang paling simple untuk membuat sebuah aplikasi web dengan menggunakan bahasa pemrograman Go. Web.go mudah dikenali oleh yang melakukan pengembangan website dengan menggunakan higher-level web frameworks seperti Sinatra atau web.py. web.go didesain untuk menjadi web framework yang ringan yang memiliki beberapa fitur antara lain :

- Routing untuk menangani url berdasarkan regex (regular exspressions)

- Cookies yang aman - Dukungan untuk FastCGI dan SCGI - Aplikasi web dikompilasi ke kode asli, berarti waktu

eksekusi dan render halaman lebih cepat. - Melayani file statis

Bagian pentng dari sebuah aplikasi web adalah mengetahui apa yang harus dilakukan terhadap url yang

diberikan. Web.go menyediakan beberapa methods untuk penangan url ayng didasarkan pada route, antara lain :

- Web.Get(pattern, handler) - Web.Post(pattern,handler) - Web.Delete(pattern,handler) - Web.Put(pattern,handler)

Web.go menyediakan metode untuk menjalankan aplikasi web dengan menggunakan protocol SCGI atau FastCGI. Hal ini memungkinkan aplikasi web.go berjalan dengan lingkungan shared host. C. GoMySQL GoMySQL adalah MySQL client library yang lengkap dan stabil yang ditulis dengan menggunakan bahasa pemrograman Go. Tujuan dari project ini adalah menyediakan sebuah library dengan kegunaan yang tinggi, penanganan internal error yang baik, meniru library yang tersedia untuk bahasa pemrograman lain untuk memberikan kemudahan migrasi system berbasis MySQL ke dalam bahasa Go. D. Goconf Goconf adalah sebuah parser file konfigurasi untuk bahasa pemrograman Google Go. Goconf memiliki beberapa fitur, antara lain :

- Memberikan pesan error secara rinci - Tidak perlu menentukan nama bagian (section

name), dalam file konfigurasi (―default‖

diasumsikan sebagai nama bagian (section name)) - Dapat dibaca dengan menggunakan byte slice atau

io.reader - Dapat menulis dengan menggunakan byte slice atau

io.writer E. Opts-go Opts.go adalah paket ringan untuk opsi POSIX dan GNU-style untuk bahasa pemrograman Go. Berikut ini adalah fitur-fitur yang dimiliki oleh opts go:

- Memiliki layar layanan help otomatis - Dukungan untuk kedua opsi pendek dan panjang (-o

dan -opt) - Secara otomatis memungkinkan penggunaan format

–l files dan –lfiles - Dukungan untuk opsi yang ditentukan beberapa kali

dengan nilai yang berbeda - Dukungan argumen opsional

Berikut kekurangan dari opts.go - Semua argumen opsi adalah string - Opts.go tidak mendukung beberapa argumen wajib

untuk satu opsi F. Opts-go Tujuan dari log4go adalah menjadi paket logging yang kuat, mudah dikonfigurasi untuk mempermudah pengembang Go dalam melakukan debug terhadap program mereka lebih efektif, cepat dan mendiagnosa permasalah tanpa menghambat efektifitas mereka selama pengembangan atau menghambat kinerja dari aplikasi mereka. Paket ini adalah paket pengganti sekaligus ekstensi untuk fungsi logging yang ada di dalam Go. Fitur-fitur yang dimiliki oleh log4go adalah sebagai berikut :

Page 3: Implementasi Database Abstraction Layer untuk MySQL ... · membuat sebuah aplikasi web dengan menggunakan bahasa ... - Secara otomatis memungkinkan penggunaan format ... - Kompatibilitas

3

- File log denga rotasi (ukuran, jumlah baris, dan perhari) dan format output yang bias dirubah

- Network logging melalui JSON dan TCP/UDP - XML logger - Konfigurasi XML tersedia untuk perubahan logging

tanpa melakukan compile ulang - Kompatibilitas dengan kode yang menggunakan

paket log standart - Penyaringan log otomatis berdasarkan tnigkat log

pada tiap basis output G. JSON

JSON, singkatan dari JavaScript Object Notation (notasi objek JavaScript). JSON adalah suatu format ringkas pertukaran data.Formatnya berbasis teks dan terbaca oleh manusia serta digunakan untuk merepresentasikan struktur data sederhana dan objek.

Format JSON sering digunakan untuk mentransmisikan data terstruktur melalui suatu koneksi jaringan pada suatu proses yang disebut serialisasi. Aplikasi utamanya adalah pada pemrograman aplikasi web AJAX dengan berperan sebagai alternative terhadap penggunaan tradisional format XML.

Walaupun JSON didasarkan pada subset bahasa pemrograman JavaScript dan umumnya digunakan dengan bahasa tersebut, JSON dianggap sebagai format data yang tak tergantung pada suatu bahasa. Kode untuk pengolahan dan pembuatan data JSON telah tersedia untuk banyak jenis bahasa pemrograman.

H. MySQL

MySQL adalah sebuah perangkat lunak yang menangani sistem manajemen basis data (database

management system) atau DBMS yang multiuser dan multithread.

MySQL adalah sebuah implementasi dari system manajemen basis data relasional (RDBMS) yang didistribusikan secara gratis di bawah lisensi GPL (General Public License).Setiap pengguna dapat secara bebas menggunakan MySQL, namun dengan batasan perangkat lunak tersebut tidak boleh dijadikan produk turunan yang bersifat komersial.

MySQL memiliki beberapa keistimewaan, antara lain:

- Portabilitas MySQL dapat berjalan stabil pada berbagai sistem operasi seperti Windows, Linux, FreeBSD, Mac OS, dan masih banyak lainnya.

- Open Source MySQL didistribusikan sebagai perangkat lunak open source dibawah lisensi GPL.

- Multi-user MySQL dapat digunakan oleh beberapa pengguna dalam waktu yang bersamaan tanpa mengalami permasalahan.

- Performance tuning MySQL memiliki kecepatan yang menakjubkan dalam menangani query sederhana, dengan kata lain dapat memproses lebih banyak SQL per satuan waktu.

- Ragam tipe data

MySQL memiliki ragam tipe data yang banyak, seperti signed / unsigned integer, float, double, char,

date, dan lain-lain. - Keamanan

MySQL memiliki keamanan seperti level subnetmask, namahost, dan izin akses user dengan sistem yang mendetail serta password yang terenkripsi.

I. Database abstraction layer

Abstraction layer atau lapisan abstraksi adalah suatu lapisan untuk menyembunyikan kerumitan yang ada pada fungsi-fungsi yang serupa. Begitu pula dengan database abstraction layer, suatu pendekatan penyederhanaan/penyeragaman fungsi dari setiap database engine yang ada, jadi tidak perlu mengetahui fungsi API database spesifik yang digunakan, tetapi hanya perlu mengetahui fungsi dari API database abstraction layer yang digunakan.

ODBC adalah salah satu dari berbagai jenis database abstraction layer yang ada. Jenis lainnya adalah ORM, di PHP tersedia ActiveRecord, Doctrine, dll; di Java ada Hibernate, dll. Juga ada yang lebih sederhana, seperti pada PHP ada PDO(PECL), atau PEAR DB(PEAR).

Kekurangan dari database abstraction layer sebagai berikut :

- Waktu Karena database abstraction layer menjalankan rutin fungsi yang lebih banyak daripada fungsi native yang disediakan, terntunya waktu query lebih lambat

- Fungsi kompleks spesifik engine Database abstraction layer hanya menyeragamkan fungsi dan hasil, tidak menyediakan kelebihan spesifik (fungsi kompleks) dari engine database. Missal : pengoptimasian query, karena tidak semu database engine menyediakan cara untuk optimasi query (lewat index).

J. HTTP Merupakan sebuah protokol jaringan untuk sistem informasi yang terdistribusi, kolaboratif dan hypermedia. HTTP merupakan landasan dasar dari komunikasi data pada WWW (World Wide Web). Standar pengembangan HTTP dipegang oleh IETF (Internet Engineering Task Force) dan W3C (World Wide Web Consortium) yang berujung pada publikasi serangkaian RFC (Request For Comments), terutama RFC 2616 yang berisi standar atas versi HTTP yang umum digunakan, yaitu HTTP/1.1.

HTTP berfungsi sebagai protokol request-response pada model komputasi client-server. Dalam HTTP, web

browser akan bertindak sebagai client, sementara aplikasi yang dijalankan pada komputer yang melakukan hosting

resource bertindak sebagai server. Client akan mengiriman sebuah request message HTTP ke server. Server yang menyimpan resource atau menyediakan resource mengirimkan response message ke client.

HTTP merupakan salah satu protokol pada layer aplikasi pada framework Internet Protocol Suite atau yang biasa dikenal dengan TCP/IP yang dinamakan berdasarkan dua protokol penting yang digunakan untuk protokol

Page 4: Implementasi Database Abstraction Layer untuk MySQL ... · membuat sebuah aplikasi web dengan menggunakan bahasa ... - Secara otomatis memungkinkan penggunaan format ... - Kompatibilitas

4

komunikasi internet dan jaringan lainnya yaitu protokol TCP (Transmission Control Protocol) dan IP (Internet Protocol).

Resource dari HTTP diidentifikasi dan dilokasikan pada jaringan dengan menggunakan URI (Uniform Resource

Identifiers) atau secara lebih mendetail yaitu URLs (Uniform

Resource Locators) dan menggunakan skema http atau https. URIs dan HTML menghasilkan sebuah sistem sumber yang saling terhubung yang dinamakan dokumen hypertext pada internet yang kemudian menghasilkan terbentuknya World

Wide Web pada tahun 1990.

III. PERANCANGAN PERANGKAT LUNAK

Pengerjaan tugas akhir ini membangun aplikasi yang diberi nama GoSlayer. Dimana aplikasi ini merupakan aplikasi database abstraction layer yang mengimplementasikan API DBSlayer dan beberapa fitur DBSlayer dengan menggunakan bahasa pemrograman Google Go.

Aplikasi ini berkomunikasi dengan client melalui HTTP dengan format data JSON. Aplikasi GoSlayer mengimplementasikan beberapa fitur yang ada di DBSLayer yaitu MySQL adapter, distribution, automatic failover, dan multiple connection database.

Arsitektur sistem secara keseluruhan dari sistem yang dibangun dalam tugas akhir ini ditunjukkan pada Gambar 1 :

Gambar 1 Arsitektur system

Aplikasi GoSlayer berkomunikasi dengan client

dengan menggunakan JSON melalui HTTP. Berikut ini adalah beberapa skenario arsitektur sistem yang bisa digunakan oleh aplikasi GoSlayer.

Gambar 2 Arsitektur sistem dengan single

database server

Application client

Application GoSlayer

Communication

via JSON

over HTTP

MySQL master server

connected

Application GoSlayer

MySQL slave server

MySQL slave server

Round-robin distribution

&

Automatic failover

Round-robin distribution

&

Automatic failover

Communication

via JSON

over HTTP

Gambar 3 Arsitektur sistem dengan master slave

database server

Apabila aplikasi GoSlayer terhubung dengan multiple database server, maka aplikasi GoSlayer secara otomatis melakukan round-robin distribution dan automatic

failover. Berikut ini adalah diagram alir dari sistem aplikasi

yang ditunjukkan pada Gambar 4.

Client application

Client

request via

JSON over

HTTP

Send request

Application

GoSlayerMySQL server

Distribusi round-

robinAutomatic failover

Pass

the processesed

request

Send result

Result via

JSON over

HTTP

Send result

Gambar 4 diagram alir sistem Aplikasi

IV. IMPLEMENTASI PERANGKAT LUNAK

Spesifikasi perangkat keras dan perangkat lunak yang digunakan dalam implementasi perangkat lunak untuk aplikasi tugas akhir ini ditampilkan pada Tabel 1.

Tabel 1 Lingkungan implementasi perangkat lunak Perangkat Keras

Prosesor : intel® Pentium 4 @ 3.00 GHz

Memori : 1,5 GB

Perangkat Lunak

Sistem Operasi :

Linux Debian Squeeze

Perangkat Pengembang:

IDE Eclipse Google Go Plugin

MySQL Server

Implementasi yang telah dilakukan adalah menjalankan aplikasi GoSLayer, komunikasi dengan client, round-robin distribution, automatic failover, multiple connection databases, multiple queries dan log.

V. UJI COBA DAN EVALUASI

Lingkungan uji coba terbagi kedalam dua bagian, yaitu lingkungan uji coba fungsionalitas dan uji coba performa. Lingkungan uji coba yang digunakan dalam uji coba fungsionalitas dan uji coba performa terdiri atas :

- Menggunakan 4 komputer dengan spesifikasi berikut o Processor intel® core ™ 2 duo cpu E7200

@ 2.53GHz dengan memory 2 GB - Menggunakan komputer yang berjalan dengan sistem

operasi GNU/Linux untuk aplikasi GoSlayer. - Menggunakan komputer yang berjalan dengan sistem

operasi Windows untuk komputer aplikasi client dan untuk database server.

Page 5: Implementasi Database Abstraction Layer untuk MySQL ... · membuat sebuah aplikasi web dengan menggunakan bahasa ... - Secara otomatis memungkinkan penggunaan format ... - Kompatibilitas

5

- Menggunakan database server MySQL

application client

10.151.36.33

Application GoSlayer

10.151.36.21

Application GoSlayer

10.151.36.21

Database server 1

10.151.36.19

Single

connection database

Database server 1

10.151.36.19

Multiple

connection

databases

Database server 2

10.151.36.27

Multiple connection databases

Gambar 5 Topologi lingkungan uji coba

1. Uji Coba Fungsionalitas Uji coba fungsionalitas dilakukan untuk melihat

apakah fungsi-fungsi dasar dari sistem ini berjalan secara maksimal. Uji coba fungsionalitas dilakukan terhadap aplikasi GoSlayer.

Karena bertujuan untuk menguji fungsi sistem berjalan sesuai dengan sistem. Uji coba fungsionalitas ini meliputi beberapa pengujian fungsi-fungsi pokok, seperti menjalankan aplikasi GoSlayer, komunikasi dengan client, round-robin distribution, automatic failover, multiple

connection databases, multiple queries. Sehingga skenario yang disusun untuk uji coba

antara lain : - Uji coba menjalankan aplikasi GoSlayer - Uji coba API aplikasi GoSlayer - Uji coba round-robin distribution - Uji coba automatic failover - Uji coba multiple connection databases - Uji coba multiple queries

Pada uji coba ini, client yang digunakan berupa web browser, karena request yang dikirimkan melalui HTTP dan dalam bentuk format data JSON

1.1. Menjalankan aplikasi GoSlayer Uji coba ini bertujuan untuk melihat bagaimana

aplikasi GoSlayer dijalankan. Untuk menjalankan aplikasi GoSlayer, dibutuhkan beberapa opsi, yaitu opsi path file konfigurasi database, opsi nama database server, dan opsi port aplikasi. Seperti ditunjukkan pada Gambar 6, perintah untuk menjalankan aplikasi GoSlayer.

./GoSlayer –c path file konfigurasi –s nama database –p port

Gambar 6 perintah menjalankan aplikasi GoSlayer

Gambar 7 menunjukkan prose menjalankan aplikasi GoSlayer

./GoSlayer –c GoSlayer.cnf –s db-1

./GoSlayer –c GoSlayer.cnf –s db-1:db-2 –p 8888 Gambar 7 menjalankan aplikasi GoSlayer Isi dari file konfigurasi database adalah nama

database server, username database, ip host database server, password database dan nama database yang digunakan. Seperti yang ditunjukkan pada Gambar 8

#GoSlayer.cnf [db-1] user=world host=10.151.36.19 password=world database=slayer [db-2] user=world host=10.151.36.27 password=world database=slayer

Gambar 8 isi file konfigurasi database

Apabila opsi port aplikasi tidak di isi, maka aplikasi secara otomatis menggunakan port 9999.

1.2. API aplikasi GoSlayer API aplikasi GoSlayer

Uji coba ini bertujuan untuk melihat hasil implementasi API GoSlayer yang mengimplementasikan API DBSlayer. API yang diimplementasikan oleh aplikasi GoSlayer adalah db dan shutdown.

Gambar 9, Gambar 10 , Gambar 11 dan Gambar 12 menunjukkan hasil uji coba API db. Client mengirimkan request terhadap aplikasi GoSlayer. Sesuai dengan API yang disediakan oleh aplikasi GoSlayer, maka aplikasi akan mengembalikan result ke dalam bentuk format data JSON melalui HTTP. Maka dilakukan uji coba mengirimkan request Query, baik dalam perintah SELECT, INSERT, UPDATE, DELETE.

Gambar 9 hasil ujicoba API db dengan query SELECT pada client

Gambar 10 hasil ujicoba API db dengan query INSERT pada client

Gambar 11 hasil ujicoba API db dengan query UPDATE pada client

Page 6: Implementasi Database Abstraction Layer untuk MySQL ... · membuat sebuah aplikasi web dengan menggunakan bahasa ... - Secara otomatis memungkinkan penggunaan format ... - Kompatibilitas

6

Gambar 12 hasil ujicoba API db dengan query DELETE pada client

Hasil uji coba implementasi API shutdown

ditunjukkan pada Gambar 13 dan Gambar 14. Gambar 13 menunjukkan bahwa aplikasi berhasil dimatikan dengan menggunakan API shutdown. Perintah API shutdown, hanya bisa dilakukan dari komputer dimana aplikasi GoSlayer dijalankan.

Gambar 13 aplikasi GoSlayer berhasil dimatikan

Gambar 14 menunjukkan aplikasi GoSlayer gagal di

matikan, karena tidak dilakukan dari komputer tempat aplikasi GoSlayer berada.

Gambar 14 aplikasi GoSlayer gagal dimatikan

1.3. Round-robin distribution Uji coba ini bertujuan untuk melihat bagaimana

aplikasi GoSlayer melakukan pembagian beban kerja terhadap beberapa database server secara round-robin distribution.

Gambar 15 menunjukkan log yang pada aplikasi GoSlayer.

Gambar 15 tampilan log pada request ke -1 dan

ke-2

Dapat dilihat dari Gambar 15, terdapat pembagian kerja database server, di mana request ke-1 ditangani oleh db-1 dan request ke-2 ditangani oleh db-2.

1.4. Automatic failover Uji coba ini bertujuan untuk melihat bagaimana

aplikasi GoSlayer melakukan automatic failover terhadap database server yang tidak mampu menangani request. Untuk itu dilakukan uji coba dengan mematikan salah satu database server yang ada. Sehingga apabila ada request yang menuju ke database server yang mati, secara otomatis di arahkan ke database server yang lain.

Lalu kita mematikan salah satu database server yang ada, dalam ujicoba ini db-2. Apabila ada request yang menuju ke db-2, maka secara otomatis di arahkan meuju db-1, seperti yang ditunjukkan pada gambar dan Gambar 17

Gambar 16 tampilan log saat db-2 hidup

Gambar 17 tampilan log saat db-2 dimatikan

Apabila database server tersebut sudah bisa

menerima request lagi, maka secara otomatis aplikasi GoSlayer akan mengirimkan request kembali ke database server tersebut. Gambar 18 menunjukkan tampilan log setelah db-2 dihidupkan kembali.

Gambar 18 tampilan log saat db-2 dihidupkan

kembali

1.5. Multiple Connection Databases Uji coba ini bertujuan untuk melihat bagaimana

aplikasi GoSlayer dapat melakukan koneksi dengan single

database server ataupun multiple databaser server. Gambar 19 menunjukkan aplikasi GoSlayer berjalan dengan single

database server.

Page 7: Implementasi Database Abstraction Layer untuk MySQL ... · membuat sebuah aplikasi web dengan menggunakan bahasa ... - Secara otomatis memungkinkan penggunaan format ... - Kompatibilitas

7

Gambar 19 aplikasi berjalan dengan

menggunakan satu database server

Gambar 20 menunjukkan aplikasi berjalan dengan multiple

database server.

Gambar 20 aplikasi berjalan dengan

menggunakan 2 database server

1.6. Multiple queries Uji coba ini bertujuan untuk melihat bagaimana

aplikasi GoSlayer dapat menangani single query maupun multiple queries dalam request yang dikirimkan oleh client. Tampilan hasil single query ditunjukkan pada Gambar 21.

Gambar 21 hasil single query pada client

Gambar 22 menunjukkan tampilan hasil multiple

queries,

Gambar 22 hasil multiple queries pada client

2. Uji Concurrency

uji concurrency yang dilakukan terhadap aplikasi GoSLayer ini dilakukan dengan menggunakan aplikasi web stress tool dan melakukan sejumlah multiple request.

Untuk lebih terarah dalam uji coba concurrency ini, perlu didefinisikan query yang berfungsi sebagai inputan aplikasi GoSlayer. Query dalam syntax SQL didefinisikan pada Gambar 23.

SELECT * FROM data limit 2;

Gambar 23 query untuk uji concurrency Uji concurrency dilakukan dengan memberikan

request concurrent terhadap aplikasi GoSlayer. Request

concurrent yang diberikan ke aplikasi GoSlayer adalah sebagai berikut

50 request concurrent

Gambar 24 hasil web stress tool dengan 50

request Gambar 24 menunjukkan hasil web stress tool

terhadap Aplikasi GoSlayer. Dapat dilihat pada gambar,

bahwa dari 50 request concurrent yang dikirim, terdapat 1 error.

100 request concurrent

Gambar 25 hasil web stress tool dengan 100

request Gambar 25 menunjukkan hasil web stress tool terhadap Aplikasi GoSlayer. Dapat dilihat pada gambar, bahwa dari 100 request concurrent yang dikirim, terdapat 1 error.

200 request concurrent

Gambar 26 hasil web stress tool dengan 200 request

Gambar 26 menunjukkan hasil web stress tool terhadap Aplikasi GoSlayer. Dapat dilihat pada gambar, bahwa dari 200 request concurrent yang dikirim, terdapat 7 error. 3. Uji Performa

Uji coba ini dilakukan dengan tujuan untuk mengetahui sejauh mana kemampuan aplikasi ini bekerja dan apa batasan atau kekurangan dari aplikasi ini sehingga dapat dikembangkan lebih lanjut.

Adapun performa yang diukur dalam pengujian ini adalah waktu yang diperlukan untuk query pada database dalam satuan detik. File sumber yang dipakai adalah hasil keluaran tabel data dalam bentuk csv dengan nama data.csv

Tabel 2 Deskripsi tabel data

Name DataType Length id_num

num_rand say_num

Int int

varchar

11 11 100

Uji coba ini dilakukan dengan menggunakan DBSlayer dan GoSlayer.

Pada pengujian query Insert, dilakukan langkah-langkah sebagai berikut : 1. Kosongkan tabel data. 2. Buka file data.csv. 3. Catat waktu mulai. 4. Ambil baris. 5. Data dimasukkan dengan perintah insert into SQL 6. Cek apakah jumlah baris yang diset telah tercukupi? Jika

tidak, kembali ke langkah 3. 7. Catat waktu akhir. 8. Hitung waktu yang diperlukan dengan mengurangi waktu

akhir dengan waktu awal. 9. Tutup file data.csv

Pada pengujian query Select, dilakukan 2 jenis

skenario, yaitu query Select melalui pembacaan file csv dan query Select menggunakan sql. 1. Pada pengujian query Select menggunakan sql dilakukan

langkah-langkah sebagai berikut : 2. Catat waktu mulai. 3. Lakukan query select * dengan menggunakan beberapa

format limit, antara lain limit 10, 100 dan 1000. 4. Catat waktu akhir.

Page 8: Implementasi Database Abstraction Layer untuk MySQL ... · membuat sebuah aplikasi web dengan menggunakan bahasa ... - Secara otomatis memungkinkan penggunaan format ... - Kompatibilitas

8

5. Hitung waktu yang diperlukan dengan mengurangi waktu akhir.

Pada pengujian query Select melalui file csv

dilakukan langkah-langkah sebagai berikut : 1. Kosongkan tabel data. 2. Buka file data.csv. 3. Ambil baris. 4. Data dimasukkan dengan perintah insert into SQL 5. Cek apakah jumlah baris yang diset telah tercukupi? Jika

tidak, kembali ke langkah 3. 6. Tutup file data.csv 7. Buka file data.csv 8. Catat waktu mulai. 9. Ambil baris. 10. Lakukan query select dengan criteria (where clause)

sesuai dengan baris yang diambil. 11. Cek apakah jumlah baris yang diset telah tercukupi? Jika

tidak, kembali ke langkah 9. 12. Catat waktu akhir. 13. Hitung waktu yang diperlukan dengan mengurangi waktu

akhir dengan waktu awal. 14. Tutup file data.csv

Pada pengujian query Update , dilakukan langkah-

langkah sebagai berikut : 1. Kosongkan tabel data. 2. Buka file data.csv. 3. Ambil baris 4. Data dimasukkan dengan perintah Insert into SQL. 5. Cek apakah jumlah baris yang diset telah tercukupi? Jika

tidak, kembali ke langkah 3. 6. Tutup file data csv. 7. Buka file data.csv 8. Catat waktu mulai 9. Ambil baris 10. Lakukan query Update dengan kriteria (where clause)

sesuai dengan baris yang diambil. 11. Cek apakah jumlah baris yang diset telah tercukupi? Jika

tidak, kembali ke langkah 9. 12. Catat waktu akhir 13. Hitung waktu yang diperlukan dengan mengurangi waktu

akhir dengan waktu awal. 14. Tutup file data.csv

Pada pengujian query Delete , dilakukan langkah-

langkah sebagai berikut : 1. Kosongkan tabel data. 2. Buka file data.csv. 3. Ambil baris 4. Data dimasukkan dengan perintah Insert into SQL. 5. Cek apakah jumlah baris yang diset telah tercukupi? Jika

tidak, kembali ke langkah 3. 6. Tutup file data csv. 7. Buka file data.csv 8. Catat waktu mulai 9. Ambil baris 10. Lakukan query Delete dengan kriteria (where clause)

sesuai dengan baris yang diambil. 11. Cek apakah jumlah baris yang diset telah tercukupi? Jika

tidak, kembali ke langkah 9.

12. Catat waktu akhir 13. Hitung waktu yang diperlukan dengan mengurangi waktu

akhir dengan waktu awal. 14. Tutup file data.csv

Pada pengujian query Select, Insert, Update, dan Delete, dilakukan di db-1.

a) Query Insert Tabel 3 Performa Query Insert

jumlah DBSlayer GoSlayer 1 0.0229 0.0253

10 0.2828 0.2986 100 2.3507 2.2612

1000 25.8861 25.9406

Data dalam satuan detik

Gambar 27 Grafik performa Query Insert

Tabel 3 merupakan tabel hasil pengujian performa waktu query Insert untuk sejumlah data. Hasil pengujian dalam bentuk grafik dapat dilihat pada Gambar 27.

Dari data-data pengujian query Insert dapat dilihat bahwa performa GoSlayer dan DBSlayer hampir sama disetiap waktunya.

b) Query Select

Pengujian dengan menggunakan sql Tabel 4 Performa Query Select dengan sql

Jumlah DBSlayer GoSlayer 10 0.0031 0.0033

100 0.0069 0.0072 1000 0.0245 0.0506

Page 9: Implementasi Database Abstraction Layer untuk MySQL ... · membuat sebuah aplikasi web dengan menggunakan bahasa ... - Secara otomatis memungkinkan penggunaan format ... - Kompatibilitas

9

Data dalam satuan detik

Gambar 28 Grafik performa Query Select dengan

sql

Tabel 4 merupakan tabel hasil pengujian performa waktu query Select untuk sejumlah data dengan menggunakan sql. Hasil pengujian dalam bentuk grafik dapat dilihat pada Gambar 28.

Dari data-data pengujian query Select dengan sql dilihat bahwa performa GoSlayer lebih unggul dibanding dengan DBSlayer.

Pengujian dengan menggunakan file csv Tabel 5 Performa Query Select dengan file csv

Jumlah DBSlayer GoSlayer 1 0.0045 0.0038

10 0.0467 0.0335 100 0.4138 0.2545

1000 4.1572 2.6212

Data dalam satuan detik

Gambar 29 Grafik performa Query Select dengan

file csv Tabel 5 merupakan tabel hasil pengujian performa

waktu query Select untuk sejumlah data. Hasil pengujian dalam bentuk grafik dapat dilihat pada Gambar 29.

Dari data-data pengujian query Select dengan file csv dapat dilihat bahwa performa GoSlayer lebih unggul dibanding dengan DBSlayer.

c) Query Update Tabel 6 Performa Query Update

Jumlah DBSlayer GoSlayer 1 0.0256 0.0206

10 0.25 0.2082 100 2.7342 2.3734 1000 26.5417 23.6641

Data dalam satuan detik

Gambar 30 Grafik performa Query Update

Tabel 6 merupakan tabel hasil pengujian performa waktu query Update untuk sejumlah data. Hasil pengujian dalam bentuk grafik dapat dilihat pada Gambar 30.

Dari data-data pengujian query Update dapat dilihat bahwa performa GoSlayer lebih sedikit unggul dibanding dengan DBSlayer.

d) Query Delete

Tabel 7 Performa Query Delete Jumlah DBSlayer GoSlayer

1 0. 0201 0.0229 10 0. 2667 0.2459 100 2. 2897 2.2295

1000 24.4969 23.7384

Data dalam satuan detik

Gambar 31 Grafik performa Query Delete

Tabel 7 merupakan tabel hasil pengujian performa waktu query Delete untuk sejumlah data. Hasil pengujian dalam bentuk grafik dapat dilihat pada Gambar 31.

Page 10: Implementasi Database Abstraction Layer untuk MySQL ... · membuat sebuah aplikasi web dengan menggunakan bahasa ... - Secara otomatis memungkinkan penggunaan format ... - Kompatibilitas

10

Dari data-data pengujian query Insert dapat dilihat bahwa performa GoSlayer dan DBSlayer hampir sama disetiap waktunya.

VI. KESIMPULAN DAN SARAN

Kesimpulan yang dapat diambil dari tugas akhir ini

antara lain sebagai berikut : 1. Perangkat lunak yang dibuat sudah mampu

mengimplementasikan API aplikasi DBSlayer dan beberapa fitur yang dimilliki oleh aplikasi DBSlayer.

2. Perangkat lunak yang dibuat sudah mampu berkomunikasi dengan client melalui HTTP dengan JSON.

3. Perangkat lunak yang dibuat sudah mampu menangani single database server maupun multiple database server.

4. Perangkat lunak yang dibuat sudah mampu melakukan automatic failover.

5. Perangkat lunak yang dibuat sudah mampu melakukan round-robin distribution.

6. Hasil uji coba menunjukkan bahwa dalam segi performa, dengan melakukan query SELECT, INSERT, UPDATE, DELETE dalam jumlah tertentu dan di lakukan pencatatan waktu kecepatan waktu eksekusi, didapatkan koneksi menggunakan GoSlayer memiliki kecepatan eksekusi yang hampir sama dengan aplikasi DBSlayer.

7. Hasil uji coba menunjukkan bahwa dalam segi concurrency, aplikasi GoSlayer masih belum bisa menangani request concurrent secara sempurna.

8. Aplikasi ini dapat dijalankan pada komputer berbasis sistem operasi GNU/Linux tanpa melalui proses installasi.

Beberapa saran perbaikan untuk pengembangan Tugas Akhir ini adalah :

1. Mengubah arsitektur sistem aplikasi menjadi asynchronus sehingga mampu menangani request concurrent secara sempurna

VII. DAFTAR PUSTAKA

1 The Go Programming Language – Documentation,

source, and other for Google’s Go language. http://golang.org

2 Go Programming Language Resources. http://go-lang.cat-v.org

3 Philio. GoMySQL – MySQL client library. https://github.com/Philio/GoMySQL/

4 Hoisie. Web.go – a web framework for Go. http://www.getwebgo.com/

5 Anonim. Goconf – Go configuration file parser – Project hosting on Google Code. http://code.google.com/p/goconf/

6 Anonim. Opts-go – Posix- and GNU-style options fo go- Project hosting on Google Code. http://code.google.com/p/opts-go/

7 Anonim. Log4go – logging package similar to log4j for the Go programming. http://code.google.com/p/log4go/


Recommended