IMPLEMENTASI METODE REPLIKASI
DATABASE TERDISTRIBUSI PADA MYSQL 5.0
(Koperasi Simpan Pinjam)
Skripsi
Diajukan untuk Memenuhi Salah Satu Syarat Memperoleh Gelar Sarjana Teknik
Program Studi Informatika
Disusun Oleh:
Rachel Kurniawati
035314066
TEKNIK INFORMATIKA FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS SANATA DHARMA YOGYAKARTA
2008
IMPLEMENTATION OF REPLICATION METHOD
OF DISTRIBUTED DATABASE ON
MYSQL 5.0
(Savings And Credit Cooperation)
A Thesis
Presented as Partial Fulfillment of the Requirements
To Obtain the Engineering Bachelor Degree
In Informatics Engineering
By:
Rachel Kurniawati
035314066
DEPARTMENT OF INFORMATICS ENGINEERING
FACULTY OF SCIENCE AND TECHNOLOGY
SANATA DHARMA UNIVERSITY
YOGYAKARTA
2008
vi
HALAMAN MOTTO
“ aku melupakan apa yang telah dibelakang ku “
” mengarahkan diri pada apa yang dihadapanku ”
” dan ”
” berlari pada tujuan ”
(Filipi 3: 13 – 14)
vii
HALAMAN PERSEMBAHAN
Teruntuk:
Mama dan Papa
Yusup Budi Pamungkas
viii
INTISARI
Koperasi simpan pinjam merupakan penyedia jasa keuangan bagi masyarakat
menengah ke bawah. Suatu koperasi membuat cabang untuk menjangkau masyarakat
pedesaan, namun ketersediaan data menjadi masalah karena koperasi pusat dan
cabang membutuhkan data bersama.
Replikasi master-master database dapat menyelesaikan masalah ketersediaan
data. Dengan replikasi master-master maka koperasi pusat maupun cabang dapat
melakukan perubahan data dan perubahan data tersebut akan dikirimkan ke cabang
lain dimana data tersebut direplikasi. Keuntungan lain dari replikasi adalah
meningkatnya unjuk kerja karena sistem akan mengakses database terdekat.
Untuk mengimplementasikan metode replikasi master-master pada MySQL
5.0 dan meggunakan JSP sebagai antarmuka.
ix
ABSTRACT
Savings and credit cooperation is a provider of financial honors to people in
lower middle income. Savings and credit cooperation make branchs to serve the rural
people, but the availability become a problem because the central dan branch need the
sharing data.
Master-master replication of database can be one of solution to availability
problem. With master-master replication the central and branch can make a changes
to database and the changes will be send to other branchss where the data is
replicated. The other benefit from replication is high performance because system
access the nearest database.
To implementation master-master replication using server database MySQL
5.0 and JSP as programming language.
x
KATA PENGANTAR
Puji dan syukur kepada Tuhan Yesus Kristus atas berkat, anugerah dan
kemurahan-Nya sehingga penulis dapat menyelesaikan skripsi yang berjudul
“IMPLEMENTASI METODE REPLIKASI DATABASE TERDISTRIBUSI PADA
MYSQL 5.0“ sebagai salah satu syarat untuk memperoleh gelar Sarjana Teknik (S.T.)
di Fakultas Sains dan Teknologi Universitas Sanata Dharma.
Dalam penelitian ini sampai pada penyusunan skripsi ini, penulis banyak
mendapat bantuan dari berbagai pihak. Pada kesempatan ini, penulis ingin
menyampikan penghargaan dan ucapan terima kasih kepada :
1. Romo Ir. Greg Heliarko, S.J.,S.S.,B.S.T.,M.A,M.Sc., Selaku Dekan Fakultas
Teknik Universitas Sanata Dharma.
2. Ibu Agnes Maria Polina, S.Kom., M.Sc., selaku Ketua Jurusan Teknik
Informatika Universitas Sanata Dharma.
3. Ibu Ridowati Gunawan, S.Kom., M.T., selaku Dosen Pembimbing Akademik
sekaligus Tugas Akhir, terimakasih atas ilmu, ide, masukan yang diberikan.
4. Bapak JB. Budi Darmawan, S.T.,M.Sc., selaku Dosen Penguji.
5. Bapak Alb. Agung Hadhiatma, S.T., M.T, selaku Dosen Penguji.
6. Bapak Emanuel Bele Bau, SPd, atas bantuannya saat persiapan ujian.
7. Staff dosen Teknik Informatika atas ilmu yang telah diberikan selama menjalani
study di Universitas Sanata Dharma, terutama yang bersangkutan dengan tugas
akhir ini.
xi
8. Staff Sekretariat Teknik yang telah membantu proses administrasi akademik.
9. Terima kasih yang sebesar-besarnya untuk Pak Daniel dan Bu Rido atas segala
bantuan, dorongan, fasilitas notebooknya. Kiranya Tuhanlah yang dapat
membalas segala kebaikan bapak dan ibu.
10. Untuk mama dan papa, terima kasih atas perhatian, cinta kasih, doa dan usaha
keras kalian. Rachel bisa merasakan bangku kuliah.
11. Buat mas Budi, makasih banget buat cinta, dukungan, semangatnya buat rachel.
Selalu ngingetin buat tugas akhir dan mau nemenin lembur ngerjain TA. Makasih
udah setia dan sabar menunggu sampai Rachel lulus. Jadi.....? ☺
12. Makasih juga buat Ibu di Klaten, yang gak pernah capek dan bosan ngingetin dan
nasehatin rachel setiap ketemu.
13. Makasih buat Sarah yang udah mau berbagi komputer, printer, tinta, kertas. Dah
ngajarin aku buat fungsi, udah memberi semangat walaupun dengan sedikit
memaksa, setia menjadi temen senasib, seperjuangan, sepenanggungan.
SEMANGAT!!!!
14. Buat Dea, dah mau denger semua unek-unek ku, buat masukan, dukungan kamu,
buat pinjeman komputer, printer jaman Pra TA dulu. Hehe.....(Ayo kapan lulus’e?
Kutunggu traktirannya).
15. Gepeng, Jansen, Acit, Dian makasih buat tukar pikiran dan pengalamannya,
semua bermanfaat banget dalam pembuatan tugas akhir ini.
16. Buat Albert (Pak D), Merry, Dea, Acit, Sarah yang udah bantu angkut-angkut
komputer selama persiapan dan setelah ujian.
xii
17. Ucup, Dian, Acit, Jun, Pak D, Merry, Gepeng, Dea, Sarah yang udah nungguin
proses ujian.
18. Terima kasih buat temen-temen lamaku (Christin, Elyta, X-Ray, K’ Hermina, K’
Yelly, Ika, Nova, Rini dan Yanti) yang masih kontak sampe sekarang, buat
dukungan dan semangat kalian. Jarak tak memisahkan persahabatan kita.
19. Buat Nang uda Ester dan keluarga, makasih udah menganggap Rachel seperti
anak sendiri, buat bantuan, doa dan semangatnya.
20. Buat temen-temen TI angkatan 2003, makasih dukungannya.
21. Keluarga besar GPdI Calvary Chapel Surodadi, buat doa dan semangatnya.
22. Semua pihak yang tidak bisa disebutkan satu persatu.
Penulis menyadari bahwa masih banyak kekurangan dalam penyusunan
skripsi ini, penulis memohon kritik dan saran yang sifatnya membangun. Penulis
memiliki harapan yang sangat besar, semoga skripsi ini dapat bermanfaat bagi
pembaca dan perkembangan ilmu pengetahuan.
Yogyakarta, Juni 2008
Penulis
Rachel Kurniawati
xiii
DAFTAR ISI
HALAMAN JUDUL ................................................................................... i
HALAMAN PERSETUJUAN...................................................................... iii
HALAMAN PENGESAHAN....................................................................... iv
HALAMAN KEASLIAN KARYA............................................................... v
HALAMAN MOTTO................................................................................... vi
HALAMAN PERSEMBAHAN.................................................................... vii
INTISARI..................................................................................................... viii
ABSTRACT................................................................................................. ix
KATA PENGANTAR .................................................................................. x
DAFTAR ISI ................................................................................................ xiii
DAFTAR GAMBAR.................................................................................... xvi
DAFTAR TABEL ........................................................................................ vii
BAB I PENDAHULUAN ........................................................................... 1
1.1. Latar Belakang Masalah................................................................... 1
1.2. Rumusan Masalah............................................................................ 2
1.3. Batasan Masalah .............................................................................. 3
1.4. Tujuan Penelitian ............................................................................. 4
1.5. Metodologi Penelitian ...................................................................... 4
1.6. Sistematika Penulisan ...................................................................... 6
BAB II LANDASAN TEORI ..................................................................... 8
2.1. Database .......................................................................................... 8
2.2. Sistem Database Terdistribusi .......................................................... 9
2.3. Distributed Database Management System (DDBMS) ..................... 12
2.4. Replikasi Database........................................................................... 15
2.4.1. Update dalam Replikasi ......................................................... 16
2.4.2. Kepemilikan data................................................................... 19
xiv
2.4.3. Keuntungan ........................................................................... 20
2.4.4. Kerugian................................................................................ 22
2.5. MySQL 5.0 ..................................................................................... 22
2.5.1. Privelege .............................................................................. 22
2.5.2. Membuat User ...................................................................... 23
2.5.3. Replikasi pada MySQL ........................................................ 24
2.5.4. Replikasi Master to Master .................................................... 25
2.6. Web ................................................................................................. 27
2.7. JSP................................................................................................... 28
2.7.1. Arsitektur JSP........................................................................ 28
2.7.2. Elemen-elemen JSP ............................................................... 29
2.8. JDBC............................................................................................... 32
BAB III ANALISIS DAN PERANCANGAN ............................................ 33
3.1. Analisis Sistem ................................................................................ 33
3.1.1. Gambaran Umum Sistem ...................................................... 33
3.1.2. Analisis Masalah ................................................................... 33
3.1.3. Orang yang terlibat dalam sistem........................................... 34
3.1.4. Gambaran Umum Sistem Baru .............................................. 34
3.1.5. Requirement Analysis............................................................ 35
3.1.6. Logical Desain....................................................................... 36
3.1.6.1. Proses Modeling ............................................................. 36
3.1.6.2. E-R Diagram................................................................... 44
3.1.7. Desain Sistem........................................................................ 45
3.2. Desain Teknologi Replikasi ............................................................. 55
3.3. Desain User Interface....................................................................... 59
BAB IV IMPLEMENTASI ....................................................................... 67
4.1. Arsitektur Replikasi........................................................................ 67
4.2. Implementasi Replikasi ................................................................. 68
4.2.1. Membuat Database Koperasi ........................................... 69
xv
4.2.2. Mengkonfigurasi My.ini ................................................. 75
4.2.3. Membuat user replikasi ................................................... 77
4.2.4. Menghubungkan master dengan slave ............................. 78
4.2.5. Menjalankan Slave .......................................................... 80
4.3. Implementasi Sistem ..................................................................... 83
4.3.1. Login User ...................................................................... 83
4.3.2. Keanggotaan ................................................................... 85
4.3.3. Tabungan ........................................................................ 88
4.3.4. Penarikan ........................................................................ 91
4.3.5. Pinjaman ......................................................................... 93
4.3.6. Angsuran ........................................................................ 95
4.3.7. Akun Utama ................................................................... 97
4.3.8. Preferensi......................................................................... 97
4.3.9. Organisasi ....................................................................... 98
4.3.10. Laporan ........................................................................... 98
BAB V ANALISIS HASIL ........................................................................ 105
5.1. Skenario ..................................................................................... 105
5.2. Analisis Teknologi .................................................................... 113
5.3. Kelebihan dan Kekurangan ......................................................... 114
5.3.1. Kelebihan ............................................................................. 114
5.3.2. Kekurangan .......................................................................... 115
BAB VI KESIMPULAN DAN SARAN ..................................................... 116
6.1. Kesimpulan ................................................................................ 116
6.2. Saran .......................................................................................... 116
DAFTAR PUSTAKA.................................................................................. 117
xvi
DAFTAR GAMBAR
Gambar 2.1 Topologi Jaringan Ring................................................................... 9
Gambar 2.2 Proses Replikasi Synchronous ........................................................ 17
Gambar 2.3 Proses Replikasi Asinkron .............................................................. 18
Gambar 2.4 Arsitektur Aplikasi Web ................................................................. 28
Gambar 3.1 Use Case Diagram........................................................................... 35
Gambar 3.2 Context Diagram ............................................................................. 37
Gambar 3.3 Diagram Berjenjang ........................................................................ 38
Gambar 3.4 DFD Level 0.................................................................................... 39
Gambar 3.5 DFD Level 1 Proses 1 ..................................................................... 40
Gambar 3.6 DFD Level 1 Proses 2 ..................................................................... 40
Gambar 3.7 DFD Level 1 Proses 3 ..................................................................... 41
Gambar 3.8 DFD Level 1 Proses 4 ..................................................................... 41
Gambar 3.9 DFD Level 1 Proses 5 ..................................................................... 42
Gambar 3.10 DFD Level 1 Proses 6 ..................................................................... 42
Gambar 3.11 DFD Level 1 Proses 7 ..................................................................... 43
Gambar 3.12 E-R Diagram ................................................................................... 44
Gambar 3.13 Relasi antar tabel ............................................................................. 45
Gambar 3.14 Arsitektur jaringan dan replikasi data............................................. 56
Gambar 3.15 Form Login...................................................................................... 60
Gambar 3.16 Form Anggota ................................................................................. 60
Gambar 3.17 Form Tabungan ............................................................................... 61
Gambar 3.18 Form Penarikan .............................................................................. 61
Gambar 3.19 Form Pinjaman ................................................................................ 62
Gambar 3.20 Form Angsuran................................................................................ 62
Gambar 3.21 Form Akun Utama........................................................................... 63
Gambar 3.22 Form Preferensi ............................................................................... 63
Gambar 3.23 Form Organisasi .............................................................................. 64
xvii
Gambar 4.1 Arsitektur Replikasi ........................................................................ 68
Gambar 4.2 Form Login...................................................................................... 83
Gambar 4.3 Form Tabungan ................................................................................. 88
Gambar 4.4 Form Penarikan ................................................................................ 93
Gambar 4.5 Form Pinjaman .................................................................................. 94
Gambar 4.6 Form Angsuran.................................................................................. 95
Gambar 4.7 Form Akun Utama............................................................................. 97
Gambar 4.8 Form Preferensi ................................................................................. 97
Gambar 4.9 Form Organisasi ............................................................................... 98
Gambar 4.10 Laporan Kredit Umum ................................................................... 99
Gambar 4.11 Laporan Kredit Umum format Excel ............................................. 99
Gambar 4.12 Laporan Tabungan Wajib ............................................................... 100
Gambar 4.13 Laporan Tabungan Wajib format Excel ......................................... 100
Gambar 4.14 Laporan Tabungan Sukarela ........................................................... 101
Gambar 4.15 Laporan Tabungan Sukarela format Excel...................................... 101
Gambar 4.16 Laporan Penarikan Tabungan.......................................................... 102
Gambar 4.17 Laporan Penarikan Tabungan format Excel.................................... 102
Gambar 4.18 Laporan Pinjaman ........................................................................... 103
Gambar 4.19 Laporan Pinjaman format Excel...................................................... 103
Gambar 4.20 Laporan Angsuran........................................................................... 104
Gambar 4.21 Laporan Angsuran format Excel .................................................... 104
Gambar 5.1 Form keanggotaan. .......................................................................... 107
Gambar 5.2 List Anggota ................................................................................... 107
Gambar 5.3 Form Simpanan ............................................................................... 108
Gambar 5.4 Lihat Simpanan Wajib .................................................................... 108
Gambar 5.5 Form Simpanan Sukarela ............................................................... 109
xviii
Gambar 5.6 Lihat Simpanan Wajib..................................................................... 110
Gambar 5.7 Form Penarikan ............................................................................... 110
Gambar 5.8 Form Penarikan ............................................................................... 111
Gambar 5.9 Form Peminjaman ........................................................................... 112
Gambar 5.10 Form Angsuran................................................................................ 112
Gambar 5.11 Form Peminjaman ........................................................................... 113
Gambar 5.12 File binary ...................................................................................... 115
xix
DAFTAR TABEL
Tabel 3.1 Input Output Sistem ........................................................................... 36
Tabel 3.2 Tabel Anggota .................................................................................... 46
Tabel 3.3 Tabel Koperasi ................................................................................... 47
Tabel 3.4 Tabel AkunUtama .............................................................................. 47
Tabel 3.5 Tabel Preferensi .................................................................................. 48
Tabel 3.6 Tabel Kebijakan_koperasi................................................................... 49
Tabel 3.7 Tabel Tabungan................................................................................... 50
Tabel 3.8 Tabel Tabungan_detil ......................................................................... 50
Tabel 3.9 Tabel Penarikan................................................................................... 51
Tabel 3.10 Tabel Pinjaman ................................................................................... 51
Tabel 3.11 Tabel Tagihan ..................................................................................... 52
Tabel 3.12 Tabel Angusran ................................................................................... 53
Tabel 3.13 Tabel Angusran_ detail ....................................................................... 54
Tabel 3.14 Tabel Jurnal......................................................................................... 58
Tabel 3.15 Desain Tabel Laporan Kredit Limit .................................................... 65
Tabel 3.16 Desain Tabel Laporan Tabungan Wajib ............................................. 65
Tabel 3.17 Desain Tabel Laporan Tabungan Sukarela ......................................... 65
Tabel 3.18 Desain Tabel Laporan Penarikan Tabungan....................................... 65
Tabel 3.19 Desain Tabel Laporan Peminjaman ................................................... 66
Tabel 3.20 Desain Tabel Laporan Angsuran......................................................... 66
Tabel 5.1 Daftar anggota dan nasabah KPD .......................................................... 105
Tabel 5.2 Daftar anggota dan nasabahKBJ............................................................ 105
BAB I
PENDAHULUAN
1.1. Latar Belakang Masalah
Kumpulan item data yang saling berhubungan sering dikenal dengan istilah
database. Database merupakan hal yang sangat penting bagi aspek kehidupan
manusia, perusahaan, industri, organisasi, negara, rumah sakit bahkan pendidikan
karena merupakan dasar bagi tersedianya informasi. Database yang relevan, akurat
dan tepat pada waktunya akan sangat menentukan kualitas suatu informasi.
Di Indonesia banyak terdapat koperasi simpan pinjam yang bergerak di
bidang jasa untuk masyarakat terutama yang ada di golongan menengah ke bawah.
Dari sekian banyaknya koperasi tersebut tentunya ada koperasi yang masih dalam
satu yayasan atau dengan kata lain satu koperasi memiliki satu atau lebih cabang yang
letaknya terpisah secara geografis. Namun sangat jarang koperasi pusat dan cabang
tersebut menggunakan data secara bersama. Apabila data di pusat dan cabang dapat
digunakan bersama akan sangat menguntungkan bagi pihak koperasi maupun pihak
anggota yang terdaftar. Data koperasi yang berada di pusat dapat diakses di cabang
maupun sebaliknya, sehingga transaksi-transaksi seperti penyimpanan, penarikan,
peminjaman, pembayaran angsuran dapat dilakukan dengan mudah. Meskipun
1
2
anggota terdaftar di pusat tidak hanya dapat melakukan transaksi di koperasi pusat
namun dapat juga melakukan transaksi di koperasi cabang. Bahkan memungkinkan
fasilitas baru yaitu transfer atau mengirim uang. Dalam penggunaan data secara
bersama diperlukan suatu metode untuk mendistribusikan data. Salah satu cara
pendistribusian database adalah menggunakan replikasi. Data yang digunakan
bersama-sama akan diduplikasi (direplika) dan diletakkan di setiap kantor cabang.
Apabila terjadi perubahan data, maka semua data replika juga akan di-update.
Sehingga dengan metode replikasi ini, maka antara data di pusat dan di setiap cabang
akan selalu sama. Keuntungan lain dari metode ini adalah ketersediaan data dapat
dipenuhi. Kantor pusat dapat mengakses data yang ada di cabang maupun sebaliknya,
dan apabila terjadi kerusakan atau kehilangan data maka masih ada data replika di
cabang lain.
Studi kasus pada tugas akhir ini adalah di koperasi dimana sistem yang akan
dibangun menerapkan replikasi database untuk meningkatkan ketersediaan data.
1.2. Rumusan Masalah
Rumusan masalah dalam penelitian tugas akhir ini adalah Bagaimana
menerapkan database terdistribusi dengan metode replikasi untuk koperasi simpan
pinjam berbasis web.
3
1.3. Batasan Masalah
Dengan segala keterbatasan yang dimiliki maka batasan-batasan tugas akhir
ini adalah:
1. Mengimplementasikan metode replikasi database terdistribusi pada MySQL 5.0.
2. Metode replikasi yang digunakan adalah Replikasi Master to Master.
3. Sistem hanya menangani pemasukan dan perubahan data anggota, pemasukan
data simpanan, pemasukan data pengambilan simpanan, pemasukan data
pinjaman, angsuran, dan laporan.
4. Data pinjaman yang diinputkan oleh pegawai atau karyawan sudah mendapat
persetujuan dari manager.
5. Sistem ini belum mencakup penghitungan bunga tabungan.
4
1.4. Tujuan dan Manfaat Penelitian
Adapun yang menjadi tujuan dalam penulisan ini adalah untuk
mengimplementasikan metode replikasi MySQL 5.0 pada sistem berbasis web
koperasi simpan pinjam.
Manfaat bagi pihak koperasi adalah dapat dengan mudah mengakses data
cabang, dan kemudahan pembutan laporan.
1.5. Metodologi Penelitian
Metodologi yang digunakan dalam penelitian ini adalah dengan Sistem
Development Life Cycle (SDLC), yang terdiri dari tiga tahapan utama yaitu :
1. Analisis
Tujuan dalam tahap ini adalah untuk memahami sistem yang sedang
berjalan saat ini, mengidentifikasi masalah dan mencari solusinya. Kegiatan yang
dilakukan dalam tahap analisis ini adalah :
a. Problem detection untuk mendeteksi sistem, dan menghasilkan permasalahan
yang terjadi dalam sistem.
b. Initial investigation: melakukan penelitian untuk memeriksa sistem yang
digunakan saat ini.
5
c. Requirement analysis untuk mendapatkan kebutuhan pemakai sistem informasi.
2. Desain
Tujuan dalam tahap perancangan untuk mendesain sistem baru yang dapat
menyelesaikan masalah-masalah. Kegiatan yang dilakukan dalam tahap perancangan
ini adalah :
a. Desain output untuk memberikan bentuk-bentuk laporan sistem dan dokumennya.
b. Desain input untuk memberikan bentuk-bentuk masukan ke sistem informasi.
c. Desain interface untuk memberikan bentuk rancang bangun (tampilan) dari
percakapan antara komputer dengan pemakai.
3. Implementasi
Pada tahap ini akan dibuat sistem yang baru dan dapat berjalan secara
optimal. Kegiatan yang dilakukan adalah koding, testing kemudian dilakukan analisis
hasil.
6
1.6. Sistematika Penulisan
Sistematika penulisan dalam laporan ini adalah sebagai berikut :
BAB I. PENDAHULUAN
Untuk memberikan gambaran secara umum tentang keseluruhan
sistem yang meliputi latar belakang, rumusan masalah, batasan
masalah, tujuan dan manfaat penulisan, metode penulisan serta
sistematika penulisan
BAB II LANDASAN TEORI
Pada bab ini akan dijelaskan teori-teori mengenai database, sistem
terdistribusi, replikasi MySQL internet dan JSP secara singkat.
BAB III ANALISIS DAN DESAIN SISTEM
Untuk menjelaskan secara rinci tentang analisa dan desain sistem yang
akan dibangun.
BAB IV IMPLEMENTASI
Akan dijelaskan mengenai proses pembuatan atau
pengimplementasian sistem sesuai dengan desain yang telah dibuat.
7
BAB V ANALISIS HASIL
Di sini akan memuat analisa terhadap sistem yang telah dibuat, apa
yang menjadi kelemahan-kelemahan sistem.
BAB VI KESIMPULAN DAN SARAN
Akan memuat kesimpulan dan saran untuk pengembangan sistem lebih
lanjut berdasarkan pada analisa hasil yang diperoleh.
BAB II
LANDASAN TEORI
2.1. Database
Database merupakan sekumpulan data yang saling berhubungan yang
disimpan bersama-sama untuk melayani satu atau lebih aplikasi secara optimal
atau dengan kata lain suatu database merupakan serangkaian file yang secara logik
berhubungan sedemikian rupa hingga jangkauan data diperbaiki dan berkelebihan
dikurangi.
Konsep database dibuat operasional oleh suatu sistem perangkat lunak
yang mengerjakan fungsi penciptaan dan peremajaan file, mencari data dan
menghasilkan laporan. Semua data dalam rangkaian file dapat dijangkau oleh
program apapun yang bisa menggunakan database.
Database dirancang atas dasar pendekatan aplikatif maupun pendekatan
sistem. Pendekatan aplikatif merupakan cara yang tradisional, dimana database
dirancang hanya untuk memenuhi satu aplikasi tertentu, sehingga terdapat
kemungkinan satu data disiapkan dalam beberapa file berbeda untuk memenuhi
aplikasi-aplikasi yang berbeda. Sedangkan database yang dirancang dengan
pendekatan sistem, memberikan suatu database yang dapat dipergunakan untuk
lebih dari satu aplikasi, dengan mengurangi terjadinya kerangkapan data.
8
9
2.2. Sistem Database Terdistribusi
Database terdistribusi (Conoly, 2002) adalah suatu kumpulan data bersama
yang saling berelasi secara logis, yang secara fisik tersebar/terdistribusi di seluruh
jaringan kumputer.
Dalam sebuah database terdistribusi, database disimpan pada beberapa
komputer yang terhubung melalui jaringan komunikasi atau jaringan komputer.
Dengan tujuan agar terjadi pertukaran informasi antar komputer dan kerjasama
antara komputer yang satu dengan komputer yang lain untuk mencapai suatu
fungsi. Salah satu topologi untuk menghubungkan komputer dalan jaringan adalah
dengan Ring (LAN). Berikut gambar topologi jaringan LAN:
Gambar 2.1 Topologi Jaringan Ring
Sebuah sistem database terdistribusi berisikan sekumpulan site, di mana
tiap-tiap site dapat mengakses database lokal (database pada site itu sendiri)
maupun database global (database yang terletak pada site yang berbeda).
10
Sistem database tersistribusi mempunyai kelebihan dan kekurangan.
Berikut merupakan kelebihan useran sistem database terdistribusi:
1. Otonomi lokal : karena data didistribusikan, user dapat mengakses dan
bekerja dengan data tersebut sehingga memiliki kontrol lokal.
2. Meningkatkan kinerja : karena setiap site menangani hanya bagian dari
DB, CPU dan I/O tidak seberat seperti DB pusat. Data yang dipakai untuk
transaksi disimpan dalam beberapa site, sehingga eksekusi transaksi dapat
dilakukan secara paralel.
3. Meningkatkan reliability/ availability : jika satu site mengalami crash,
dapat membuat beberapa site tidak dapat diakses. Jika data direplikasi ke
banyak site, kerusakan hubungan komunikasi tidak menjadikan sistem
total tidak dapat dioperasikan.
4. Ekonomis : dari biaya komunikasi, baik membagi aplikasi dan memproses
secara lokal di setiap site. Dari biaya komunikasi data, akan lebih murah
untuk memelihara sistem komputer dalam satu site dan menyimpan data
secara lokal.
5. Expandibility : akan lebih mudah mengakomodasikan ukuran DB yang
semakin besar. Ekspansi dapat dilakukan dengan menambah proses dan
kekuatan penyimpanan ke jaringan.
11
6. Shareability : jika sistem informasi tidak terdistribusi, akan sulit untuk
berbagi data dan sumber daya. Sistem DB terdistribusi memungkinkan hal
ini.
Sedangkan kerugian/kelemahan dari useran sistem database terdistribusi adalah
sebagai berikut :
1. Kompleksitas : Masalah DDBS lebih kompleks dibandingkan dengan
manajemen database terpusat.
2. Biaya : sistem terdistribusi membutuhkan tambahan hardware (untuk
mekanisme komunikasi) sehingga biaya hardware meningkat terutama jika
dilakukan replikasi. Jika fasilitas komputer dibuat di banyak site, akan
memerlukan banyak orang yang memelihara fasilitas tersebut
3. Kontrol distribusi : distribusi menyebabkan masalah sinkronisasi dan
koordinasi.
4. Keamanan : akan mudah mengontrol database yang terpusat karena dalam
sistem database terdistribusi, jaringan membutuhkan keamanan tersendiri.
5. Perubahan yang sulit : tidak ada tool atau metodologi untuk membantu
user mengubah database terpusat ke database terdistribusi.
Ada beberapa alternatif dasar untuk menyimpan atau menempatkan data,
yaitu partisi dan replikasi. Dalam skema partisi, database dibagi ke dalam
sejumlah partisi disjoin yang masing-masing ditempatkan di site yang berbeda.
12
Perancangan replikasi dibedakan atas complete replicated dimana sebuah replika
database ditempatkan di masing-masing site, atau partially replicated yaitu
sebuah replika dari database disimpan di lebih dari satu site tetapi tidak di semua
site.
2.3. Distributed Database Management System (DDBMS)
DBMS terditribusi adalah (Connoly, 2002) sistem perangkat lunak yang
mengijinkan pengolahan database terdistribusi dan membuat transparan terhadap
pemakainya. Sebuah DDBMS terdiri atas sebuah logical database yang dibagi
kedalam sejumlah fragments. Tiap fragments disimpan pada satu komputer atau
lebih di bawah kontrol sebuah DBMS yang terpisah, dimana komputer-komputer
tersebut terhubung oleh suatu jaringan komunikasi. Tiap site (tempat) mampu
secara mandiri memproses permintaan user yang membutuhkan akses ke data
lokal dan mampu memproses data yang tersimpan di komputer-komputer lain
dalam jaringan tersebut.
Transparansi pada Sistem Terdistribusi
Merupakan pemisahan dari semantic level tingkat tinggi dari implementasi
level rendah. Atau sistem transparansi menyembunyikan rincian implementasi
dari user. Sistem database terdistribusi menyediakan beberapa tipe transparansi
dalam Distributed DBMS antara lain :
13
a. Transparansi Distribusi (Distribution Transparency)
User tidak perlu tahu bahwa data didistribusi, user merasakan databsenya
sebagai basis data tunggal.
1. Transparansi lokasi (location transparency), merupakan transparansi
terhadap perintah yang bebas digunakan pada lokasi data maupun pada
sistem dimana operasi berjalan, artinya user tidak perlu tahu pada lokasi
mana potongan data tersimpan, akan tetapi user harus tahu bagaimana data
di fragmentasi.
2. Transparansi fragmentasi (fragmentation transparency) artinya user
dapat melakukan semua akses seakan-akan relasi tidak terfragmentasi
(data merupakan satu kesatuan utuh kembali) dengan kata lain user tidak
perlu tahu bahwa data di fragmentasi dan user tidak perlu
menspesifikasikan nama-nama fragment dan lokasi-lokasi datanya.
Fragmentasi data mempunyai pengertian bahwa objek logikal yang
diberikan dapat dibagi-bagi menjadi potongan-potongan data (fragment)
untuk keperluan penyimpanan fisik.
3. Transparansi replikasi (replication tranparency) artinya user tidak perlu
tahu replikasi terhadap fragment-fragment, objek logikal yang diberikan
dapat ditampilkan pada level fisik dengan beberapa salinan (replika) yang
berbeda dari objek tersimpan yang sama, pada beberapa sisi yang berbeda.
Meskipun demikian mungkin sebuah sistem tidak memiliki location
14
tranparency tetapi memiliki replication tranparency. Sehingga dapat
dicatat bahwa transparansi lokasi, fragmentasi dan replikasi secara
bersamaan menyebabkan sistem terdistribusi seakan-akan merupakan
sistem terpusat dalam pandangan user.
4. Transparansi Pemetaan Lokal (Local Mapping Transparency), user
harus menspesifikasikan baik nama-nama fragment maupun lokasi item-
item data.
5. Transparansi Penamaan (Naming Transparency), seperti objek database
terpusat ataupun database harus memiliki nama unik. Dengan memberikan
identifier sebagai bagian dari nama objek.
b. Transparansi Tranksaksi (Transaction Transparency)
Semua transaksi terdistribusi tetap menjaga konsistensi dan integritas database
terdistribusi, selain itu DDBMS juga harus memastikan sinkronisasi
subtransaksi-subtransaksi dengan transaksi lokal tetapi juga subtransaksi-
subtransaksi dengan transaksi global
1. Transparansi Concurrency (Concurrency Transparency)
Semua transaksi yang dilaksanakan bersamaan (baik terdistribusi maupun
tidak terdistribusi) sama seperti jika transaksi tersebut dieksekusi pada satu
waktu dalam urutan serial.
15
2. Transparansi Kegagalan (Failure Transparency)
Menjamin atomicity dari global transactions yang berarti memastikan
bahwa subtransaksi global transaction apakah semua commit atau semua
abort.
c. Transparansi Unjuk Kerja (Performance Transparency)
Sebuah DDBMS harus memiliki unjuk kerja seperti DBMS terpusat,
diharapkan sistem tidak mengalamai degradasi/unjuk kerja yang menurun
karena sistem memiliki artitektur terdistribusi.
d. Transparansi DBMS (DBMS Transparency)
Menyembunyikan knowledge bahwa lokal DDBMS dapat saja berbeda.
2.4. Replikasi Data
Replikasi (Connoly, 2002) adalah proses menghasilkan dan memproduksi
banyak salinan/copy data pada satu atau lebih tempat (site).
Replikasi merupakan mekanisme yang penting dalam mendistribusikan
data karena dapat diatur untuk meyediakan akses data bagi user kapanpun dan
dimanapun dibutuhkan. data replicator mengijinkan pencipta memperbanyak
tabel atau subset tabel dalam hubungan penyebaran yang luas.
16
Fungsi utama dari data replicator adalah untuk memelihara keseragaman
diantara hasil duplikat secara umum, yang satu salinan utama dan berbagai salinan
sekunder dan pembaharuan disebarkan dari salinan utama ke salinan sekunder
dengan cara yang sesuai yaitu tanpa menggunakan perintah dua antar muka.
Penyebaran bisa meningkat, ketika berdasarkan useran variasi (data dikirim dari
salinan utama ke salinan sekunder). Alternatif lain seluruh salinan sekunder secara
periodik diciptakan kembali dari seluruh salinan utama. Data replicator
melakukan ini secara transparan, tanpa mengubah aplikasi yang mengoperasikan
salinan utama.
2.4.1. Update dalam Replikasi
Dalam sistem terdistribusi, replikasi dari suatu database dapat disimpan
pada tempat yang berbeda dalam jaringan. Sebelum terhubung, data replicator
akan membuat salinan database yang akan digunakan. Hal tersebut agar
mengurangi waktu dalam pengaksesan data. Kejadian tersebut dapat memperbaiki
ketersediaan data dalam kasus kegagalan, jika terjadi tubrukan replika, suatu
database masih dapat diakses melalui replika yang lain.
Dalam mengimplementasikan replikasi, transaksi individu menyadari
bahwa ada replikasi pada database. Sistem mengetahui data mana yang direplikasi
dan dimana replikasi itu disimpan. Dengan algoritma replikasi read-one/write-all,
ketika transaksi meminta untuk membaca sebuah data, sistem mengambil sebuah
data dari replika terdekat, ketika transaksi meminta untuk mengubah data, sistem
17
mengubah semua data pada semua replika. Bagian sistem bertanggung jawab
untuk menerapkan algoritma replikasi yang disebut kendali replika (replica
control).
Sistem read-one/write-all mempunyai dua macam sifat update yaitu :
1. Replikasi Synchronous
Pada mekanisme replikasi synchronous menggunakan protokol 2PC (2-phase
commit). Salinan data di slave diupdate dengan segera ketika data sumber
diupdate. Proses replikasi synchronous dijelaskan pada gambar dibawah ini:
Gambar 2.2 Proses Replikasi Synchronous
Pada gambar di atas, query dieksekusi di master dan slave, dan dicommit
dikeduanya sebelum client medapatkan status.
18
2. Replikasi Asynchronous
Dengan mekanisme ini, database target (salinan data) diupdate setelah
database sumber diupdate sehingga terjadi delay beberapa menit atau bahkan
beberapa jam untuk mendapatkan konsistensi data. Besarnya delay yang
diperlukan bergantung pada beberapa faktor, yaitu seberapa sering replikasi
memproses pengambilan update, berapa banyak data yang harus ditransfer ke
sistem replikasi, dan berapa cepat jaringan dapat melewatkan data untuk
dipindahkan.
Gambar 2.3 Proses Replikasi Asinkron
Gambar di atas mengilustrasikan bagaimana sistem replikasi asinkron
memproses query pada server master dan mengembalikan status ke client
sebelum query direplikasi pada slave.
19
2.4.2. Kepemilikan data (data ownership)
Data terdistribusi tidak lepas dari kepemilikan data itu sendiri, yaitu sites
mana yang memiliki hak untuk mengupdate data. Tipe utama dari kepemilikan
adalah master/slave, workflow dan update-anywhere.
1. Master/slave
Pada tipe ini, data direplikasi secara asynchronous pada sebuah site
yang disebut site utama (master-site) dan hanya dapat diperbarui/di-update
oleh site tersebut. Pendistribusian data dilakukan dengan menggunakan suatu
cara yaitu publish-and-subscribe dimana site utama (sebagai publisher)
membuat data tersedia (available) dan Site-site lain (slave) melakukan
subscribe terhadap data yang dimiliki oleh site utama tersebut, yang berarti
bahwa site-site lain tersebut hanya menerima read-only copies pada sistem
lokal mereka. Tiap site dapat menjadi master site bagi sekumpulan data (data
sets) yang tak overlapping tetapi hanya diperbolehkan satu site saja yang dapat
memperbarui master copy dari suatu data sets, sehingga konflik dapat
dihindari.
2. Workflow
Pada dasarnya tipe ini hampir sama seperti master-salve ownership,
metode ini juga menghindari konflik update data yang terjadi pada waktu yang
bersamaan, yaitu dengan cara yang lebih dinamis. Pada tipe Workflow ini,
sistem mengijinkan hak untuk memperbarui replikasi data berpindah dari satu
20
site ke site lain. Meskipun demikian pada satu waktu tertentu, hanya boleh
satu site saja yang melakukan update data.
3. Update-anywhere
Pada kedua tipe sebelumnya, pada satu waktu yang sama hanya sebuah
site saja yang boleh memperbarui data. Seluruh site yang lain hanya memiliki
akses read-only pada replikasinya. Tetapi pada tipe ini proses update bisa
dilakukan di beberapa site, metode ini menciptakan lingkungan yang peer-to-
peer dimana banyak site mempunyai hak yang sama untuk memperbarui
replikasi data. Pada metode ini juga mengijinkan site-site lokal memiliki
fungsi otonomi bahkan ketika site lain tidak dapat diakses.
2.4.3. Keuntungan replikasi:
1. Performa
Kecepatan akses menjadi lebih baik dibanding dengan database terpusat
karena data diletakan dekat dengan user dan paralel DDBMS juga
dimungkinkan. Unjuk kerja juga akan meningkat karena tiap site hanya
menangani sebagian dari seluruh database, maka tidak mungkin CPU dan alat
I/O memroses data yang sama.
21
2. Perbedaan Geografis
Replikasi dapat menjadi sebuah solusi untuk menyediakan data ke site-site
yang terpisah secara geografis.
3. Redudansi dan Backup
Menggunakan replikasi berarti membackup data secara konstan, dan jika
database utama mengalami kegagalan maka masih ada copy dari database
yang siap direstore.
4. Mesin Penyimpan dan Optimasi Index
Index akan sangat bermanfaat untuk mengakses data yang memerlukan
multipel index pada sebuah tabel tunggal. Menyebarkan index melalui dua
database yang berbeda dan mengirimkan query ke mesin penyedia dapat
mengurangi ukuran index dan meningkatkan unjuk kerja.
5. Pertumbuhan secara modular.
Dalam lingkungan database terditribusi, lebih mudah menangani
perluasan/ekspansi. Site baru dapat ditambahkan ke jaringan tanpa
mengganggu operasional dari site-site lain.
22
2.4.4. Kelemahan
Replikasi dapat bermanfaat dan dibutuhkan dalam beberapa situasi, namun
juga tidak dapat menyelesaikan banyak masalah. Sebagai contoh :
1. Menggunakan replikasi sebagai backup untuk mengembalikan data update dan
delete tidak bekerja. Karena sebuah server replikasi mengeksekusi beberapa
query dari master ke slave dengan delay, sehingga slave mencari record
update atau delete pada master ternyata tidak berhasil.
2. Replikasi Asyncronous, tidak bermanfaat jika data yang dibutuhkan slave
adalah real time.
2.5. MySQL 5.0
2.5.1. Privelege
Adalah hak untuk melakukan operasi tertentu terhadap server. Previlege
merupakan cara pengamanan yang mengacu pada kewenangan user dalam
database. Ini berarti pemberian privelege harus disesuaikan dengan pekerjaan
user.
Query untuk membuat privelege.
GRANT priv_tipe ON {*.* | * | db_name.* | table_name} TO 'user_name'@'host_name' IDENTIFIED
by ‘password_repl’;
23
Query untuk menghapus privelege untuk sebuah user account:
REVOKE priv_tipe ON {*.* | * | db_name.* | table_name} FROM 'user_name'@'host_name';
Query untuk melihat priveleges yang dimiliki user:
SHOW GRANTS FOR 'user_name'@'host_name';
Query untuk melihat tabel privelege user secara langsung:
SELECT * FROM mysql.user WHERE User = ''user_name' AND Host = 'host_name' \G
2.5.2. Membuat User
Perintah yang digunakan untuk menambah user menggunakan GRANT
atau CREATE USER. GRANT untuk membuat user sekaligus dengan previlage,
sedangkan CREATE USER untuk membuat user tanpa previlege (username dan
host) user disimpan pada tabel mysql.user.
GRANT priv_tipe ON {*.* | * | db_name.* | table_name} TO username IDENTIFIED BY
'my_password';
Atau :
CREATE USER 'user_name'@'host_name' IDENTIFIED BY 'your_password';
Menghapus user account:
DROP USER command;
DROP USER 'some_user'@'%';
24
DELETE FROM mysql.user WHERE user='some_user' AND Host='%';
Untuk memastikan perubahan yang dilakukan menggunakan perintah Flush:
FLUSH PRIVILEGES;
Membuat database
CREATE DATABASE <database_name>;
2.5.3. Replikasi pada MySQL
Mekanisme replikasi yang didukung oleh MySQL adalah satu arah, yaitu
replikasi asyncronous (asingkron). Sedangkan replikasi sinkron pada MySQL
dikenal dengan clustering.
Sebuah mesin bertindak sebagai master server dan satu atau lebih mesin
bertindak sebagai slave server. Master menyimpan setiap perubahan yang terjadi
ke dalam databes dengan file binary log. File binary log merekam semua
perubahan (UPDATE, DELETE, INSERT...) yang dilakukan oleh database master
sejak pertama kali replikasi dikonfigurasi dan dimulai. Master juga membuat dan
memaintain sebuah indek file untuk menjaga track dari rotasi binary log yang
dibuat. Slave server membaca binary log dan melakukan perubahan terhadap
data.
Replikasi pada MySQL menggunakan tiga thread. Thread satu di dalam
master dan dua thread di slave. Ketika START SLAVE dijalankan pada master
25
slave, slave membuat sebuah thread yang disebut I/O thread untuk
menghubungkan dengan master dan meminta master untuk mengirimkan record
yang diupdate dalam binary log. Sedangkan master membuat sebuah thread
untuk mengirimkan binary log ke slave. Thread ini dapat diidentifikasikan sebagai
Binlog Dump yang dapat dilihat dari SHOW PROCESSTLIST pada master.
Thread I/O pada slave membaca update yang master Binlog Dump kirimkan dan
mengkopi ke lokal file yang diketahui sebagai relay logs di dalam direktori
slave/data. Thread ke tiga adalah SQl thread yang dibuat slave untuk membaca
relay logs dan melakukan update.
2.5.4. Replikasi Master to Master
Ketika sebuah multi-master replikasi dibangun, untuk mencegah tubrukan
primary key digunakan AUTO_INCREMENT untuk insert rows. Variabel yang
digunakan oleh kolom ini adalah auto_increment_increment sebagai nilai dari
auto_increment dan auto_increment_offset sebagai start point untuk kolom
auto_increment.
Misalkan pada database A diset Auto_increment_increment = 2 dan Auto_increment_offset
= 1, sedangkan pada database B Auto_increment_increment = 2 dan Auto_increment_offset =
2. jika dilakukan Insert tabel x yang berada pada database A:
Insert into x values (‘null’, ‘aaa’), (‘null’, ‘bbb’), (‘null’, ‘ccc’);
Select * from x;
26
Hasil dari query diatas adalah :
ID Nama
1 aaa
3 bbb
5 ccc
Dan tambah tabel x pada database B sebagai berikut :
Insert into x values (‘null’, ‘xxx’), (‘null’, ‘yyy’), (‘null’, ‘zzz’);
Select * from x;
Hasil dari query diatas adalah :
ID Nama
2 xxx
4 yyy
6 zzz
27
2.6. Web
World Wide Web (WWW) merupakan Web yang saling terhubung pada
jaringan. Web menggunakan bahasa HTML (HyperText Markup Language) dan
menggunakan protokol HTTP (HyperText Transfer Protokol). Dan saat ini sudah
banyak berkembang skrip untuk mendukung bahasa HTML, seperti PHP, JSP,
ASP dan juga applet (Java).
Arsitektur aplikasi web ditunjukkan pada gambar 1.1, sebuah web server
menerima permintaan dari client terhadap halaman web, kemudian menyampaikan
permintaan tersebut ke middleware yang dapat menerjemahkan kode tertentu,
menjalankan kode tersebut dan berinteraksi dengan basidata. Hasil dari
middleware dikembalikan ke browser client. Contoh web server : Apache, IIS,
Xitami. Contoh middleware : PHP, JSP, ASP, Perl. Sedangkan yang termasuk
web browser adalah Mozila, IE, Netscape, Opera.
Gambar 2.4 Arsitektur Aplikasi Web
28
2.7. JSP
JSP adalah suatu teknologi web berbasis bahasa pemrograman java dan
berjalan di platform java, serta merupakan bagian teknologi J2EE (Java 2
Enterprise Edition). JSP sangat sesuai dan tangguh untuk menangani presentasi di
web. Sedangkan J2EE merupakan platform java untuk pengembangan sistem
aplikasi enterprise dengan dukungan API (Aplication Programing Interface) yang
lengkap dan portabilitas serta memberikan sarana untuk membuat suatu aplikasi
yang memisahkan antara bussines logic (sistem), presentasi dan data. JSP
memerlukan JVM (Java Virtual Machine) supaya dapat berjalan, yang berarti
mengisyaratkan harus menginstal java di server dimana jsp dapat dijalankan.
Selain JVM, JSP juga memerlukan server yang disebut Web Container.
Jika dilihat dari asal-usulnya, JSP merupakan pengembangan dari Servlet.
Servlet adalah teknologi java yang memungkinkan pembuatan halaman web yang
bersifat dinamis dan diproses pada sisi server. Pada saat diproses di sisi server,
file JSP sebenarnya dikompilasi menjadi servlet yang merupakan program java
yang berjalan di server. Perlu diketahui bahwa servlet merupakan teknologi java
untuk web sebelum JSP dan merupakan basis pengembangan JSP.
2.7.1 Arsitektur JSP
User yang ingin mengakses halaman web mula-mula mengirimkan
permintaan halaman web melalui protokol HTTP dalam bentuk JSP (file
berekstensi .jsp) permintaan ini akan disampaikan ke web server. Kemudian web
server mengambil dokumen JSP dan mengirimkan ke JSP Servlet Engine. Bagian
29
inilah yang melakukan pemrosesan kode-kode JSP (termasuk didalamnya
melakukan kompilasi) dan membentuk kode HTML. Selanjutnya kode HTML
disampaikan oleh web server ke client yang memintanya. Kode HTML ini
selanjutnya diproses oleh browser sehingga user bisa memperoleh informasi dari
halaman web yang dikehendaki. Perlu diketahui bahwa pengompilasian kode JSP
hanya dilakukan sekali saja, yaitu pada pemanggilan dokumen pertama kali. Oleh
karena itu user yang memanggil dokumen yang baru saja dibuat atau diperbarui
akan merasakan bahwa tanggapan terhadap permintaan halaman web cukup lama.
Untuk menghindari keadaan seperti ini, pengembang dapat memanggil terlebih
dahulu dokumen tersebut setelah dilakukan perubahan. Detail pemrosesan JSP
servlet engine adalah sebagai berikut :
1. Melakukan pemilahan (parsing) kode JSP
2. Membangkitkan kode sumber servlet
3. Mengompilasi kode sumber servlet menjadi sebuah kelas.
4. Membuat instant servlet.
Memberikan keluaran servlet ke web server.
2.7.2 Elemen-elemen JSP
JSP merupakan bahasa pemrograman yang bersifat embedded pada kode
HTML maupun WML, namun juga dapat berdiri sendiri dimana sintaks JSP diatur
sesuai dengan spesifikasi JSP yang dapat di dowload dari www.jcp.org . JSP
memiliki bermacam-macam elemen yang dapat digunakan dalam suatu halaman
JSP. Dalam JSP terdapat tiga komponen utama yaitu :
30
a. Direktif
Direktif adalah media yang digunakan JSP untuk mengirimkan pesan ke
JSP container. Direktif berguna untuk melakukan setting nilai global
seperti deklarasi class atau method. Setting yang dilakukan oleh direktif
berlaku pada seluruh halaman (hanya halaman itu saja). Sebagai
gambaran, pada source code java sering kita lihat baris berikut :
import java.io.*;
import java.sql.*;
Pada JSP programer masih bisa melakukan hal tersebut tetapi tentu saja
dengan cara yang berbeda. Cara tersebut adalah dengan menggunakan
direktif.
Secara umum sintaks direktif adalah :
<%@ nama_direktif atribut1=”nilai1” atribut2=”nilai 2”
…%>
b. Elemen skripting
Elemen skripting terdiri atas tiga macam yaitu :
• Skriplet
Tag <% ... %> digunakan untuk deklarasi, ekspresi d an
kode lain. Contoh :
<%
For(int i=0;i<10;i++)
{
Out.println(“ini adalah skrip untuk loop”);
}
%>
31
• Deklarasi
Tag <%! … %> digunakan untuk mendeklarasikan variabel atau
method, contoh :
<%! int x=10; double y=2.0; %>
• Ekspresi
Tag <%= … %> digunakan untuk ekspresi dalam java dan
menampilkannya sebagai string pada browser, contoh :
<%= new.java.util.date() %>
Kode di atas akan menampilkan tanggal dan waktu saat ini pada
layar browser.
c. Action
Adalah tag yang berfungsi untuk menjalankan suatu operasi yang spesifik,
seperti :
• Mem-forward dari suatu halaman JSP ke halaman JSP yang lain.
• Menyisipkan suatu halaman/operasi pada halaman JSP dari
halaman JSP yang lain.
• Penanganan Java Applet dan Java bean pada suatu halaman JSP
Standar action dari penulisannya mirip dengan penulisan pada XML.
Sintaks dari standar action ini adalah :
<jsp:nama_aksi atribut1 atribut2 …/>
Atau
<jsp:nama_aksi atribut1 atribut2 …/>
/*
32
Pada bagian ini bisa diisi dengan JSP action yang l ain
*/
</jsp:nama_aksi>
2.8. JDBC (Java DataBase Conectivity)
Adalah standar industri yang didasarkan pada X/Open SQL Command
Level Interface (CLI). JDBC memberikan antarmuka pemrograman aplikasi
database untuk berbagai jenis database. Jadi konsep JDBC hampir dengan ODBC
dimana memungkinkan untuk beralih database tanpa harus mengubah kode
program, asalkan database yang baru mendukung JDBC.
Secara umum terdapat dua layer utama yang harus diapahami jika hendak
menggunakan JDBC yaitu layer driver dan layer aplikasi. Layer driver bertugas
menjalankan seluruh aspek komunikasi dengan database tertentu. Setiap vendor
database (termasuk Oracle) berkewajiban menyediakan driver JDBC yang
memungkinkan programer untuk mengakses database tersebut. Layer aplikasi
adalah bagian dari JDBC yang mesti digunakan oleh programer. Layer aplikasi
diterapkan sebagai class java.sql.* dalam JDK (Java Developer’s Kit). Dengan
memanggil class java.sql.* memungkinkan program-program java untuk
berinteraksi dengan database menggunakan SQL.
BAB III
ANALISIS DAN DESAIN SISTEM
3.1 Analisis Sistem
3.1.1 Gambaran Umum Sistem
Transaksi yang dilakukan di koperasi cabang dan pusat masih terpisah satu
sama lain. Anggota koperasi hanya dapat melakukan transaksi dimana angota
tersebut mendaftar. Sistem pendistribusian data dengan metode replikasi master-
master dapat membantu memberi kemudahan dalam melakukan transaksi, yaitu
memungkinkan anggota yang terdaftar disuatu koperasi dapat melakukan
transaksi di koperasi lain. Perubahan data yang digunakan adalah Asynchronous
.
3.1.2. Analisis Masalah
Beberapa masalah yang memicu pembuatan sistem pendistribusian
data dengan replikasi adalah:
a. Transaksi tidak dapat dilakukan di mana saja atau hanya dilakukan di
mana anggota tersebut terdaftar.
b. Koperasi pusat dan cabang masih menggunakan data yang terpisah.
33
34
3.1.3. Orang yang terlibat dalam sistem.
Sistem yang akan dibuat melibatkan :
a. Karyawan Koperasi
Pihak yang memasukkan data anggota, data-data transaksi seperti
transaksi penyimpanan, penarikan, peminjaman dan angsuran.
b. Manager
Pihak yang memasukkan kebijakan koperasi dan akun akun yang
digunakan.
3.1.4. Gambaran Umum Sistem Baru
Agar data yang ada di pusat dapat diakses di cabang atau sebaliknya,
sistem yang akan dikembangkan dengan menerapkan teknologi basisdata
terdistribusi khususnya metode replikasi master-master. Sebagai user interface
bagi para pengguna sistem, akan dibuat dengan JSP.
Pendistribusian tabel yang dibutuhkan untuk koperasi menggunakan
replikasi master to master. Pemilihan jenis replikasi ini antara lain:
a. Pada Replikasi bagian master database dapat ditulis dan dibaca.
b. Masing-masing cabang dapat mengupdate data.
Tabel yang akan direplikasi antara lain tabel anggota, tabungan, tabungan
detail, peminjaman, tagihan dan angsuran, angsuran detail, akun utama.
35
Sedangkan tabel pemakai dan tabel jurnal tidak akan direplikasi karena
dalam pembuatan laporan setiap cabang tidak memerlukan data dari cabang lain.
3.1.5. Requirement Analysis
Gambar 3.1 Use Case Diagram
36
3.1.6. Logical Design
3.1.6.1. Proses Modeling, yang meliputi:
a) Input dan output sistem
Table 3.1 Input Output Sistem
Eksternal
Sistem Input Output
Kode_anggota, nama, alamat,
no_telpon, jenis_kelamin,
pekerjaan, status_keanggotaa,
simpnan pokok, tanggal daftar
profil anggota
Kode_anggota, besar simpanan
wajib, besar simpanan sukarela Data simpanan
Kode_anggota, besar pinjaman,
jumlah angsuran, pembayaran
biaya administrasi
Data pinjaman, data
tagihan
Anggota KSP
Kode_anggota, besar angsuran Data tagihan, data
angsuran
Manager Kode akun, nama akun, saldo Data Akun, preferensi
37
Besar tabungan pokok,
Tabungan wajib. biaya provisi,
administrasi, bunga pinjaman,
meterai, kartu anggota,
biaya_notaris
Kebijakan
Kode_anggota, tangggal,
kode_akun, bulan Laporan
b) Context Diagram
Gambar 3.2 Context Diagram
38
c) Diagram Berjenjang
Gambar 3.3 Diagram Berjenjang
39
d) Overview Diagram
DFD Level 0
Karyawan
KSP
5
Angsuran
4
Pinjaman
3
Penarikan
2
Simpanan
1
Keanggotaan
Kode anggota, besar angsuran
Kode anggota, Besar pinjaman
Kode anggota,
saldo tab sukarela, besar penarikan
Kode anggota, besar tabungan
Data tagian
Data tagian
Kode pinjaman,
besar angsuran
Data Pinjaman
Data Penarikan
Data Angsuran
Data Simpanan
Data Anggota
Formulir Penarikan
Formulir Pinjaman
Formulir Simpanan
Formulir Pendaftaran
Formulir Angsuran
Anggota
Tabungan
Tagihan
Data Simpanan
Data PenarikanData Angsuran
Data Pinjaman
Data Anggota
Jurnal Kode anggota, tanggal daftar, kode akun,
keterangan, besar simpanan pokok
Kode tabungan, tanggal simpan,
keterangan,simpanan wajib,
kode akun, simpanan sukarela
Kode penarikan,
tanggal ambil, kode akun,
keterangan,besar penarikan
Kode pinjaman, tanggal pinjam,
kode akun, keterangan, besar pinjaman
Kode angsuran, tanggal angsur,
kode akun, keterangan, besar angsuran,
denda
Manager
Angsuran
Pinjaman
Kode Anggota, Tanggal, Preferensi
kebijakanData kebijakan
Kode akun
Kebijakan
Penarikan
Denda
Bunga,
Biaya2
pinjaman
Tab Wajib
Tab Pokok
Kode akun
8
Laporan
9
Preferensi
7
Kebijakan
6
Akun Utama
Data Akun Data Akun Akun Utama
Kode akun
Gambar 3.4 DFD Level 0
40
DFD Level 1 Proses 1
Gambar 3.5 DFD Level 1 Proses 1
DFD Level 1 Proses 2
Gambar 3.6 DFD Level 1 Proses 2
41
DFD Level 1 Proses 3
Karyawan KSP
Data anggota
Formulir Penarikan
Anggota
Penarikan
3.1P
Tambah
Penarikan
3.2P
Lihat
Penarikan
Data Penarikan
Kode anggota,
Data penarikan Data anggota
Data Penarikan
Jurnal
Kode penarikan,
tanggal ambil, kode akun,
keterangan,besar penarikan
Kode akun
Preferensi
Gambar 3.7 DFD Level 1 Proses 3
DFD Level 1 Proses 4
Gambar 3.8 DFD Level 1 Proses 4
42
DFD Level 1 Proses 5
Gambar 3.9 DFD Level 1 Proses 5
DFD Level 1 Proses 6
Gambar 3.10 DFD Level 1 Proses 6
43
DFD Level 1 Proses 7
Gambar 3.11 DFD Level 1 Proses 7
44
3.1.6.2. E-R Diagram
Gambar 3.12 E-R Diagram
45
3.1.7. Desain Sistem
1) Relasi antar tabel
Gambar 3.13 Relasi antar tabel
46
2) Desain Database
a. Tabel Anggota, merupakan tabel yang akan digunakan untuk
menyimpan data anggota dan nasabah.
Table 3.2 Tabel Anggota
Nama atribut Tipe data ukuran Null?
PK Kode_anggota Varchar 5 Tidak
Nama_anggota Varchar 50 Tidak
Jenis_kelamin Varchar 15 Tidak
Kode_cabang Int - Tidak
Tanggal_daftar date - Tidak
No_telpon Varchar 13 Tidak
Alamat Varchar 100 Tidak
Status_keanggotaan Varchar 15 Tidak
Pekerjaan Varchar 20 Tidak
simpanan_pokok Double - Ya
simpanan_wajib Double - Ya
47
Simpanan_sukarela Double - Ya
pinjaman Double - Ya
b. Tabel Koperasi, merupakan tabel untuk menyimpan data-data
cabang.
Table 3.3 Tabel Koperasi
Nama atribut Tipe data ukuran Null?
PK Kode_cabang Int - Tidak
Nama_koperasi Varchar 5 Tidak
Alamat varchar 100 Ya
No_telpon Varchar 15 Ya
Alias Varchar 5 Tidak
c. Tabel AkunUtama, digunakan untuk menyimpan data akun.
Table 3.4 Tabel AkunUtama
Nama atribut Tipe data ukuran Null?
PK Kode_akun Varchar 10 Tidak
Nama_akun Varchar 50 Tidak
48
Saldo Double - Ya
d. Tabel Preferensi, untuk menyimpan data akun yang sering
digunakan pada saat transaksi.
Table 3.5 Tabel Preferensi
Nama atribut Tipe data ukuran Null?
kas Varchar 10 Tidak
piutang Varchar 10 Tidak
sukarela Varchar 10 Tidak
pokok Varchar 10 Tidak
wajib Varchar 10 Tidak
administrasi Varchar 10 Tidak
bunga Varchar 10 Tidak
denda Varchar 10 Tidak
biaya Varchar 10 Tidak
49
e. Tabel Kebijakan_koperasi, untuk menyimpan data kebijakan
koperasi.
Table 3.6 Tabel Kebijakan_koperasi
Nama atribut Tipe data ukuran Null?
tab_pokok Double - Tidak
tab_wajib Double - Tidak
provisi_pinjaman Double - Tidak
biaya_administrasi Double - Tidak
bunga_pinjaman Double - Tidak
biaya_meterai Double - Tidak
kartu_anggota Double - Tidak
biaya_notaris Double - Tidak
denda Double - Tidak
Bunga_tabunagan Double - Tidak
50
f. Tabel Tabungan, untuk merekam transaksi tabungan anggota.
Table 3.7 Tabel Tabungan
Nama atribut Tipe data ukuran Null?
PK kode_tabungan Varchar 15 Tidak
kode_anggota Varchar 15 Tidak
tgl_simpan Date - Tidak
Besar_tabungan Double - Tidak
lokasi Int - Tidak
g. Tabel Tabungan_detil, merupakan data lengkap dari tabungan
yang mencakup tabungan sukarela dan tabungan wajib.
Table 3.8 Tabel Tabungan_detil
Nama atribut Tipe data ukuran Null?
kode_tabungan Varchar 15 Tidak
tab_wajib Double - Ya
tab_sukarela Double - Ya
bulan_tabwajib Double - Ya
51
h. Tabel Penarikan, merupakan tabel untuk menyimpan data
penarikan tabungan.
Table 3.9 Tabel Penarikan
Nama atribut Tipe data ukuran Null?
PK kode_penarikan Varchar 15 Tidak
FK kode_anggota Varchar 15 Tidak
tgl_penarikan Date - Tidak
Besar_penarikan Double - Tidak
lokasi Int - Tidak
i. Tabel Pinjaman. Tabel pinjaman ini berisi data peminjaman
anggota dan pembayaran administrasi peminjaman.
Table 3.10 Tabel Pinjaman
Nama atribut Tipe data ukuran Null?
PK kode_pinjaman Varchar 15 Tidak
FK Kode_anggota Varchar 15 Tidak
52
tgl_pinjaman Date 5 Tidak
besar_pinjaman Double - Tidak
bunga Double - Tidak
jumlah_angsuran Int 2 Tidak
provisi Double - Tidak
biaya_adm Double - Tidak
biaya_kartu_anggota Double - Tidak
biaya_materai Double - Tidak
biaya_notaris Double - Tidak
pembayaran_adm Double - Tidak
lokasi Int - Tidak
j. Tabel Tagihan. Tabel ini dibutuhkan untuk transaksi angsuran
pinjaman. Dimana tabel ini merupakan data detail dari
peminjaman.
Table 3.11 Tabel Tagihan
Nama atribut Tipe data ukuran Null?
53
PK kode_tagihan Varchar 15 Tidak
FK kode_pinjaman Varchar 15 Tidak
tgl_tempo Date - Tidak
pokok Double - Tidak
bayar Double - Tidak
kurang Double - Tidak
bunga Double - Tidak
k. Tabel Angusran. Tabel ini berfungsi sebagai penyimpan data untuk
transaksi angsuran pinjaman.
Table 3.12 Tabel Angusran
Nama atribut Tipe data ukuran Null?
PK kode_angsuran Varchar 15 Tidak
FK kode_angggota Varchar 15 Tidak
bayar_angsuran Double - Tidak
tgl_angsuran Date - Tidak
lokasi Int - Tidak
54
l. Tabel Angsuran_detail. Tabel ini merupakan data detail dari tabel
angsuran.
Table 3.13 Tabel Angusran_ detail
Nama atribut Tipe data ukuran Null?
FK kode_ angsuran Varchar 15 Tidak
FK kode_tagihan Varchar 15 Tidak
Denda Double - Ya
angsuran Double - Tidak
m. Tabel Jurnal. Tabel ini digunakan untuk menyimpan semua
transaksi yang terjadi. Mulai dari pendaftaran anggota, transaksi
penyimpanan (tabungan), penarikan, peminjaman dan angsuran
pinjaman.
Table 3.14 Tabel Jurnal
Nama atribut Tipe data ukuran Null?
kode_transaksi Varchar 15 Tidak
tgl_transaksi Date - Tidak
kode_akun Varchar 10 Tidak
55
keterangan Varchar 50 Tidak
debet Double - Tidak
kredit Double - Tidak
3.2. Desain Teknologi Replikasi
Gambar 3.14 menggambarkan arsitektur jaringan dan replikasi data.
Tabel yang akan direplikasi meliputi tebel anggota, tabungan, tabungan_detail,
penarikan, pinjaman, tagihan, angsuran, angsuran_detail, kebijakan dan koperasi.
Tabel-tabel tersebut direplikasi karena setiap cabang akan memakai data tersebut
untuk ditambah, diupdate atau hanya dibaca saja. Sedangkan tabel user dan jurnal
tidak direplikasi karena data tersebut hanya akan dipakai oleh koperasi cabang itu
sendiri.
56
Gambar 3.14 Arsitektur jaringan dan replikasi data
Tahap-tahap perancangan replikasi pada sistem Koperasi Simpan Pinjam
adalah :
1. Membuat database beserta tabel yang dibutuhkan.
2. Membuat konfigurasi untuk masing-masing server dengan mengedit
file my.ini. Konfigurasi untuk master 1 adalah sebagai berikut:
[mysqld]
log-bin=PL-12-bin
binlog-do-db=ksp
log_bin_trust_function_creators=1
auto_increment-increment=2
auto_increment_offset=2
57
server-id=2
relay-log-index=PL-12-relay-bin
replicate-do-table=ksp.anggota
replicate-do-table=ksp.cabang
replicate-do-table=ksp.akun_utama
replicate-do-table=ksp.angsuran
replicate-do-table=ksp.kebijakan
replicate-do-table=ksp.penarikan
replicate-do-table=ksp.pinjaman
replicate-do-table=ksp.tabungan
replicate-do-table=ksp.tagihan
Konfigurasi master2:
[mysqld]
log-bin=PL-12-bin
binlog-do-db=ksp
log_bin_trust_function_creators=1
auto_increment-increment=2
auto_increment_offset=2
server-id=2
relay-log-index=PL-12-relay-bin
replicate-do-table=ksp.anggota
replicate-do-table=ksp.cabang
replicate-do-table=ksp.akun_utama
replicate-do-table=ksp.angsuran
replicate-do-table=ksp.kebijakan
58
replicate-do-table=ksp.penarikan
replicate-do-table=ksp.pinjaman
replicate-do-table=ksp.tabungan
replicate-do-table=ksp.tagihan
3. Membuat account replikasi pada masing-masing server. Cara mebuat
account replikasi pada master 1 :
GRANT SELECT, RELOAD, SUPER, REPLICATION SLAVE ON *.* TO
‘KSP’@’172.21.205.28’ IDENTIFIED by ’KSP’
Cara membuat account relpikasi pada master 2:
GRANT SELECT, RELOAD, SUPER, REPLICATION SLAVE ON *.* TO
‘KSP’@’172.21.205.31’ IDENTIFIED by ’KSP’
Mengecek binary-log sudah terbentuk. Untuk melakukan pengecekan
ini gunakan perintah SHOW MASTER STATUS.
4. Mengkomunikasikan master dengan slave, hal ini ditujukan agar
master dapat melakukan perubahan jika master lain melakukan
update data.
n. dari master 1 ke master 2
CHANEG MASTER TO
master_host=’172.21.205.31’,
Master_port=3300,
59
Master_user=’ksp’,
Master_password=’ksp’,
Master_log_file=’PL-12-bin.000001’,
Master_log_pos=98;
o. dari master 2 ke master 1
CHANEG MASTER TO
master_host=’172.21.205.31’,
Master_port=3300,
Master_user=’ksp’,
Master_password=’ksp’,
Master_log_file=’PL-12-bin.000001’,
Master_log_pos=98;
5. Selanjurnya jalankan slave dengan perintah START SLAVE dan SHOW
SLAVE STATUS untuk mengecek master juga berfungsi sebagai slave.
Status pada Slave_I/O_Running, Slave_SQL_Running harus YES.
3.3. Desain User Interface
Interface sistem yang akan dibuat, kurang lebihnya sebagai berikut :
60
1. Halaman Login
Gambar 3.15 Form Login
2. Menu Anggota
Gambar 3.16 Form Anggota
61
3. Tabungan
Gambar 3.17 Form Tabungan
4. Penarikan
Gambar 3.18 Form Penarikan
62
5. Pinjaman
Gambar 3.19 Form Pinjaman
6. Angsuran
Gambar 3.20 Form Angsuran
63
7. Akun Utama
Gambar 3.21 Form Akun Utama
8. Preferensi
Gambar 3.22 Form Preferensi
64
9. Organisasi
Gambar 3.23 Form Organisasi
10. Laporan
Laporan akan dicetak dengan format excel. Berikut ini merupakan
perancangan tabel untuk laporan-laporan yang akan dicetak:
10.1. Laporan Kredit Limit
Merupakan laporan untuk menunjukkan tigihan pokok dan bunga
pinjaman, angsuran pokok dan bunga pinjaman beserta sisa pokok dan bunga
pinjaman. Input untuk laporan ini berupa bulan. Sehingga dari laporan ini dapat
65
diketahui pada bulan yang diinginkan anggota yang sudah mengangsur atau
belum.
Table 3.15 Desain Tabel Laporan Kredit Limit
Tagihan Pinjaman Angsuran Sisa No Tgl
Kode Anggota Nama Pokok Bunga Pokok Bunga Pokok Bunga
10.2. Laporan Tabungan Wajib
Merupakan laporan penerimaan tabungan wajib dengan periode tanggal.
Table 3.16 Desain Tabel Laporan Tabungan Wajib
No Kode Tabungan Tgl Simpan Kode Anggota Nama Anggota Tab Wajib
10.3. Laporan Tabungan Sukarela
Merupakan laporan penerimaan tabungan sukarela dengan periode tanggal.
Table 3.17 Desain Tabel Laporan Tabungan Sukarela
No Kode Tabungan Tgl Simpan Kode Anggota Nama Tab Sukarela
10.4. Laporan Penarikan Tabungan
Merupakan laporan penarikan tabungan dengan periode tanggal.
Table 3.18 Desain Tabel Laporan Penarikan Tabungan
No Kode Penarikan Tgl Kode Anggota Nama Jumlah
66
10.5. Laporan Peminjaman
Merupakan laporan peminjaman anggota dengan periode tanggal.
Table 3.19 Desain Tabel Laporan Peminjaman
No Kode pinjaman Tgl Kode Anggota Nama Pinjaman Jml Angsuran
10.6. Laporan Angsuran Pinjaman
Merupakan laporan anguran pinjaman dengan periode tanggal.
Table 3.20 Desain Tabel Laporan Angsuran
No Kode Angsuran Tgl Kode Anggota Nama Angsuran Bulan
BAB IV
IMPLEMENTASI
Pada bab ini membahas tentang implementasi sistem berdasarkan pada analisa
dan perancangan yang telah dibuat pada bab sebelumnya. Perangkat lunak yang
digunakan untuk sistem koperasi ini antara lain :
1. Sistem Operasi Windows XP
2. Database MySQL 5.0
3. Apache Tomcat 5.0
4. J2SDK 1.6
Spesifikasi hardware yang digunakan:
1. Prosesor : Intel Core 2 Duo
2. Memori : Kingston 1 GB
3. Hardisk : Seagate 80 G
4.1. Arsitektur Replikasi
MySQL server pada cabang 1 akan menjadi Master 1 – Slave 2 dan MySql
server pada cabang 2 akan menjadi Master 2 – Slave 1. Master 2 akan menjadi Slave
1 ketika Master 1 melakukan perubahan dan sebaliknya Master 1 akan menjadi Slave
2 bagi Master 2. Untuk memahami arsitektur tersebut lihat gambar 4.1. dari gambar
67
68
tersebut juga dapat dilihat konfigurasi IP dan tabel-tabel yang akan direplikasi
maupun tabel yang tidak direplikasi.
Cabang 1Cabang 2
MySQL Server
(Master 1 – Slave 2)
Server-id=1
inc=2
Offs=1
MySQL Server
(Master 2 - Slave 1)
Server-id=2
inc=2
Offs=2
Replikasi Replikasi
Anggota
Tabungan
Penarikan
Pinjaman
Tabungan_detail
Angsuran_detail
AkunUtama
KoperasiKebijakan
TagihanAngsuran
Anggota
Tabungan
Penarikan
Pinjaman
Tabungan_detail
Angsuran_detail
AkunUtama
KoperasiKebijakan
TagihanAngsuran
Tabel
Tabel
172.21.205.28 172.21.205.31
Tabel
User
Jurnal
Tabel
Preferensi
Koperasi
User
Jurnal
Preferensi
Koperasi
Gambar 4.1 Arsitektur Replikasi
4.2. Implementasi Replikasi
Langkah-langkah implementasi replikasi database adalah sebagai berikut:
1. Membuat database beserta table-tabel yang dibutuhkan.
2. Membuat konfigurasi My.ini di setiap cabang.
3. Membuat user replikasi
4. Menghubungkan Master dengan Slave agar dapat berkomunikasi
5. Menjalankan Slave.
69
4.2.1. Membuat database koperasi
Membuat database di setiap cabang dengan struktur tabel yang sama. Query
untuk membuat database :
CREATE DATABASE Koperasi;
Berikut table yang dibutuhkan dan query untuk membuat table:
1. Tabel anggota
CREATE TABLE `anggota` (
`kode_anggota` varchar(20) NOT NULL,
`nama` varchar(50) default NULL,
`no_telp` varchar(12) default NULL,
`jenis_kelamin` varchar(9) default NULL,
`pekerjaan` varchar(20) default NULL,
`alamat` varchar(100) default NULL,
`simpanan_pokok` double default '0',
`status_keanggotaan` varchar(10) default 'Nasab ah',
`Saldo` double default '0',
`tgl_daftar` date default '2007-01-01',
`pinjaman` double default '0',
`modal` double default '0',
`bunga_tab` double default '0',
PRIMARY KEY (`kode_anggota`)
)
2. Tabel tabungan
CREATE TABLE `tabungan` (
70
`kode_tabungan` varchar(16) default NULL,
`kode_anggota` varchar(18) default NULL,
`tgl_simpan` date default '2007-01-01',
`total_tabungan` double default '0',
`lokasi` int(3) default NULL
)
3. Tabel tabungan_detail
CREATE TABLE `tabungan_detail` (
`kode_tabungan` varchar(16) default NULL,
`tab_wajib` double default '0',
`tab_sukarela` double default '0',
`bulan_tabwajib` varchar(20) default 'Januar y'
)
4. Tabel penarikan
CREATE TABLE `penarikan` (
`kode_penarikan` varchar(20) NOT NULL,
`kode_anggota` varchar(20) default NULL,
`tgl_penarikan` date default '2008-01- 01',
`Besar_p enarikan` double default '0',
`lokasi` int(11) default NULL
PRIMARY KEY (`kode_penarikan`) )
5. Tabel pinjaman
CREATE TABLE `pinjaman` (
`kode_pinjaman` varchar(20) NOT NULL,
`kode_anggota` varchar(20) NOT NULL,
71
`tgl_pinjaman` date default '2007-01-01',
`besar_pinjaman` double default '0',
`bunga` double default '0',
`jumlah_angsuran` double default '0',
`provisi` double NOT NULL default '0',
`biaya_adm` double default '0',
`biaya_kartu_anggota` double default '0',
`biaya_materai` double default '0',
`biaya_notaris` double default '0',
`pelunasan` char(1) default 'N',
`pembayaran_adm` double default '0',
`lokasi` int(11) default NULL,
PRIMARY KEY (`kode_pinjaman`)
)
6. Tabel tagihan
CREATE TABLE `tagihan` (
`kode_tagihan` varchar(15) default NULL,
`kode_pinjaman` varchar(15) default NULL,
`bulan` varchar(20) default NULL,
`pokok` double default '0',
`bunga` double default '0',
`tgl_tempo` date default '2008-01-01',
`bayar` double default '0',
`angsurperbulan` double default '0',
`tahun` varchar(4) default NULL
)
7. Tabel angsuran
CREATE TABLE `angsuran` (
`kode_angsuran` varchar(20) NOT NULL,
72
`tgl_angsuran` date default '2007-01-01',
`bayar_angsuran` double default '0',
`lokasi` int(11) default NULL,
`kode_anggota` varchar(20) default NULL,
PRIMARY KEY (`kode_angsuran`)
)
8. Tabel Angsuran_detail
CREATE TABLE `angsuran_detail`
`kode_angsuran` varchar(20) NOT NULL defaul t '',
`kode_tagihan` varchar(20) NOT NULL default '',
`denda` double default '0',
`bayar_angsuran` double default
)
9. Tabel jurnal
CREATE TABLE `jurnal` (
`kode_transaksi` varchar(20) default NULL,
`tgl_transaksi` date default '2007-01-01',
`keterangan` varchar(100) default NULL,
`debet` double default '0',
`kredit` double default '0',
`kode_anggota` varchar(20) default NULL,
`id` int(20) NOT NULL auto_increment,
PRIMARY KEY (`id`)
)
10. Tabel akun_utama
CREATE TABLE `akun_utama` (
`kode_akun` varchar(12) NOT NULL,
`nama_akun` varchar(50) default NULL,
73
`saldo` double default '0',
PRIMARY KEY (`kode_akun`)
)
11. Tabel koperasi
CREATE TABLE ` koperasi ` (
`kode` int(11) NOT NULL,
`kodeOrg` varchar(5) default NULL,
`nama` varchar(50) default NULL,
`alamat` varchar(100) default NULL,
`noTelp` varchar(20) default NULL,
PRIMARY KEY (`kode`)
)
12. Tabel kebijakan
CREATE TABLE `kebijakan` (
`tab_pokok` double default '0',
`tab_wajib` double default '0',
`provisi_pinjaman` double default '0',
`biaya_administrasi` double default '0',
`bunga_pinjaman` double default '0',
`biaya_meterai` double default '0',
`kartu_anggota` double default '0',
`biaya_notaris` double default '0',
`denda` double default '0',
`bunga_diberikan` double default '0'
)
4.2.2. Mengkonfigurasi My.ini
74
Setelah database siap disetiap cabang, langkah berikutnya adalah
mengkonfigurasi My.ini agar replikasi dapat berjalan. Konfigurasi ini ditambahkan
pada session [mysqld].
a. Konfigurasi My.ini pada Master 1 – Slave 2.
[mysqld]
# Konfigurasi Master 1
log-bin=PL-9-bin
binlog-do-db=ksp
log_bin_trust_function_creators=1
auto_increment-increment=2
auto_increment_offset=1
server-id=1
#Konfigurasi Slave 2
relay-log-index=PL-9-relay-bin
replicate-do-table=ksp.anggota
replicate-do-table=ksp.cabang
replicate-do-table=ksp.akun_utama
replicate-do-table=ksp.angsuran
replicate-do-table=ksp.kebijakan
replicate-do-table=ksp.penarikan
replicate-do-table=ksp.pinjaman
replicate-do-table=ksp.tabungan
replicate-do-table=ksp.tagihan
b. Konfigurasi My.ini pada Master 2 – Slave 1.
75
[mysqld]
# Konfigurasi Master 2
log-bin=PL-12-bin
binlog-do-db=ksp
log_bin_trust_function_creators=1
auto_increment-increment=2
auto_increment_offset=2
server-id=2
# Konfigurasi Slave 1
relay-log-index=PL-12-relay-bin
replicate-do-table=ksp.anggota
replicate-do-table=ksp.cabang
replicate-do-table=ksp.akun_utama
replicate-do-table=ksp.angsuran
replicate-do-table=ksp.kebijakan
replicate-do-table=ksp.penarikan
replicate-do-table=ksp.pinjaman
replicate-do-table=ksp.tabungan
replicate-do-table=ksp.tagihan
Dari konfigurasi My.ini tersebut, akan membuat server MySQL sebagai
Master sekaligus sebagai Slave. seharusnya akan membentuk file binary dan file
relay-log sesuai dengan nama yang didefinisikan pada My.ini diikuti index yang
dimaintain oleh MySQL. Berdasarkan konfigurasi Master 1 – Slave 2:
76
log-bin=PL-9-bin
relay-log-index=PL-9-relay-bin
dan konfigurasi Master 2 – Slave 1:
log-bin=PL-12-bin
relay-log-index=PL-12-relay-bin
apabila Master 1 melakukan perubahan data maka binary log akan disimpan pada file
PL-9-bin.00001 dan dikirimkan ke Slave 1. Slave 1 mengkopy binary log tersebut ke
file PL-12-relay-bin.00001. Dengan membaca relay-log tersebutlah slave
mengupdate data. Karena pada sistem yang dikembangkan menggunakan prosedur
dan fungsi maka perlu variable log_bin_trust_function_creators=1 agar store procedure
dan fungsi juga dapat direplikasi. Variable auto_increment-increment dan
auto_increment_offset digunakan agar data yang direplikasi tidak tabrakan. Row yang
ditambahkan dari master 1 akan bernilai ganjil mulai dari 1 dan selanjutnya ditambah
1, sedangkan row yang ditambahkan dari master 2 akan bernilai genap mulai dari 2
dan selanjutnya ditambah 1. Pada tabel variable increment digunakan sebagai kode
cabang.
Untuk mengetahui binary log sudah terbentuk menggunakan perintah:
mysql> show master status;
Dan hasil dari perintah tersebut adalah:
+---------------------+----------+--------------------+-----------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------------+----------+--------------------+-----------------------+
| PL-9-bin.000001 | 98 | ksp | |
77
+---------------------+----------+--------------------+-----------------------+
File binary dan Position akan digunakan ketika menghubungkan Master dengan Slave
agar dapat berkomunikasi.
4.2.3. Membuat user replikasi
Jika file binary sudah terbentuk maka langkah selanjutnya adalah membuat
user replikasi.
1. Dari master 1, buat user ksp yang dapat diakses dari ip address 172.21.205.31
dengan password ksp.
mysql> grant select, reload, super, replication slave on *.* to
ksp'@172.21.205.31 identified by 'ksp';
mysql> flush privileges;
mysql> flush tables with read lock;
mysql> unlock tables;
mysql> reset master;
2. Dari master 2, buat user ksp yang dapat diakses dari ip address 172.21.205.28
dengan password ksp.
mysql> grant select, reload, super, replication slave on *.* to
'ksp'@172.21.205.28 identified by 'ksp';
mysql> flush privileges;
mysql> flush tables with read lock;
78
mysql> unlock tables;
mysql> reset master;
4.2.4. Menghubungkan Master dengan Slave agar dapat berkomunikasi
Master dan Slave dikomunikasikan dengan peritah CHANGE MASTER dan
akan disimpan pada file master.info.
a. Master 1 – Slave 2
mysql> change master to
-> master_host='172.21.205.31',
-> master_port=3300,
-> master_user='ksp',
-> master_password='ksp',
-> master_log_file='PL-12-bin.000001',
-> master_log_pos=98;
b. Master 1 – Slave 2
mysql> change master to
-> master_host='172.21.205.28',
-> master_port=3306,
-> master_user='ksp',
-> master_password='ksp',
-> master_log_file='PL-9-bin.000001',
-> master_log_pos=98;
79
Master_host, master_port, master_user, master_password berdasarkan pada
user replikasi yang dibentuk. Sedangkan master_log_file dan master_log_pos
berdasarkan pada informasi yang diperoleh saat melakukan SHOW MASTER STATUS.
80
4.2.5. Menjalankan Slave
Setelah melakukan CHANGE MASTER, lakukan perintah START slave,
untuk melihat status dari slave yaitu menggunakan perintah SHOW SLAVE
STATUS\G. Pastikan Slave_IO_Running dan Slave_SQL_Running memiliki status
Yes
mysql> start slave;
mysql> show slave status\G
Hasil yang diperoleh dari SHOW SLAVE STATUS\G dari Master 1 – Slave 2
*************************** 1. row ***************************
Slave_IO_State : Waiting for master to send event
Master_Host : 172.21.205.31
Master_User : ksp
Master_Port : 3300
Connect_Retry : 60
Master_Log_File : PL-12-bin.000001
Read_Master_Log_Pos : 98
Relay_Log_File : pl-12-relay-bin.000002
Relay_Log_Pos : 235
Relay_Master_Log_File : PL-12-bin.000001
Slave_IO_Running : Yes
Slave_SQL_Running : Yes
Replicate_Do_Table : ksp.anggota, ksp.angsuran, ksp.tagihan,
ksp.akun_utama, ksp.tabungan, ksp.kebijakan, ksp.cabang, ksp.pinjaman,
ksp.penarikan
81
Replicate_Ignore_Table :
Replicate_Wild_Do_Table :
Replicate_Wild_Ignore_Table:
Last_Errno : 0
Last_Error :
Skip_Counter : 0
Exec_Master_Log_Pos : 98
Relay_Log_Space : 235
Until_Condition : None
Until_Log_File :
Until_Log_Pos : 0
Master_SSL_Allowed : No
Master_SSL_CA_File :
Master_SSL_CA_Path :
Master_SSL_Cert :
Master_SSL_Cipher :
Master_SSL_Key :
Seconds_Behind_Master : 0
Sedangkan untuk mengetahu proses yang sedang berjalan baik proses master maupun
slave menggunakan perintah berikut :
mysql> show processlist\G
hasil yang ditampilkan pada layar :
*************************** 1. row ***************************
Id : 2
User : root
82
Host: localhost :1078
Db : NULL
Command : Query
Time : 0
State : NULL
Info : show processlist
*************************** 2. row ***************************
Id : 3
User : ksp
Host : PL-12:1050
Db : NULL
Command : Binlog Dump
Time : 420
State : Has sent all binlog to slave; waiting for binlog to be updated
Info : NULL
*************************** 3. row ***************************
Id : 4
User : system user
Host :
Db : NULL
Command : Connect
Time : 59
State : Waiting for master to send event
Info : NULL
*************************** 4. row ***************************
Id : 5
83
User : system user
Host :
Db : NULL
Command : Connect
Time : 59
State : Has read all relay log; waiting for the slave I/O thread to update it
Info : NULL
4.3. Implementasi Sistem
Sistem ini digunakan untuk mengecek apakah replikasi dapat berjalan.
4.3.1. Login User
Form ini digunakan untuk login ke sistem. User yang login sebagai petugas
maka menu yang dapat ditampilkan adalah menu keanggotaan, tabungan, penarikan,
pinjaman, angsuran. Jika user login sebagai manager maka manager dapat mengakses
menu pelaporan, akun utama, preferensi dan organisasi.
Gambar 4.2 Form Login
84
Untuk login ke Sistem Koperasi Simpan Pinjam menggunakan potongan script
berikut:
<%!
public boolean otentikasi(String pemakai, String password,
String level) {
if (pemakai == null || password == null)
return(false);
if (pemakai.equals("") || password.equals("") )
return(false);
boolean ada_kesalahan = false;
boolean password_cocok = false;
try {
String data_password = "";
Class.forName("org.gjt.mm.mysql.Driver");
Connection koneksi = DriverManager.getC onnection(
NAMA_DB,
NAMA_USER, PASSWORD);
Statement stm = koneksi.createStatem ent();
ResultSet hasilQuery = stm.executeQ uery(
"SELECT pass FROM user_koperasi " +
"WHERE username = '"+pemakai+"' a nd level =
'"+level+"' ");
if (hasilQuery.next())
data_password =
hasilQuery.getString("pass");
if (!ada_kesalahan)
85
if (password.equals(data_password ))
password_cocok = true;
}
catch (Exception ex) {
ada_kesalahan = true;
}
return(password_cocok);
}
%>
4.3.2. Keanggotaan
User tidak memasukkan kode anggota, untuk membuat kode anggota pada
sistem digunakan potongan program berikut :
try {
Class.forName("org.gjt.mm.mysql.Driver");
Connection koneksi = DriverManager.getConnectio n(
NAMA_DB,
NAMA_USER, PASSWORD);
Statement stm = koneksi.createStatement();
ResultSet hasilQuery = stm.executeQuery(
"select buat_kode_anggota(1,1),DATE_FORMAT(cur date(),'%d-%m-
%Y') tgl from anggota, organisasi");
if (hasilQuery.next())
kode = hasilQuery.getString(1);
tgl_daftar = hasilQuery.getString(2);
86
nama= gantiKosong(request.getParameter( "nama"));
}
catch (Exception ex) {
out.print(ex +" buat kode2");
}
}
Perintah tersebut akan memanggil fungsi dari MySQL berikut:
DELIMITER $$
DROP FUNCTION IF EXISTS `rachel`.`buat_kode_anggota `$$
CREATE FUNCTION `buat_kode_anggota`(increment int, off_set int)
RETURNS varchar(18)
BEGIN
declare kode_lama varchar(5);
declare kode_baru varchar(18);
declare kode varchar(18);
select right(kode_anggota,4) into kode_lama from
anggota,organisasi where kode_anggota like
concat(kodeOrg,'%') order by kode_anggota desc limi t 0,1;
if (kode_lama is not null) then -- kode pertama
-- klo udah ada kode (not null)
if length(kode_lama + off_set) = 1 then
select
concat(kodeOrg,substring(curdate(),3,2),substring(c urdate(),6,2),
substring(curdate(),9,2),'000',(kode_ lama + off_set))
into kode_baru
from organisasi;
elseif length(kode_lama + off_set)= 2 then
87
select
concat(kodeOrg,substring(curdate(),3,2),substring(c urdate(),6,2),
substring(curdate(),9,2),'00',(kode_l ama + off_set))
into kode_baru
from organisasi;
elseif lengtorganisasih(kode_lama + off_set)=3 then
select
concat(kodeOrg,substring(curdate(),3,2),substring(c urdate(),6,2),
substring(curdate(),9,2),'0',(kode_la ma + off_set))
into kode_baru from organisasi;
else
select
concat(kodeOrg,substring(curdate(),3,2),substring(c urdate(),6,2),
substring(curdate(),9,2),(kode_lama + off_set)) into
kode_baru from organisasi;
end if;
else
select
concat(kodeOrg,substring(curdate(),3,2),substring(c urdate(),6,2),
substring(curdate(),9,2),'000',increment) into kode_baru
from organisasi;
end if;
return kode_baru;
END$$
DELIMITER ;
4.3.3. Tabungan
88
Form ini digunakan untuk memasukkan data tabungan wajib dan sukarela.
Form ini dapat dilihat pada gambar 4.3.
Gambar 4.3 Form Tabungan
Berikut potongan program ketika tombol add ditekan :
String strQuery =
"call insert_tabungan1('" + request.getParameter("k ode_tabungan") +
"', '" + request.getParameter("kode") + "',"
'" + tgl_simpan + "'," + request.getParameter("tab_ wajib") + "," +
""+request.getParameter("tab_sukarela")+","+request .getParameter("j
ml_bayar")+")";
hasil_penyisipan = stm.executeUpdate(st rQuery);
}
Dimana store procedur dari insert_tabungan1 adalah sebagai berikut :
89
DELIMITER $$
DROP PROCEDURE IF EXISTS `rachel`.`insert_tabungan1 `$$
CREATE PROCEDURE `insert_tabungan1`(tabungan_kode v archar(20),
anggota_kode varchar(20),
ptgl varchar(10),v_wajib DOUBLE, v_sukarela DOUBLE, jml_tab int)
BEGIN
declare v_bulan varchar(20);
declare v_tgl date;
select ptgl;
select concat(substring(ptgl,7,4),'-',substring(ptg l,4,2),'-
',substring(ptgl,1,2)) into v_tgl;
delete from tabungan_temp where kode_tabungan = 'nu ll' ;
delete from tabungan_temp where kode_tabungan = tab ungan_kode and
kode_anggota != anggota_kode;
if(v_wajib > 0) then
while jml_tab > 0 do
if exists (select kode_anggota from anggota where k ode_anggota =
anggota_kode) then
if exists(select kode_anggota from tabungan_temp w here
kode_anggota = anggota_kode and bulan_tabwajib !='' ) then
select MONTHNAME(DATE_ADD(tgl_simpan, INTERVAL
period_diff(concat(year(current_date()),indek),date _format(v_tgl,'%
Y%m'))+1 MONTH))
into v_bulan
from tabungan_temp, bulan where kode_anggota =
anggota_kode
and bulan.namabulan = tabungan_temp.bulan_tabwaji b
order by indek desc limit 1;
elseif exists(select tabungan_detail.kode_tabungan from
tabungan_detail,tabungan
where tabungan.kode_tabungan=tabungan_detail.kode_t abungan
and tabungan.kode_anggota = anggota_kode
and bulan_tabwajib != '') then
select MONTHNAME(DATE_ADD(tgl_simpan, INTERVAL
period_diff(concat(year(current_date()),indek),date _format(v_tgl,'%
Y%m'))+1 MONTH))
into v_bulan
from tabungan_detail, bulan,tabungan where kode_a nggota
= anggota_kode
90
and tabungan.kode_tabungan=tabungan_detail.kode_t abungan
and bulan.namabulan = tabungan_detail.bulan_tabwa jib
order by indek desc limit 1;
else
select MONTHNAME(DATE_ADD(tgl_daftar, INTERVAL 1 MONTH))
into v_bulan from anggota
where kode_anggota = anggota_kode;
end if;
insert into tabungan_temp
(kode_tabungan,kode_anggota,tgl_simpan,tab_wajib,ta b_sukarela,bulan
_tabwajib,tahun)
values
(tabungan_kode,anggota_kode,v_tgl,v_wajib,0,v_bulan ,
year(v_tgl));
end if;
set jml_tab=jml_tab-1;
end while;
end if;
if(v_sukarela>0) then
insert into tabungan_temp
(kode_tabungan,kode_anggota,tgl_simpan,tab_wajib,ta b_sukarela,bulan
_tabwajib,tahun)
values
(tabungan_kode,anggota_kode,v_tgl,0,v_sukarela,'',
year(v_tgl));
end if;
END$$
DELIMITER ;
4.3.4. Penarikan
Form ini digunakan untuk memasukkan data penarikan. Penarikan tabungan
disini minimal meninggalkan saldo Rp 50.000,-. Form penarikan dapat dilihat pada
gambar 4.4. Peminjaman dapat dilakukan oleh anggota lebih dari 1 kali namun
91
pinjaman sebelumnya harus sudah lunas atau dengan kata lain anggota tidak sedang
memiliki pinjaman. Untuk menampilkan list anggota yang tidak peminjaman
pinjaman menggunakan potongan program berikut:
St = Conn.prepareStatement("SELECT * FROM viewpenar ikan");
ResultSet hasil_query = St.executeQuery();
boolean data_kosong = !hasil_query.next();
boolean data_ada = !data_kosong;
int urut = offset;
while ((data_ada)&&(Repeat1__numRows-- != 0)) {
urut++;
out.println("<tr><td>"+ urut +"</td><td>"+
hasil_query.getObject("kode_penarikan") +
"</td><td>"+ hasil_query.getObject("tgl_penarikan") +"</td><td>"+
hasil_query.getObject("kode_anggota") +
"</td><td>"+ hasil_query.getObject("nama") +"</td>" +
"<td align=right>"+ hasil_query.getObject("jumlah_p enarikan")
+"</td><td>"+
"</td><tr>");
Repeat1__index++;
data_ada = hasil_query.next();
}
Query akan mengambil data dari tabel view viewpenarikan. Perintah untuk membuat
view tersebut adalah :
DELIMITER $$
92
DROP VIEW IF EXISTS `rachel`.`viewpenarikan`$$ CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhos t` SQL SECURITY DEFINER VIEW `viewpenarikan` AS select sql_no_cache `penarikan`.`kode_penarikan` AS `kode_penarikan`, `penarikan`.`kode_anggota` AS `kode_anggota`,`anggo ta`.`nama` AS `nama`, date_format(`penarikan`.`tgl_penarikan`,_latin1'%d/ %m/%Y') AS `tgl_penarikan`, `penarikan`.`Besar_penarikan` AS `Jumlah_penarikan` , `penarikan`.`lokasi` AS `lokasi`,`penarikan`.`tgl_p enarikan` AS `tgl` from ((`penarikan` join `anggota`) join `organisasi `) where (`penarikan`.`kode_anggota` = `anggota`.`kode _anggota`) order by date_format(`penarikan`.`tgl_penarikan`,_l atin1'%d/%m/%Y') desc$$ DELIMITER ;
Gambar 4.4 Form Penarikan
4.3.5. Pinjaman
93
Form ini digunakan untuk memasukkan data peminjaman dan dapat dilihat
pada gambar 4.5 Untuk mengambil detail peminjaman dan biaya administrasi
menggunakan potongan program berikut :
hasilQuery = stm.executeQuery(
"select if(right(round(besar_pinjaman/jumlah_angsur an,0),2)>50," +
"round(besar_pinjaman/jumlah_angsuran,0)+(100-
right(round(besar_pinjaman/jumlah_angsuran,0),2))," +
"round(besar_pinjaman/jumlah_angsuran,0)-
right(round(besar_pinjaman/jumlah_angsuran,0),2))
perBln,bunga,provisi,biaya_adm,biaya_kartu_anggota, biaya_materai,bi
aya_notaris,"+
"provisi+biaya_adm+biaya_kartu_anggota+biaya_matera i+biaya_notaris
from pinjaman_temp where kode_pinjaman = '"+kode_pi njaman+"' and
kode_anggota = '"+kode+"'");
while (hasilQuery.next()) {
perbln = hasilQuery.getString(1);
bunga_p = hasilQuery.getString(2);
provisi = hasilQuery.getString(3);
biaya_adm = hasilQuery.getString(4);
biaya_kartu = hasilQuery.getString(5);
biaya_materai = hasilQuery.getString(6) ;
biaya_notaris = hasilQuery.getString(7) ;
total = hasilQuery.getString(8);
}
94
Gambar 4.5 Form Pinjaman
4.3.6. Angsuran
Merupakan form yang digunakan untuk memasukkan data angsuran, dapat
dilihat pada gambar 4.6.
95
Gambar 4.6 Form Angsuran
Anggota yang melakukan peminjaman akan mengasur pokok dan bunga
pinjaman sesuai dengan perjanjian pinjaman dan membayar denda apabila jatuh
tempo. Besar Potongan program untuk menampilkan detail tagihan beserta dendanya
dalam bentuk list adalah :
hasilQuery = stm.executeQuery(
"SELECT
angsuran_temp.kode_tagihan,pokok,bunga,denda,pokok+ bunga+denda,baya
r_angsuran,bulan FROM angsuran_temp,tagihan where
tagihan.kode_tagihan=angsuran_temp.kode_tagihan and kode_angsuran
like '"+kode_angsuran+"'");
total_bayar = 0.0;
96
while (hasilQuery.next()) {
double total =
Double.parseDouble(hasilQuery.getString("bayar_angs uran"));
total_bayar += total;
out.println("<tr><td>" +
"<input TYPE=checkbox name=kode_tagihan VA LUE="+
hasilQuery.getString("kode_tagihan")+">"
+hasilQuery.getString("kode_tagihan"));
out.println("</td><td>"+ hasilQuery.getString("bula n"));
out.println("</td><td
align=right>"+hasilQuery.getString("pokok"));
out.println("</td><td
align=right>"+hasilQuery.getString("bunga"));
out.println("</td><td
align=right>"+hasilQuery.getString("denda"));
out.println("</td><td align=right>"+hasilQuery.get String(5));
out.println("</td><td
align=right>"+hasilQuery.getString("bayar_angsuran" ));
out.println("</td></tr>");
}
4.3.7. Akun Utama
97
Gambar 4.7 Form Akun Utama
4.3.8. Preferensi
Gambar 4.8 Form Preferensi
4.3.9. Organisasi
98
Gambar 4.9 Form Organisasi
4.3.10. Laporan
Laporan dikelompokkan berdasarkan kode cabang dan dapat ditampilkan
maupun disimpan dalam format Excel. Laporan-laporan tersebut meliputi :
a. Laporan Kredit Umum
Merupakan laporan untuk menunjukkan tagihan pokok dan bunga pinjaman,
angsuran pokok dan bunga pinjaman beserta sisa pokok dan bunga pinjaman. Input
untuk laporan ini berupa bulan. Sehingga dari laporan ini dapat diketahui pada bulan
yang diinginkan anggota yang sudah mengangsur atau belum.
99
Gambar 4.10 Laporan Kredit Umum
Gambar 4.11 Laporan Kredit Umum format Excel
100
b. Laporan Tabungan Wajib
Merupakan laporan penerimaan tabungan wajib dengan periode tanggal.
Gambar 4.12 Laporan Tabungan Wajib
Gambar 4.13 Laporan Tabungan Wajib format Excel
101
c. Laporan Tabungan Sukarela
Merupakan laporan penerimaan tabungan sukarela dengan periode tanggal.
Gambar 4.14 Laporan Tabungan Sukarela
Gambar 4.15 Laporan Tabungan Sukarela format Excel
d. Laporan Penarikan Tabungan
Merupakan laporan penarikan tabungan dengan periode tanggal.
102
Gambar 4.16 Laporan Penarikan Tabungan
Gambar 4.17 Laporan Penarikan Tabungan format Excel
103
e. Laporan Peminjaman
Merupakan laporan peminjaman anggota dengan periode tanggal.
Gambar 4.18 Laporan Pinjaman
Gambar 4.19 Laporan Pinjaman format Excel
104
f. Laporan Angsuran Pinjaman
Merupakan laporan anguran pinjaman dengan periode tanggal.
Gambar 4.20 Laporan Angsuran
Gambar 4.21 Laporan Angsuran format Excel
BAB V
ANALISIS HASIL
5.1. Skenario
Skenario ini digunakan untuk menganalisa apakah replikasi master to master
yang sudah diimplementasikan pada bab sebelumnya dapat berjalan, untuk
membuktikan transaksi yang dilakukan disetiap koperasi cabang menghasilkan data
yang relevan dan akurat.
KBJ dan KPD merupakan koperasi yang masih satu yayasan. Pada skenario
ini setiap anggota yang terdaftar di koperasi tersebut dapat melakukan transaksi di
kedua koperasi. Dengan replikasi yang diterapkan maka apabila ada anggota yang
mendaftar di salah satu koperasi tersebut maka data tersebut juga akan direplikasi ke
cabang lain. Daftar anggota koperasi KPD dan KBJ dapat dilihat pada tabel 5.1 dan
tabel 5.2:
Tabel 5.1 Daftar anggota dan nasabah KPD
kode_anggota nama status_keanggotaan kodeOrg
KPD0804120005 Bambang S anggota KPD
KPD0804120007 Ezra Gunawan Nasabah KPD
KPD0804120006 Kristina Verawati Nasabah KPD
KPD0804120009 Naomi anggota KPD
KPD0804120003 Natanael anggota KPD
KPD0804100001 Patricia anggota KPD
KPD0804120008 Ribka anggota KPD
105
106
KPD0804120002 Ruth Dewi A anggota KPD
KPD0804120004 Yonatan Eko S anggota KPD
Tabel 5.2 Daftar anggota dan nasabahKBJ
kode_anggota Nama status_keanggotaan kodeOrg
KBJ0801310005 Anita anggota KBJ
KBJ0802090006 Miansari anggota KBJ
KBJ0801220003 Monica Dwi A anggota KBJ
KBJ0803010007 Ningrum nasabah KBJ
KBJ0803110011 Novita nasabah KBJ
KBJ0801150002 Rachel Kurniawati nasabah KBJ
KBJ0802140007 Romi anggota KBJ
KBJ0804050012 Sintia Dewi anggota KBJ
KBJ0803030009 Surya Istanti anggota KBJ
KBJ0803030008 Tanti nasabah KBJ
KBJ0803030010 Untung anggota KBJ
KBJ0803030007 Yohana Lestari nasabah KBJ
KBJ0801270004 Yovita Dwi Arini nasabah KBJ
KBJ0801150001 Yusup Budi Pamungkas nasabah KBJ
Transaksi 1 : Pada tanggal 12 April 2008, KPD menerima anggota baru. Anggota
tersebut bernama Naomi bertempat tinggal di Solo no telepon 2355151,
memiliki pekerjaan sebagai guru disalah satu SD swasta.
107
Gambar 5.1 Form keanggotaan.
Data anggota akan direplikasi ke KBJ. Dapat dilihat dari gambar 5.2 yang
merupakan hasil melihat data anggota pada sistem yang dipasang di KBJ dan
KPD. Terbukti menghasilkan tampilan yang sama.
Gambar 5.2 List Anggota
108
Transaksi 2 : Tanggal 12 April 2008 kode anggota KBJ0803030010 (Romi)
merupakan anggota KBJ. Namun beliau menabung di KPD sebesar
Rp 150.000,- dimana uang tersebut digunakan untuk membayar
tabungan wajib bulan maret.
Gambar 5.3 Form Simpanan
Hasil penyimpanan data simpanan jika dilihat gambar 5.4 dan 5.5 dari sitem yang
dipasang di KPD:
Gambar 5.4 Lihat Simpanan Wajib
109
Gambar 5.5 Form Simpanan Sukarela
Data simpanan yang diinputkan juga akan direplikasi ke kantor KBJ namun
apabila petugas KBJ melihat transaksi simpanan dari menu Lihat Simpanan maka
data tidak ditampilkan karena transaksi tersebut tidak boleh diketahui oleh
petugas. Data simpanan hanya dapat dilihat oleh manager dari menu Laporan
penerimaan tabungan wajib dan sukarela. Gambar 5.6 adalag gambar yang
diambil dari sistem yang dipasang di KBJ.
110
Gambar 5.6 Lihat Simpanan Wajib
dari gambar 5.6 tampak bahwa data yang dimasukkan di KPD tidak dapat dilihat
oleh petugas KBJ.
Transaksi 3 : Tanggal 12 April 2008 KBJ0801270004 (Yovita Dwi Arini)
melakukan transaksi di KPD untuk mengambil tabungan sebesar Rp
100.000,-
Gambar 5.7 Form Penarikan
111
Sama halnya dengan tabungan. Data penarikan ini juga akan direplikasi ke cabang
KBJ. Gambar 5.8 menunjukkan saldo tabungan Yovita tinggal Rp 50.000,-.
Gambar 5.8 Form Penarikan
Transaksi 4 : Karena Koperasi KPD tidak beroperasi pada tanggal 14 April 2008
maka anggota KPD0804120003 (Natanael) yang terdaftar di KPD
meminjam uang di KBJ sebesar Rp 10.000.000,- dan diangsur
sebanyak 10 kali.
112
Gambar 5.9 Form Peminjaman
Data pinjaman akan direplikasi ke cabang. Dengan tujuan agar anggota tersebut dapat
mengangsur pinjaman dari cabang lain.
Transaksi 5 : pada bulan Mei Natanael mengangsur pinjaman di KPD untul pinjaman
yang dilakukan di KBJ.
Gambar 5.10 Form Angsuran
113
Data Angsuran akan direplikasi ke cabang. Dan jika dilihat dari sistem yang
dipasang di KBJ maka data tagihan bulan mei untuk Natanael sudah tidak ada. Lihat
gambar 5.11.
Gambar 5.11 Form Peminjaman
5.2. Analisis Teknologi
Setelah mengimplemantasikan Sistem Koperasi Simpan Pinjam dengan
pendistribusian database replikasi, terbukti sistem tersebut memiliki kelebihan
maupun kekurangan.
Dari sistem tersebut dapat memudahkan cabang dalam pembuatan laporan dan
tidak memperkecil pengeluaran karena laporan setiap cabang dapat di akses oleh
manager dari kantor pusat. Anggota juga dapat melakukan transaksi di setiap koperasi
cabang.
Pilihan replikasi master-master sebagai tipe pendistribusian data pada kasus
koperasi simpan pinjam ini sangatlah cocok karena setiap cabang mempunyai hak
114
yang sama untuk insert, update atau delete data. Selain itu replikasi MySQL juga
mengijinkan fungsi dan store procedure untuk direplikasi meskipun user replikasi
tidak memiliki priveleges create.
5.3. Kelebihan dan Kekurangan
5.3.1. Kelebihan
Berdasarkan pada penelitian yang dilakukan dan dari scenario tentang
Replikasi Master-Master MySQL 5.0 (Sistem Koprasi Simpan Pinjam) dapat diambil
beberapa kelebihan:
1. Ketersediaan data meningkat karena data dapat diakses melalui setiap cabang,
sehingga memudahankan transaksi maupun pembuatan laporan. Hal ini
terbukti : anggota dapat melakukan transaksi di setiap koperasi cabang karena
data sudah tersedia disetiap koperasi cabang.
2. unjuk kerja sistem meningkat karena setiap cabang koperasi mengakses data
local.
3. Meskipun jika salah satu cabang sedang mengalami gangguan, cabang lain
masih dapat melakukan aktivitas karena setiap cabang menggunakan data
lokal.
4. Menggunakan replikasi berarti membackup data secara konstan. Data
koperasi cabang memiliki data backup di koperasi cabang lain. Apabila data
rusak maka data dapat diperbaiki dari data yang ada di cabang lain.
115
5.3.2. Kekurangan
Dari hasil penelitian tentang Replikasi Master-Master MySQL 5.0 (Sistem
Koprasi Simpan Pinjam) dapat diambil beberapa kekurangan:
1. Replikasi master-master membutuhkan resources yang tinggi. File binary log
akan bertambah dengan berjalannya waktu. Setiap perubahan data akan
disimpan ke file binary. Contoh File binary lihat gambar 5.12.
Gambar 5.12 File binary
2. Data belum akurat jika sebuah transaksi melakukan update terhadap data yang
sama pada saat yang bersamaan. Hal ini terjadi karena perubahan data
replikasinya masih Asynchronous atau belum menggunakan protokol 2PC.
BAB VI
KESIMPULAN DAN SARAN
6.1. Kesimpulan
Kesimpulan yang dapat diambil setelah mengimplementasikan sistem
terdistribusi dangan replikasi master to master adalah sebagai berikut :
1. Dengan teknologi replikasi maka ketersediaan data dan kinerja sistem
meningkat karena data anggota, data simpanan, penarikan, angsuran dapat
diakses dari setiap cabang.
2. Replikasi master-master memiliki kelebihan dan kekurangan, sehingga untuk
menggunakan teknologi ini perlu disesuaikan dengan kebutuhan
pengembangan sistem.
6.2. Saran
Saran dari penulis apabila ada pembaca yang mau mengembangkan penelitian
ini adalah :
1. Menggunakan replikasi synchronous atau pada MySQL dikenal dengan
Cluster.
2. Mencoba mereplikasi database yang berbeda ke sebuah slave.
3. Merancang web yang lebih baik, dengan fasilitas yang lebih lengkap.
116
117
DAFTAR PUSTAKA
Connoly, Thomas dan Carolyn Begg, Database System : A Practical Aproach to
Design, Implementation and Management, 3nd Edition, Pearson Education
Limited 2002, England
Kadir, Abdul, Dasar Pemrograman JSP (Java Server Pages), Penerbit Andi,
2004, Yogyakarta
Priyanto, Rahmat, Belajar Sendiri Menguasai MySQL 5, PT Elex Media
Komputindo, 2007, Jakarta
Polina, Maria agnes dan Jong Jek Siang, Kiat Jitu Menyusun Skripsi Jurusan
Teknik Informatika/Komputer, Penerbit Andi, 2005, Yogyakarta
http://lecture.ukdw.ac.id/willysr/sister-it/replication.pdf
http://www.mysql.com