110
BAB 4 IMPLEMENTASI DAN EVALUASI
4.1
Implementasi Untuk mengetahui manfaat dari komponen concurrency control ini, perlu dilakukan suatu implementasi. Pada sub bab ini akan dibahas arsitektur RDBMS, penjelasan mekanisme concurrency control pada RDBMS, kebutuhan sumber daya yang meliputi spesifikasi perangkat keras dan perangkat lunak yang dibutuhkan dalam penerapan aplikasi, cara instalasi, dan instruksi penggunaan aplikasi.
4.1.1
Arsitektur RDBMS RDBMS terdiri atas banyak komponen perangkat lunak yang meliputi security, SQL Parser, concurrency control, transaction recovery control, backup restore, dan database storage. Concurrency control yang dibuat dalam penelitian ini merupakan komponen perangkat lunak dari RDBMS (Relational Database Management System).
111
SECURITY SQL PARSER CONCURRENCY CONTROL TRANSACTION RECOVERY CONTROL BACKUP RESTORE DATABASE STORAGE
Gambar 4. 1 Arsitektur RDBMS User akan mengirimkan transaksi berupa query melalui aplikasi client. SQL Parser akan melakukan proses compile terhadap query untuk memastikan kebenaran sintaks yang dikirim oleh client. Berikutnya, transaksi itu akan mengalami proses parsing yang meliputi analisis sintaks untuk mendapatkan nama tabel dan record yang akan diakses. Proses parsing dilakukan oleh SQL Parser. Setelah proses parsing selesai, concurrency control akan mengatur mekanisme penjadwalan eksekusi transaksi. Operasi didalam setiap transaksi yang telah dijadwalkan akan dikirimkan kepada transaction recovery manager. Transaction recovery manager akan menuliskan operasi yang dikirim tersebut ke dalam log file, dan menulis operasi tersebut di temporary database. Jika operasi sudah diberi status commit yang dikirimkan oleh client, maka concurrency control akan mengirimkan status commit tersebut kepada recovery manager sehingga manipulasi terhadap data tersebut akan ditulis ke dalam database
112 oleh database storage manager. Physical recovery manager dapat melakukan backup dan restore terhadap database maupun log file. Penelitian ini difokuskan pada concurrency control yang mengacu pada fakta bahwa RDBMS mengijinkan banyak user untuk mengakses data yang sama di dalam database pada saat bersamaan. User yang mengakses database harus terhubung sebagai client dan terhubung ke server untuk dapat mengirimkan transaksi. Setiap operasi didalam semua transaksi akan diatur agar dapat berjalan secara simultan pada database tanpa mengganggu operasi pada transaksi lainnya sehingga dapat menghasilkan data yang konsisten. 4.1.2
Kebutuhan Sumber Daya Untuk melakukan suatu implementasi yang benar dan tepat sasaran, diperlukan ketersediaan sumber daya yang dibutuhkan, baik dari segi perangkat keras maupun perangkat lunak. Berikut ini spesifikasi perangkat keras dan perangkat lunak yang direkomendasikan untuk menjalankan aplikasi komponen concurrency control ini dengan baik: •
Spesifikasi perangkat keras Spesifikasi
perangkat
keras
yang
dibutuhkan
(http://msdn2.microsoft.com/en-us/netframework/aa497338.aspx) yaitu: a. Prosesor Intel Pentium 4 800 MHz. b. Memori DDR RAM 256 MB. c. Monitor 15” dengan resolusi layar minimal 1024 x 768. d. Left Disk Space sebesar 800 MB.
113 e. LAN Card
Untuk menghubungkan komputer-komputer client ke server dibutuhkan minimal satu unit switch dan kabel UTP yang panjangnya tergantung pada jumlah komputer client dan jaraknya dengan komputer server. •
Spesifikasi perangkat lunak Spesifikasi perangkat lunak dibedakan menjadi perangkat lunak yang diperlukan untuk menjalankan aplikasi dan perangkat lunak yang diperlukan untuk pengembangan aplikasi. •
Perangkat lunak yang diperlukan untuk menjalankan aplikasi ini adalah Sistem Operasi Windows XP Professional Service Pack 2 dengan perangkat lunak pendukung adalah .Net Framework 2.0.
•
Perangkat lunak yang diperlukan untuk pengembangan aplikasi adalah Sistem Operasi Windows XP Professional Service Pack 2 dengan perangkat lunak pendukung adalah Visual Studio .Net 2005 dengan menggunakan bahasa C#.
4.1.3
Cara Instalasi Untuk memulai aplikasi, langkah awal yang harus dilakukan adalah proses instalasi. Hal ini dimaksudkan agar semua komponen yang dibutuhkan oleh aplikasi sudah tersedia di komputer yang akan digunakan
114 untuk menjalankan aplikasi. Proses instalasi ini dapat dilakukan dengan mengikuti langkah-langkah instalasi. 1. Menampilkan masalah copyright. Klik next untuk melanjutkan ke langkah instalasi kedua. Klik cancel untuk membatalkan instalasi.
Gambar 4. 2 Layar pertama instalasi Concurrency Control System pada RDBMS
115 2. Memilih direktori instalasi. Klik browse untuk memilih direktori. Just me dipilih pada instalasi untuk sendiri. Everyone dipilih untuk semua.
Gambar 4. 3 Layar kedua instalasi Concurrency Control System pada RDBMS
116 3. Installer sudah siap untuk melakukan proses instalasi. Klik next untuk melanjutkan ke menu selanjutnya.
Gambar 4. 4 Layar ketiga instalasi Concurrency Control System pada RDBMS
117 4. Proses instalasi sedang berjalan.
Gambar 4. 5 Layar keempat instalasi Concurrency Control System pada RDBMS
118 5. Proses instalasi selesai. Klik close untuk keluar.
Gambar 4. 6 Layar kelima instalasi Concurrency Control System pada RDBMS
4.1.4
Instruksi Penggunaan Aplikasi Setelah proses instalasi selesai, aplikasi akan dapat dijalankan. Aplikasi ini menggunakan arsitektur client-server, sehingga program aplikasi terdiri dari program server dan program client. Penjelasan mengenai cara dan langkah-langkah yang harus dilakukan user dalam menggunakan aplikasi komponen concurrency control pada RDBMS ini adalah sebagai berikut:
119
Layar Menu Utama Server Server merupakan aplikasi yang harus dijalankan pertama kali. Layar Menu Aplikasi Server terdiri atas tiga pilihan menu yaitu menu File, menu Timeout, dan menu Help.
Gambar 4. 7 Layar menu Utama Server
120 Layar Menu File Server Layar ini tampil pada saat user memilih menu File yang terdiri atas satu menu drop-down yaitu exit. Menu Exit digunakan untuk keluar dari program.
Gambar 4. 8 Layar menu File Server
Layar Menu Timeout Server Layar ini tampil pada saat user memilih menu Timeout yang terdiri atas sebuah menu drop-down yang akan digunakan untuk mengubah waktu terjadinya timeout terhadap transaksi yang sedang menunggu untuk mendapatkan lock yang sedang digunakan oleh transaksi lain. Lama waktu yang digunakan menggunakan satuan detik.
121
Gambar 4. 9 Layar menu Timeout Server
Layar Menu Help Server Layar ini tampil pada saat user memilih menu Help yang terdiri atas dua menu drop-down yaitu About dan Help. Menu About berisi informasi tentang penulis. Menu Help berisi panduan singkat untuk dibaca oleh user apabila mengalami kesulitan dalam menggunakan program server ini.
Gambar 4. 10 Layar menu Help Server
122 Setelah aplikasi server dijalankan, user dapat menekan tombol start pada server. Port yang digunakan oleh server telah ditentukan, yaitu 6768. Setelah server mengalami proses start, maka server akan melakukan listen terhadap client. Pada tampilan sebelah kanan akan ditampilkan daftar client yang sedang terhubung ke server. Jika ada client yang connect ke server, maka daftar client akan ditampilkan di sebelah kanan. Pada program server terdapat tombol start, stop, dan restart. Tombol start digunakan oleh server untuk memulai proses listen terhadap client yang connect ke server. Tombol stop digunakan untuk menghentikan proses listen tersebut. Tombol restart digunakan untuk melakukan proses restart terhadap server. Jika server mengalami proses restart, maka semua client yang terhubung akan menjadi tidak terhubung dan server kembali melakukan listen terhadap client yang connect ke server.
123 Layar Menu Utama Client Layar Menu Utama Client terdiri atas dua pilihan menu yaitu menu File dan menu Help.
Gambar 4. 11 Layar menu utama Client
Layar Menu File Client Layar ini tampil pada saat user memilih menu File yang terdiri atas delapan menu drop-down yaitu Connect, Disconnect, Disconnect All, New, Save, Open, Save As, dan exit. Sebelum ada client yang connect, maka menu Disconnect, Disconnect All, New, Save, Open, Save As akan bersifat disable. Begitu juga dengan semua toolbar dan menu edit, font, dan window beserta menu drop-down yang ada di dalamnya.
124
Gambar 4. 12 Layar menu File Client
125 Layar Menu Connect Client
Gambar 4. 13 Layar menu Connect Client Pada kolom IP Number, user dapat menginput nomor IP dari server. Port number server telah ditetapkan, yaitu 6768, sehingga tidak perlu diinput. Setelah itu klik tombol connect. Jika server belum running, atau nomor IP server tidak diisi, atau nomor IP server salah maka akan muncul pesan bahwa connect gagal karena server tidak ditemukan.
126
Gambar 4. 14 Layar gagal Connect karena Server tidak ditemukan
127 Layar Form Client Jika server sudah running, nomor IP server yang diinput sudah benar, maka akan muncul form client.
Gambar 4. 15 Layar Form Client
128 Setelah ada client yang connect, maka drop-down menu Disconnect, Disconnect All, New, Save, Open, Save As tidak lagi bersifat disable dan dapat digunakan. Begitu juga dengan semua icon pada toolbar dan menu edit, font, dan window beserta menu drop-down yang ada di dalamnya. Jika user memilih dropdown menu Disconnect dari menu file, maka form client yang sedang aktif akan ditutup. Jika user memilih drop-down menu Disconnect All dari menu file, maka semua form client yang connect melalui aplikasi client ini akan ditutup. Jika transaksi terakhir yang dikirim melalui form client belum berstatus commit, maka transaksi terakhir tersebut akan mengalami rollback. Concurrency control akan mengirim sinyal kepada recovery manager bahwa terjadi rollback dan mengirimkan TransactionId transaksi tersebut. Recovery manager akan melakukan proses undo terhadap transaksi tersebut. Concurrency control kemudian akan menghapus data transaksi tersebut dari KeyUsedList, ScheduleOperation, dan ScheduleTransaction. Jika user memilih drop-down menu New dari menu file atau menekan icon New pada toolbar, maka akan terbuka halaman baru untuk client yang sedang aktif. Jika user memilih drop-down menu Save dari menu file atau menekan icon Save pada toolbar, maka query yang ada di bagian penulisan akan disimpan. Jika file tersebut belum pernah disimpan sebelumnya, sebuah dialog direktori akan muncul dan user dapat memilih direktori penyimpanan file query tersebut. Namun, jika query tersebut sudah pernah disimpan, maka dialog direktori tidak akan muncul. Menu Save As sama dengan menu Save, namun dialog direktori akan selalu muncul apabila icon Save As pada toolbar ditekan atau drop-down menu Save As ini dipilih. Jika user memilih drop-down menu
129 Open dari menu file atau menekan icon Open pada toolbar, maka akan muncul sebuah dialog yang menampilkan direktori komputer tersebut sehingga user dapat membuka file yang diinginkan dan diletakkan pada bagian penulisan query. Drop-down menu Exit digunakan untuk menutup form utama client. Jika dropdown menu Exit dipilih, maka akan dilakukan pengecekan status transaksi terakhir dari semua client seperti pada pemilihan drop-down menu Disconnect All. Setelah pengecekan, window utama client akan ditutup dan aplikasi berakhir.
Gambar 4. 16 Layar menu Drop-Down Edit Form Client
130
Gambar 4. 17 Layar menu Drop-Down Font Form Client
131
Gambar 4. 18 Layar menu Drop-Down Window Form Client
Layar Menu Help Client Layar ini tampil pada saat user memilih menu Help yang terdiri atas dua menu drop-down yaitu About dan Help. Menu About berisi informasi tentang penulis. Menu Help berisi panduan singkat untuk dibaca oleh user apabila mengalami kesulitan dalam menggunakan program client ini.
132 4.2
Evaluasi Komponen concurrency control dievaluasi untuk memastikan bahwa komponen ini dapat menyelesaikan tiga permasalahan yang ditimbulkan akibat masalah pengaksesan bersamaan, yaitu masalah lost update, masalah uncommitted dependency, dan masalah inconsistent analysis. Evaluasi dilakukan untuk memastikan konsistensi data pada saat database diakses oleh banyak user dan salah satu dari user melakukan perubahan terhadap data.
4.2.1
Validitas Data Untuk menguji validitas data dalam sistem concurrency control pada RDBMS, akan dilakukan pemeriksaan penjadwalan dalam tiap beberapa transaksi yang dikirim bersamaan oleh banyak client ke server. Pemeriksaan penjadwalan ini dilakukan dengan menggunakan file schedule.txt. Pada aplikasi ini terdapat file schedule.txt yang berisi histori semua transaksi yang meliputi waktu kedatangan transaksi, operasi-operasi yang terdapat di dalam transaksi tersebut, waktu kedatangan operasi, status operasi yaitu execute atau wait, waktu sebuah transaksi mengirimkan commit kepada server, dan waktu recovery manager mengirimkan status commit kepada transaksi yang menandakan bahwa transaksi tersebut telah selesai dieksekusi dan dicatat di log file serta telah selesai dicatat ke dalam database. Pada pengujian ini, client di sebelah kiri akan disebut sebagai client satu, dan client di sebelah kanan akan disebut sebagai client dua. Transaksi yang dikirim oleh client satu akan disebut sebagai T1 dan
133 transaksi yang dikirim oleh client dua akan disebut sebagai T2. Pada pengujian ini akan digunakan sintaks begin, commit, dan rollback. Sintaks begin menandakan awal dari sebuah transaksi. Sintaks commit menandakan sebuah successful end dari transaksi, sehingga setiap perubahan yang dieksekusi oleh transaksi dapat safely committed ke dalam database dan tidak akan mengalami undo. Sintaks rollback menandakan sebuah unsuccessful end dari transaksi, sehingga setiap perubahan yang dilakukan kepada database akan mengalami undo (Elmasri, 2000, p637).
4.2.1.1
Evaluasi Pengujian Dua Transaksi Bersamaan Membaca Data yang Sama pada Database
134 Gambar 4. 19 Layar pengiriman dua transaksi yang bersamaan membaca data yang sama pada Database Terdapat dua buah transaksi yang dikirim bersamaan oleh dua client, yaitu T1 dan T2. T1 meminta akses membaca terhadap tabel master. Lock yang diminta adalah shared lock. T2 meminta akses membaca terhadap tabel master juga. Lock yang diminta adalah shared lock.
Gambar 4. 20 Layar status transaksi dari dua transaksi bersamaan membaca data yang sama dari Database Mekanisme concurrency control akan mengimplementasikan nonserial schedule pada kasus tersebut. Dengan demikian, operasi pada T1 akan diberi status execute dan dikirim kepada recovery manager. Operasi
135 pada T2 juga akan diberi status execute dan dikirimkan kepada recovery manager. Setelah dikirim kepada recovery manager, concurrency control akan mengecek apakah masih ada operasi berikutnya di dalam transaksi tersebut. Jika ada, pengecekan status operasi akan dikerjakan kembali. Pada kasus ini hanya terdapat satu operasi di dalam transaksi. User belum menuliskan sintaks commit pada kedua transaksi tersebut. Artinya, client masih dapat mengirimkan operasi selanjutnya pada transaksi tersebut. Setelah client mengirimkan sintaks commit ke server, hal itu berarti transaksi tersebut sudah selesai. Setelah sebuah transaksi selesai dikirim ke recovery manager, concurrency control akan menunggu sinyal dari recovery manager yang menandakan bahwa transaksi tersebut telah selesai dieksekusi dan ditulis di dalam database. Dengan demikian, concurrency control akan melepaskan semua lock yang dipakai oleh transaksi T1 dan T2 tersebut. Hasil pengujian dapat dilihat pada isi file schedule.txt berikut ini :
Gambar 4. 21 Layar isi file schedule.txt dari dua transaksi yang bersamaan membaca data yang sama pada Database
136
4.2.1.2
Evaluasi
Pengujian
Dua
Transaksi
Bersamaan
yang
Membaca dan Menulis Data yang Sama pada Database
Terdapat dua buah transaksi yang dikirim bersamaan oleh dua client, yaitu T1 dan T2. T1 meminta akses membaca terhadap tabel master. Lock yang diminta adalah shared lock. T2 meminta akses menulis terhadap tabel master juga. Lock yang diminta adalah Exclusive lock.
Gambar 4. 22 Layar pengiriman dua transaksi yang bersamaan membaca dan mengubah data yang sama pada Database
137
Gambar 4. 23
Layar status transaksi dari dua transaksi yang bersamaan
membaca dan mengubah data yang sama pada Database
Mekanisme concurrency control akan mengimplementasikan serial schedule pada kasus tersebut. Dengan demikian, operasi pada T1 akan diberi status execute dan dikirim kepada recovery manager. Operasi pada T2 akan diberi status wait karena meminta exclusive lock pada tabel yang sedang di-lock oleh T1 dan akan menunggu sampai lock yang diminta dilepaskan oleh T1. User belum menuliskan sintaks commit pada kedua transaksi tersebut. Artinya, client masih dapat mengirimkan operasi pada transaksi tersebut. Button Execute Query pada client satu tetap aktif. Hal ini
138 dikarenakan operasi pada T1 memiliki status execute dan telah dikirimkan kepada recovery manager. Artinya transaksi tersebut masih dapat mengirimkan operasi selanjutnya dalam transaksi yang sama, yaitu T1. Karena operasi pada T2 memiliki status wait, maka button Execute Query pada client kedua menjadi tidak aktif. Artinya tidak ada operasi yang dapat dikirimkan sebagai lanjutan dari transaksi dua sampai operasi yang menunggu tersebut mendapatkan lock yang diminta. Setelah client satu mengirimkan sintaks commit ke server, hal itu berarti T1 tersebut sudah selesai. Setelah sebuah transaksi selesai dikirim ke recovery manager, concurrency control akan menunggu sinyal dari recovery manager yang menandakan bahwa transaksi tersebut telah selesai dieksekusi dan ditulis di dalam database. Dengan demikian, concurrency control akan melepaskan semua lock yang dipakai oleh T1 tersebut. Setelah semua lock T1 dihapus dari KeyUsedList, T2 akan membaca KeyUsedList dan tidak menemukan adanya lock yang dipakai pada tabel master, sehingga status operasi pada transaksi dua akan diubah menjadi execute dan query akan dikirimkan kepada recovery manager. Hasil pengujian dapat dilihat pada isi file schedule.txt berikut ini :
139
Gambar 4. 24 Layar isi file schedule.txt dari dua transaksi yang bersamaan membaca data yang sama pada Database
4.2.1.3
Evaluasi Pemecahan Masalah Lost Update menggunakan 2PL Pada evaluasi ini, T1 mengirimkan transaksi berupa sintaks select
dan update terhadap tabel master pada record KY001. Dengan demikian, T1 menggunakan exclusive lock pada tabel master dan record KY001.