BAB II TINJAUAN PUSTAKA BAB 2 TINJAUAN PUSTAKA Tinjauan Pustaka adalah kepustakaan yang mendasari pembuatan perangkat lunak Sistem Replikator Database. Uraian pustaka yang digunakan meliputi pengertian Database Management System (DBMS), Sistem Database Terdistribusi, Fragmentasi, Replikasi, MySQL, Algoritma ORDER, Webserver Apache, PHP, HTML dan GNU Wget.
2.1
Definisi Database dan DBMS Database adalah kumpulan data terhubung yang disimpan secara bersama-
sama pada suatu media, tanpa adanya suatu kerangkapan data sehingga mudah untuk digunakan kembali. Data dapat digunakan oleh satu atau lebih program aplikasi secara optimal, dan disimpan tanpa mengalami ketergantungan pada program yang akan menggunakannya sehingga apabila ada penambahan, pengambilan dan modifikasi data dapat dilakukan dengan mudah dan terkontrol (Fatansyah, 1999). DBMS merupakan kumpulan tabel yang saling berkaitan bersama dengan program sebagai pengelolanya. Basis data adalah kumpulan datanya, sedangkan program pengelolanya berdiri sendiri dalam suatu paket program untuk membaca, mengisi, menghapus, dan melaporkan data dalam basis data (Fatansyah, 1999).
2.2
Sistem Database Terdistribusi Menurut Fatansyah (2004) Database dalam sebuah sistem database
terdistribusi disimpan pada beberapa komputer. Komputer - komputer dalam sebuah sistem terdistribusi berhubungan satu sama lain melalui bermacam macam media komunikasi seperti high-speed buses atau telephone line. Sistem database terdistribusi berisikan sekumpulan site, dimana tiap-tiap site dapat berpartisipasi dalam pengeksekusian transaksi - transaksi yang mengakses data pada satu site atau beberapa site, jadi Sistem Basis Data 5
6
Terdistribusi adalah suatu sistem yang terdiri atas kumpulan basis data yang saling berhubungan secara logika dan tersebar pada sebuah jaringan komputer. Transaksi dalam sistem basis data terdistribusi umumnya terbagi menjadi 2 jenis transaksi, yaitu : 1.
Transaksi Lokal Transaksi yang mengakses data pada suatu site yang sama dengan site di mana transaksi tersebut dijalankan.
2.
Transaksi Global Transaksi yang membutuhkan pengaksesan data di site yang berbeda dengan site di mana transaksi tersebut dijalankan atau transaksi dari sebuah site yang membutuhkan pengaksesan data ke sejumlah site lainnya.
2.2.1 Keuntungan dan Kerugian Basis Data Terdistribusi Menurut Fatansyah (2004) penerapan sistem basis data yang baik dan benar akan menghasilkan keuntungan - keuntungan seperti berikut ini : 1.
Pembagian (pemakaian bersama) data dan kontrol yang tersebar.
2.
Kehandalan dan ketersediaan
3.
Kecepatan query Sedangkan kelemahan utama sistem basis data terdistribusi terletak pada
meningkatnya kompleksitas yang diperlukan untuk menjamin koordinasi yang baik antara site yang terlibat. Peningkatan kompleksitas ini berakibat sebagai berikut : 1.
Biaya pembangunan perangkat lunak yang lebih besar
2.
Potensi bug yang lebih banyak
3.
Peningkatan waktu proses
2.3
Fragmentasi Menurut Fatansyah (2004) fragmentasi adalah suatu teknik untuk
melakukan pemilahan dan penyebaran data atau objek-objek database ke dalam sejumlah fragmen. Relasi r jika difragmentasikan, maka r dibagi menjadi sejumlah fragmen r1, r2, …., rn. Fragmen-fragmen ini berisi informasi yang cukup yang
7
memungkinkan rekonstruksi kembali ke Tabel r yang awal. Rekonstruksi ini dapat dilakukan melalui penerapan operasi union (untuk penggabungan baris data) terhadap fragmen-fragmen tersebut. Ada dua jenis pembentukan fragmentasi, yaitu Fragmentasi Horizontal dan Fragmentasi Vertikal yang masing-masing akan dibahas lebih detail dengan menggunakan Tabel nasabah dengan struktur dan data yang ditunjukkan oleh Tabel 2.1 berikut ini. Tabel 2.1 Tabel nasabah No_nasabah
Kota
Saldo
Saldo
simpan
pinjam
Nama
Alamat
2001001
Jamaludin
jl. abadi no 45
denpasar
1.000.000
0
2001002
Nurhaliza
jl. budi no 234
denpasar
2.000.000
500.000
2001003
nur alam
jl. dani no 121
denpasar
4.000.000
1.000.000
2001001
astini
jl. ahmad no 24
tabanan
1.500.000
100.000
2001002
ahmad
jl. mekar no 32
tabanan
3.400.000
400.000
2001003
wisnu
jl. makmur no 122
tabanan
700.000
200.000
2.3.1 Fragmentasi Horizontal Fragmentasi horizontal dari sebuah Tabel r dipartisi kedalam sejumlah fragmen r1, r2, r3, .... , rn yang merupakan pemilahan baris data. Setiap baris data pada Tabel r harus berada minimal di sebuah fragmen, sedemikian hingga tabel awalnya dapat dibentuk kembali jika diperlukan. Sebuah fragmen dapat didefinisikan sebagai sebuah seleksi dari tabel r. Predikat Pi dapat digunakan untuk membentuk fragmen ri sebagai berikut : ri = Pi (r) Formula diatas jika diterapkan pada Tabel 2.1, dengan ekspresi sebagai berikut: Nasabah1= kota=’denpasar’ (nasabah) Nasabah2= kota=’tabanan’ (nasabah)
Maka didapatkan 2 fragmen Tabel seperti pada Tabel 2.2 dan Tabel 2.3 sebagai berikut :
8
Tabel 2.2 Tabel nasabah1 No_nasabah
Nama
Alamat
Kota
Saldo_simpan
Saldo_pinjam
2001001
jamaludin
jl. abadi no 45
Denpasar
1.000.000
0
2001002
nurhaliza
jl. budi no 234
Denpasar
2.000.000
500.000
2001003
nur alam
jl. dani no 121
Denpasar
4.000.000
1.000.000
Tabel 2.3 Tabel nasabah2 No_nasabah
Nama
Alamat
Kota
Saldo_simpan
Saldo_pinjam
2001001
astini
jl. ahmad no 24
tabanan
1.500.000
100.000
2001002
Ahmad
jl. mekar no 32
tabanan
3.400.000
400.000
2001003
wisnu
jl. makmur no 122
tabanan
700.000
200.000
Rekonstruksi dari Tabel r dapat dilakukan dengan menerapkan operasi union dari semua fragmen, dengan ekspresi sebagai berikut : r = r1 r2 r3 .... rn Berdasarkan fragmen nasabah diatas maka Tabel nasabah dapat direkonstruksi dengan menggunakan operasi union sebagai berikut : nasabah = nasabah1 nasabah2
2.3.2 Fragmentasi Vertikal Fragmentasi vertikal memiliki kesamaan dengan dekomposisi (penguraian) tabel atau pemilahan field. Jika R adalah himpunan atribut dalam Tabel r maka kita dapat mendefinisikan setiap fragmen ri sebagai berikut : ri = ∏ Ri (r) Pembagian field pada fragmen pertama dengan fragmen selanjutnya dilakukan dengan mempertimbangkan fungsi atau frekuensi pemakaiannya, dengan cara ini tabel yang memiliki banyak field bisa dipilah menjadi sub tabel utama dan sub tabel pendukung atau bisa juga sub tabel yang sering diakses dan yang jarang diakses. Fragmentasi vertikal ini, jika diterapkan pada Tabel 2.1 dengan memilah menjadi fragmen biodata atau nasabah1(no_nasabah,nama,alamat,kota), fragmen simpan atau nasabah2(no_nasabah,saldo simpanan, saldo pinjam), fragmen
9
pinjam atau nasabah3(no_nasabah, saldo pinjam) dengan pendefinisian fragmen sebagai berikut : nasabah1= ∏no_nasabah,nama,alamat,kota (nasabah) nasabah2= ∏no_nasabah,saldo simpan (nasabah) nasabah3= ∏no_nasabah,saldo pinjam (nasabah) Tabel 2.4 Tabel fragmentasi vertikal nasabah1 No_nasabah
Nama
Alamat
Kota
2001001
jamaludin
jl. abadi no 45
denpasar
2001002
nurhaliza
jl. budi no 234
denpasar
2001003
nur alam
jl. dani no 121
denpasar
2001001
astini
jl. ahmad no 24
tabanan
2001002
ahmad
jl. mekar no 32
tabanan
2001003
wisnu
jl. makmur no 122
tabanan
Tabel 2.5 Tabel fragmentasi vertikal nasabah2 No_nasabah
Saldo_simpan
2001001
1.000.000
2001002
2.000.000
2001003
4.000.000
2001001
1.500.000
2001002
3.400.000
2001003
700.000
Tabel 2.6 Tabel fragmentasi vertikal nasabah3 No_nasabah
Saldo_pinjam
2001001
0
2001002
500.000
2001003
1.000.000
2001001
100.000
2001002
400.000
2001003
200.000
10
Satu hal yang penting dalam fragmentasi adalah jaminan dalam pengembalian semua fragmen ke dalam tabel semula, oleh karena itu dalam fragmentasi vertikal, field key dalam tabel awal harus ditempatkan di semua fragmen. Operasi natural join digunakan untuk melakukan rekonstruksi fragmenfragmen, dan membutuhkan field key yang akan merelasikan semua fragmenfragmen, dengan formula sebagai berikut: r = r1 ∞ r2 ∞ r3 ... ∞ rn Berdasarkan fragmen nasabah diatas, maka tabel nasabah dapat direkonstruksi dengan menggunakan operasi sebagai berikut : nasabah = ∏no_nasabah,nama,alamat,kota,saldo simpan, saldo pinjam (nasabah1 ∞ nsabah2 ∞ nasabah3 )
2.4
Replikasi Menurut Fatansyah (2004) replikasi adalah suatu teknik untuk melakukan
peng-copy-an dan pendistribusian data atau objek-objek database. Teknik replikasi ini dapat mendistribusikan data melalui koneksi jaringan lokal maupun internet. Replikasi juga memungkinkan untuk mendukung kinerja aplikasi, penyebaran data fisik sesuai dengan penggunaannya seperti pemrosesan transaksi online dan DSS (Desiscion Support System) atau pemrosesan database terdistribusi melalui beberapa server. 2.4.1 Jenis Jenis Replikasi Terdapat beberapa jenis replikasi, diantaranya sebagai berikut (http://elearning.gunadarma.ac.id/ ) : 1.
Snapshot Replication Mendistribusikan data yang dapat dilihat pada saat tertentu tanpa melakukan
update, biasanya digunakan pada saat memerlukan tampilan data seperti : daftar harga, katalog, data yang digunakan untuk pengambilan keputusan. Data ini sifatnya hanya “read only”. Replikasi ini membantu pada saat : a. Data sebagian besar statis dan tidak sering dirubah. b. Dapat menerima copy data yang telah melewati batas waktu yang ditentukan. c. Datanya sedikit.
11
2.
Transactional Replication Memelihara kekonsistenan transaksi yang terjadi.
3.
Merge Replication Merge replication memungkinkan pengguna bekerja dan merubah data
sesuai dengan wewenangnya. Pada saat server tidak dikoneksikan ke seluruh lokasi dalam topologi, replikasi merubah ke nilai data yang sama. Selain tiga jenis replikasi diatas, replikasi juga dapat dibedakan menjadi : 1.
Replikasi Total Replikasi Total adalah
proses membuat tiruan database dari seluruh
komponen database pada master yang akan direplikasikan pada banyak komputer lain (slave). 2.
Replikasi Sebagian Replikasi Sebagian adalah proses membuat tiruan database dari beberapa komponen database pada master yang akan direplikasikan pada banyak komputer lain (slave). Terdapat 2 jenis replikasi sebagian, yaitu: a. Replikasi sebagian berdasarkan field Replikasi Sebagian berdasarkan field adalah proses membuat tiruan database dari beberapa field pada master yang akan direplikasikan pada banyak komputer lain (slave). b. Replikasi sebagian berdasarkan tabel Replikasi Sebagian berdasarkan tabel adalah proses membuat tiruan database dari beberapa tabel pada master yang akan direplikasikan pada banyak komputer lain (slave).
3.
Replikasi Searah Replikasi Searah adalah proses membuat tiruan database dari database yang ada pada komputer master kepada banyak komputer lain (slave). Apabila terjadi perubahan pada database master, maka database slave akan berubah juga. Namun apabila yang mengalami perubahan database pada slave maka database master tidak ikut berubah.
12
4.
Replikasi Dua Arah Replikasi Dua Arah adalah proses membuat tiruan database dari database yang ada pada komputer master kepada banyak komputer lain (slave). Databas slave akan mengalami perubahan apabila terjadi perubahan pada database master dan begitu juga sebaliknya.
2.4.2 Keuntungan dan Kerugian Replikasi Menurut Fatansyah (2004), ada sejumlah keuntungan dan kerugian yang diperoleh dari penerapan metode replikasi, adalah sebagai berikut : 1.
Availability Availability yang dimaksudkan adalah jika satu site yang berisi relasi r
gagal, relasi r masih didapat di site yang lain. Sistem dapat melanjutkan proses meskipun satu site mengalami kegagalan. Client
r
Primary Server
r
Backup Server
Gambar 2.1 Tingkat availabilitas suatu data
2.
Meningkatkan parallelitas data Resource direplikasikan ke semua site sehingga beberapa site dapat
memproses query terhadap r secara paralel. Semakin banyak ada replikasi, semakin besar kesempatan data yang dibutuhkan ditemukan pada site dimana transaksi dijalankan. Replikasi data meminimalkan pergerakan data di antara site.
13
Client A/B
Db B
Replika db A
Site b
Db A
Replika db B
Site A
r r
Gambar 2.2 Replikasi server dan resource database
3.
Meningkatkan overhead update Sistem harus memastikan bahwa semua replikasi dari relasi r konsisten,
karena kalau tidak, akan terjadi kesalahan komputasi. Update harus disebar ke seluruh site dimana pun r di-update. Replikasi meningkatkan kinerja operasi dan availability pembacaan data. Transaksi update meningkatkan overhead. Masalah pengontrolan konkurensi update data yang direplikasi semakin kompleks dari pendekatan terpusat.
2.5
MySQL MySQL adalah sebuah perangkat lunak sistem manajemen basis data atau
DBMS (Database Management System) yang multithread dan multi-user. MySQL menggunakan SQL (Structured Query Language) sebagai bahasa dasar untuk mengakses database-nya. MySQL termasuk salah satu RDMS (Relational Database Management System) yang bersifat open source. Struktur database-nya disimpan dalam tabel-tabel yang saling berelasi. MySQL dapat dipergunakan dan didistribusikan tanpa memerlukan lisensi dari pembuatnya karena sifatnya open source. MySQL dapat dijalankan dalam berbagai platform sistem operasi antara lain Windows, Linux, Unix, Sun OS dan lain-lain.
14
2.5.1 Keunggulan MySQL MySQL begitu popular di kalangan web karena MySQL memang cocok bekerja di lingkungan tersebut. MySQL merupakan salah satu jenis database server yang sangat terkenal, kepopulerannya disebabkan karena MySQL menggunakan SQL sebagai bahasa dasar untuk mengakses database-nya. MySQL itu sendiri bersifat free untuk digunakan berbagai plaform kecuali pada Windows yang bersifat shareware jika digunakan untuk keperluan produksi (Kadir, 2008). MySQL mempunyai beberapa kelebihan dibanding database lain, diantaranya adalah (Nugroho, 2004) 1. MySQL sebagai Database Management System (DBMS). 2. MYSQL sebagai Relation Database Management System (RDBMS). 3. MySQL adalah sebuah sofware database yang open source. 4. MySQL adalah sebuah database server maupun client. 5. MySQL mampu menerima query yang bertumpuk dalam satu permintaan atau yang disebut Multi-Threading. 6. MySQL merupakan sebuah database yang mampu menyimpan data berkapasitas sangat besar hingga gigabyte sekalipun. 7. MySQL didukung oleh driver ODBC, artinya database MySQL dapat diakses dengan menggunakan aplikasi apa saja. 8. MySQL adalah database yang menggunakan encryption password. Jadi database ini cukup aman karena memilki password untuk mengaksesnya. 9. MySQL merupakan server database yang multiuser, artinya database ini tidak hanya digunakan oleh sepihak orang akan tetapi merupakan database yang digunakan oleh banyak pengguna. 10. MySQL memiliki kecepatan dalam pembuatan tabel maupun peng-update-an tabel. Fitur-fitur yang dimiliki MySQL memang yang biasanya banyak dibutuhkan dalam aplikasi web, misalnya klausa limit SQL yang praktis untuk melakukan paging, atau jenis indeks field fulltext untuk full text searching, atau kekayaaan fungsi-fungsi builtin, mulai dari memformat dan memanipulasi
15
tanggal, mengolah string, regex, enkripsi dan hashing, dan yang terakhir misalnya praktis untuk melakukan penyimpanan password anggota situs. MySQL memiliki overhead koneksi yang rendah. Kecepatan melakukan transaksi atau kinerja di kondisi load tinggi bisa diperdebatkan atau dibandingkan dengan berbagai benchmark berbeda, MySQL tetap unggul di beberapa faktor. Karakteristik ini membuat MySQL cocok bekerja dengan aplikasi CGI, di mana di setiap request skrip akan melakukan koneksi, mengirimkan satu atau lebih perintah SQL, lalu memutuskan koneksi lagi. Cobalah melakukan hal ini dengan Interbase atau bahkan Oracle, maka dengan load beberapa request per detik saja server web/database Anda mungkin akan segera menyerah karena tidak bisa mengimbangi beban ini. 2.5.2 Tipe Data MySQL MySQL mendukung beberapa tipe data yaitu tipe data numerik, tipe data string, tipe data waktu, tipe data enum dan tipe data set. Berikut penjelasan tipe data dan jangkauan serta memori yang dibutuhkan dari masing masing tipe data (http://dev.mysql.com/doc/). 1.
Tipe data numerik
Tabel 2.7 Tipe data numerik Tipe Data
Jangkauan Signed
Jangkauan Unsigned
Memory
TINYINT
(-128) – 127
0 - 255
1 Byte
SMALLINT
(-32768) – 32767
0 - 65535
2 Byte
MEDIUM INT
(-8388608) - 8388607
0 - 16777215
3 Byte
0 - 4294967295
4 Byte
(-2147483648) INT
– 2147483647 (-9223372036854775808) –
0
9223372036854775807
- 18446744073709551615
FLOAT(M,D)
Tergantung nilainya
-
4 Byte
DOUBLE(M,D)
Tergantung nilainya
-
8 Byte
DECIMAL(M,D)
Tergantung nilainya
-
M + 2 Byte
BIG INT
8 Byte
16
2.
Tipe data string
Tabel 2.8 Tipe data string Tipe Data
Max Size
Memory
CHAR(X)
255 Byte
X Byte
VARCHAR(X)
255 Byte
X+1 Byte
TINYTEXT
255 Byte
X+1 Byte
TINYBLOB
255 Byte
X+2 Byte
TEXT
65535 Byte
X+2 Byte
BLOB
65535 Byte
X+2 Byte
MEDIUMTEXT
1,6 Mega Byte
X+3 Byte
MEDIUMBLOB
1,6 Mega Byte
X+3 Byte
LONGTEXT
4,2 Giga Byte
X+4 Byte
LONGBOB
4,2 Giga Byte
X+4 Byte
3.
Tipe data waktu
Tabel 2.9 Tipe data waktu Tipe Data
Format Standar
Zero Values
Memory
DATETIME
YYYY-MM-DD HH:MM:SS
0000-00-00 00:00:00
8 Byte
DATE
YYYY-MM-DD
0000-00-00
3 Byte
TIME
HH:MM:SS
00:00:00
3 Byte
YEAR
YYYY
0000
1 Byte
TIMESTAMP
YYYYMMDDHHMMSS
00000000000000
4 Byte
4.
Tipe Data Enum dan SET Tipe data ENUM digunakan untuk kolom yang hanya boleh diisi
berdasarkan suatu list tertentu yang didefinisikan ketika pembuatan tabel. ENUM menampung maksimum 65535 karakter pada setiap elemennya. Satu baris hanya dapat menyimpan salah satu dari pilihan yang ada. Pendefinisiannya adalah sebagai berikut: (http://www.slideshare.net/materikuliah/tipe-data-pada-mysql) Nama kolom ENUM (‘pil1’,’pil2’, .... ,’piln’)
Tipe data SET mirip dengan tipe data ENUM, tetapi dalam satu baris data dapat menyimpan lebih dari pilihan yang ada (maks 64 elemen). Pendefinisiannya adalah sebagai berikut :
17
Nama kolom SET (‘pil1’,’pil2’, .... ,’piln’)
2.5.3 Management User MySQL Menurut Priyanto (2007) salah satu fasilitas penting dari sebuah produk RDBMS adalah fasilitas management user. MySQL mendukung fasilitas management user, melalui MySQL bisa dibatasi hak akses seorang user berdasarkan tingkatan masing-masing sesuai dengan kepentingannya. MySQL menciptakan sebuah database yang bernama mysql untuk keperluan proses kerjanya. Database tersebut terdiri atas beberapa tabel yang menyimpan data MySQL mulai dari user, fungsi dan lain-lain. Management user pada MySQL dilakukan dengan membuat user, menghapus user, dan memberikan hak/privileges kepada user, menghapus hak user, dan mengganti password user.
Gambar 2.3 Isi database MySQL
18
1.
Membuat user Membuat user dalam MySQL menggunakan perintah CREATE USER seperti berikut : create user [nama user]@[webserver] identified by [password];
Contoh : create user ‘adi’@’localhost’ identified by ‘12345’;
Hasil run dari perintah diatas ditampilkan pada Gambar 2.4 sebagai berikut :
Gambar 2.4 Tampilan hasil create user MySQL
2.
Menghapus user Menghapus user dalam MySQL menggunakan perintah DROP USER seperti berikut : drop user [nama_user]@[webserver];
Contoh : drop user ‘adi’@’localhost’;
Hasil run dari perintah diatas ditampilkan pada Gambar 2.5 sebagai berikut :
Gambar 2.5 Tampilan hasil delete user MySQL
3.
Memberikan hak (privileges) kepada user Pemberikan hak kepada user pada MySQL menggunakan perintah GRANT seperti berikut : Grant privileges on [nama_database] to [nama_user]@[webserver] identified by [password];
19
Contoh : Grant all on db_replikasi.* to ‘adi’@’localhost’ identified by ‘12345’;
Hasil run dari perintah diatas ditampilkan pada Gambar 2.6 sebagai berikut :
Gambar 2.6 Tampilan hasil pemberian hak kepada user MySQL
Tabel 2.10 Privileges user MySQL Hak
Keterangan
ALL
memberikan hak akses penuh kepada seorang user, kecuali perintah GRANT
ALTER ALTER ROUTINE CREATE CREATE ROUTINE CREATE TEMPORARY TABLES CREATE USER CREATE VIEW DELETE DROP EVENT
EXECUTE
FILE
mengizinkan user untuk menggunakan perintah ALTER TABLE mengizinkan user untuk mengubah struktur (schema) dari sebuah fungsi tersimpan dan prosedur tersimpan mengizinkan user untuk menggunakan perintah CREATE TABLE mengizinkan user untuk membuat fungsi tersimpan dan prosedur tersimpan mengizinkan user untuk menggunakan perintah CREATE TEMPORARY TABLE (HEAP) mengizinkan user untunk menggunakan perintah CREATE USER, DROP USER, RENAME USER, dan REVOKE ALL PRIVILIGES mengizinkan user untuk menggunakan perintah CREATE VIEW mengizinkan user untuk menggunakan perintah DELETE mengizinkan user untuk menggunakan perintah DROP TABLE mengizinkan user untuk membuat penjadwalan perintah SQL (Event Scheduler). Hak ini hanya dapat anda temui pada MySQL versi 5.1.6 ke atas mengizinkan user untuk menjalankan fungsi tersimpan dan prosedur tersimpan. mengizinkan user untuk menggunakan perintah SELECT …INTO OUTFILE, LOAD DATA INFILE dan proses replikasi
20
mengizinkan user untuk menggunakan perintah CREATE INDEK dan DROP
INDEX
INDEX
INSERT
mengizinkan user untuk menggunakan perintah INSERT
LOCK TABLES
mengizinkan user untuk menngunakan perintah LOCK TABLES
PROCESS
mengizinkan user untuk menggunakan perintah SHOW FULL PROCESSLIST
RELOAD
mengizinkan user untuk menggunakan perintah FLUSH
REPLICATION
mengizinkan user untuk mendapatkan informasi komputer Master atau
CLIENT
Slave
REPLICATION
mengizinkan user dari komputer slave untuk membaca file Binary Log pada
SLAVE
komputer Master untuk proses replikasi
SELECT
mengizinkan user untuk menggunakan perintah SELECT
SHOW DATABASE SHOW VIEW
mengizinkan user untuk menggunakan perintah SHOW DATABASE mengizinkan user untuk menggnakan perintah SHOW CRETAE VIEW mengizinkan user untuk menghentikan server MySQL melalui aplikasi
SHUTDOWN
mysqladmin mengizinkan user untuk menggunakan perintah CHANGE MASTER, KILL, PURGE MASTER LOGS, dan SET GLOBAL, perintah dari aplikasi mysqladmin
SUPER
debug, dan mengizinkan untuk melakukan koneksi pada Server MySQL meskipun nilai dari variabel max_connections dilampaui mengizinkan user untuk membuat dan menghapus objek trigger. Hak ini
TRIGGER
hanya tersedia dalam MySQL versi 5.1.6 ke atas
UPDATE
mengizinkan user untuk menggunakan perintah UPDATE mengizinkan user untuk login ke dalam server MySQL tetapi tanpa hak
USAGE
apapun (hanya login)
GRANT POTION
4.
mengizinkan user untuk menggunakan perintah GRANT
Mengganti password user Mengganti password user pada MySQL menggunakan perintah SET PASSWORD
seperti berikut :
Set password for [nama_user]@[webserver] = password [password baru];
21
Contoh : Set password for ‘adi’@’localhost’ = password(‘4321’);
Hasil run dari perintah diatas ditampilkan pada Gambar 2.7 sebagai berikut :
Gambar 2.7 Tampilan hasil penggantian password user MySQL
2.6
Mekanisme Replikasi MySQL Menurut Kadir (2002), Server MySQL mendukung replikasi satu arah (one
way replication) dengan satu server berperan sebagai master server dan server lain yang lain berperan sebagai slave server. Server master menuliskan binary log file yang berfungsi sebagai penanda adanya proses update data pada server master. Server slave mencocokkan binary log file server master dengan binary log file pada server slave ketika server slave melakukan koneksi ke server master, jika di temukan adanya perbedaan maka server slave akan melakukan proses peng-copy-an data dari server master.
Replikasi Master server
Slave server
Gambar 2.8 Data server master direplikasikan ke server slave.
Server slave dapat pula berperan sebagai server master bagi server slave yang lain. Kondisi ini dikenal dengan istilah replikasi berantai (Gambar 2.9)
22
Replikasi
Replikasi Master server
Slave server pertama
Slave server kedua
Gambar 2.9 Gambaran replikasi berantai
Proses replikasi satu arah hanya mengijinkan proses UPDATE tabel secara langsung atau proses INSERT berlangsung pada server master saja, jika UPDATE atau INSERT pada server slave maka kemungkinan terjadinya konflik antar server sangat besar. Replikasi MySQL didasarkan pada catatan server tentang seluruh perubahan database (update, delete, dan lain-lain) dalam log biner, dan server slave membaca query yang disimpan dari log biner server master, sehingga slave dapat mengeksekusi query yang sama pada backup data yang dimilikinya. Penting untuk diketahui adalah bahwa log biner adalah catatan sederhana dari database. Slave manapun yang kita setup akan membutuhkan salinan dari seluruh data master yang ada sejak log biner diaktifkan karena jika slave dijalankan dengan data yang tidak sama dengan yang ada pada master pada saat log biner dijalankan, maka slave kita akan gagal untuk melakukan replikasi.
2.7
Structured Query Language ( SQL ) SQL adalah bahasa standar yang meliputi perintah-perintah untuk
menyimpan, menerima, memelihara dan mengatur akses-akses ke database serta digunakan untuk memanipulasi dan menampilkan data dari RDBMS. SQL mempunyai kemampuan dalam query (memperoleh data), pendefinisian struktur data, pengubahan data, pengaturan keamanan data dan kemampuan lainnya. SQL juga diterapkan pada internet atau intranet untuk mengakses data melalui halaman web, untuk mendukung konsep web dinamis.
23
Elemen dasar SQL mencakup pernyataan, nama, tipe data, konstanta, ekspresi, dan fungsi bawaan. Pernyataan adalah perintah SQL yang meminta suatu tindakan kepada DBMS. Beberapa pernyataan dasar SQL dapat dilihat pada Tabel 2.11 Nama digunakan sebagai identitas bagi obyek-obyek pada DBMS (tabel, kolom dan pengguna). Ekspresi adalah segala sesuatu yang menghasilkan nilai. Beberapa simbol yang dapat digunakan pada ekspresi aritmatika dapat dilihat pada Tabel 2.12. Fungsi bawaan adalah sebuah sub-program yang menghasilkan suatu nilai jika dipanggil. SQL memiliki fungsi bawaan seperti MIN untuk mencari nilai terkecil dan AVG untuk mencari nilai rata-rata. Tabel 2.11 Pernyataan-pernyataan dasar SQL Pernyataan
Keterangan
ALTER
Mengubah struktur tabel
COMMIT
Mengakhiri sebuah eksekusi transaksi
CREATE
Menciptakan tabel, indeks atau pandangan
DELETE
Menghapus baris pada tabel
DROP
Menghapus tabel, indeks atau pandangan
GRANT
Menugaskan hak terhadap database kepada pengguna
INSERT
Menambahkan sebuah baris pada tabel
REVOKE
Membatalkan hak terhadap database
ROLLBACK
Mengembalikan ke keadaan semula sekiranya suatu transaksi gagal dilaksanakan
SELECT
Memilih baris dan kolom pada tabel
UPDATE
Mengubah nilai pada sebuah baris
Tabel 2.12 Simbol pada Ekspresi Aritmatika Simbol
Keterangan
*
Perkalian
/
Pembagian
+
Penjumlahan
-
Pengurangan
24
2.7.1 Struktur dasar SQL Sebuah ekspresi SQL dasar sebenarnya hanya terdiri atas 3 klausa, yaitu : select, from dan where. Klausa select digunakan untuk menetapkan daftar atribut (field) yang diinginkan sebagai hasil query. Klausa from digunakan untuk menetapkan tabel atau gabungan tabel yang akan ditelusuri selama query data dilakukan. Klausa where, yang sifatnya opsional digunakan sebagai predikat (kriteria) yang harus dipenuhi dalam memperoleh hasil query. Sintaks (cara penulisan) dari ekspresi SQL dasar dengan klausa tersebut adalah : SELECT A1 [ FROM t1 [
, A2, ….,An] , t2, …., tm]
[WHERE P]
dimana : A1, A2, …, An merupakan daftar atribut. t1, t2, …, tm merupakan daftar tabel. P merupakan predikat query. [ ] merupakan tanda opsional (bisa digunakan, bisa juga tidak digunakan). 2.7.2 Fungsi Agregasi Selain menampilkan nilai-nilai atribut yang ada di dalam tabel, sering pula ada kebutuhan untuk menampilkan data agregasi, seperti banyaknya record, total nilai suatu atribut, rata-rata nilai atribut, nilai atribut terbesar ataupun nilai atribut terkecil. Data agregasi semacam itu dapat diperoleh dengan menggunakan fungsifungsi berikut ini : Tabel 2.13 Fungsi agregasi Fungsi Agregasi
Kegunaan
COUNT
mendapatkan nilai banyaknya record dari hasil query
SUM
mendapatkan nilai total suatu atribut numerik hasil query
AVG
mendapatkan nilai rat-rata uatu atribut numerik hasil query
MAX
mendapatkan nilai terbesar dari suatu atribut hasil query
MIN
mendapatkan nilai terkecil dari suatu atribut hasil query
25
Contoh penggunaannya dari masing-masing fungsi agregasi tersebut adalah : a.
Menampilkan banyaknya record transaksi : SELECT count(*) FROM tb_transaksi
b.
Menampilkan total saldo seluruh nasabah : SELECT sum(saldo) FROM tb_saldo
c.
Menampilkan rata-rata saldo nasabah : SELECT avg(saldo) FROM tb_saldo
d.
Menampilkan saldo nasabah yang terbesar : SELECT max(saldo) FROM tb_saldo
e.
Menampilkan saldo nasabah yang terkecil : SELECT min(saldo) FROM tb_saldo
2.8
Algoritma ORDER Algoritma ORDER bertujuan untuk meningkatkan efisiensi dalam strategi
replikasi. Salah satunya replikasi penuh, dengan cara menganti update frekuensi dan update durasi dari masing-masing replika secara dinamis (Wei Yuan, dkk, 2003).
2.8.1 Input Algoritma ORDER Algoritma ORDER berlaku pada model transaksi periodik dengan kebutuhan data dan durasi service yang pasti. Sebuah transaksi bisa datang kapan saja dan mengandung request untuk multiple data objek dari sites yang berbeda.
26
Transaksi X TID
TD
ExeTime
SF
DS
DS Site ID
Data Type
Data ID
FR
X
Gambar 2.10 Input algoritma ORDER
Setiap transaksi yang datang oleh algoritma ORDER dispesifikasikan terdiri atas Transaction Identifier (TID), Transaction Duration (TD), Execution Time (EXETime), Slack Factor (SF), dan Data Set (DS). TID adalah penanda transaksi atau id proses dari suatu transaksi yang datang, TD adalah durasi waktu maksimal yang dibebankan kepada sistem untuk menjalankan transaksi tersebut, kemudian ExeTime merupakan waktu saat transaksi dikerjakan oleh sistem, lalu SF adalah toleransi yang diberikan oleh sistem kepada transaksi dalam hal ini berupa perulangan transaksi jika transaksi tersebut gagal dijalankan oleh sistem. Gambar 2.11 berikut ini menunjukkan perbedaan antara ExeTime, TD, dan SF.
Total waktu transaksi
TD ExeTime
SF
Gambar 2.11 Ilustrasi ExeTime,TD, dan SF
27
Data Set merupakan kumpulan data dari transaksi yang terdiri dari elemenelemen berdasarkan format berikut : Data SET [SiteID, DataType, DataID, FR] Spesifikasi dari satu data set terdiri atas informasi dari Database Identifier (SiteID), Data Type, Data Identifier (Data ID) dan Freshness Requirement (FR) dari data item bersangkutan. SiteID yang menandakan site tujuan transaksi, Datatype menjelaskan data temporal yang diproses, dataID yang menunjukan objek data yang diproses dalam suatu transaksi, dan FR yang menunjukan tingkat kebaruan data yang diproses oleh transaksi. Ketika user melakukan transaksi pada suatu site, maka site tersebut akan me-request data service berupa SiteID berdasarkan DataID ke server master replikasi. Kemudian server akan mencari SiteID dari DataID tersebut berdasarkan data yang terbaru (FR). Apabila berdasarkan FR, dataID memiliki SiteID yang berbeda dengan site transaksi terjadi, maka site FR dataID (misal site A) akan disebut sebagai master site dan site tempat transaksi terjadi (misal site B) akan disebut slave site untuk transaksi tersebut. Hasil SiteID tersebut nantinya akan dikirimkan kembali ke site B untuk melengkapi data set pada data transaksi. Setelah data set lengkap maka transaksi itu akan dijalankan oleh site B ke database site A kondisi ini disebut dengan transaksi antar site. Namun apabila berdasarkan FR, dataID memiliki siteID yang sama dengan site tempat transaksi terjadi, maka setelah data set lengkap, transaksi akan dijalankan ke database site bersangkutan dan transaksi tersebut disebut transaksi lokal. Untuk lebih jelasnya akan ditunjukkan pada Gambar 2.12 sebagai berikut :
28
Master Replikasi
Site A
Transaksi X
DS TID
TD
ExeTime
SF
DS
SiteID???
DataType
DataID
FR
TID
Database master replikasi
transaksi X TID
TD
ExeTime
SF
DS DataType
Site B
DataID
FR
DS Site B
DataType
DataID
FR
TID
Site B
Database A
Database B
Gambar 2.12 Transaksi antar site dengan algoritma ORDER
Master Replikasi
Site A Transaksi X DS TID
TD
ExeTime
SF
DS
SiteID???
DataType
DataID
FR
TID
Database master replikasi
transaksi X TID
TD
ExeTime
SF
Site A
DS DataType
DataID
FR
DS Site A
DataType
DataID
Database A
Gambar 2.13 Transaksi lokal dengan algoritma ORDER
FR
TID
29
Contoh kasus: misalkan pada transaksi simpan tarik saldo pada aplikasi perbankan. Misalkan terjadi penambahan data saldo sebesar 200.000 pada rekening nomor 146010000001 pada bank cabang denpasar, yang mana rekening dengan nomer 146010000001 terdafatar pada bank cabang kuta. Berdasarkan pada kasus diatas, 200.000 merupakan bagian dari datatype, sedangkan 146010000001 merupakan DataID-nya. Saat sistem menerima transaksi tersebut, maka sistem akan melakukan request data set ke situs master replika. Data Set yang di-request disini berupa id_site lokasi data saldo dari nomer rekening 146010000001 disimpan (cabang kuta). Setelah data id_set (cabang kuta) berhasil diperoleh maka transaksi tambah saldo tersebut akan dijalankan pada database di site cabang kuta.
2.8.2 Deskripsi Algoritma Dalam algoritma ORDER, update frekuensi dan update durasi dari semua replica dikontrol secara dinamis untuk memenuhi kebutuhan data terbaru dari suatu transaksi (FR). Ketika menerima sebuah transaksi, algoritma melakukan evaluasi untuk transaksi yang datang sekaligus menentukan lokasi dari data yang di-request oleh transaksi. Andaikata algoritma tersebut menerima request untuk melakukan ORDER objek data temporal i dari site x. Alur pembentukan replikanya dapat dijelaskan pada bagan dalam Gambar 2.14 sebagai berikut:
30
ALUR ALGORITMA SITE
MASTER REPLIKASI
start
Active replica(i)?
tidak
Create active replica(i); Current frequency(i)=new frequency(i); Register active replica (i,x);
ya
Current Frequency ≥ New frequency
ya
tidak
update active replica(i); Current frequency(i)=new frequency(i); Register active replica (i);
stop
Gambar 2.14 Alur pembentukan replika
Seperti tampak pada Gambar 2.14, ketika perintah ORDER data datang, algoritma melakukan pengecekan apakah terdapat sebuah active replica untuk remote data item yang di-request, maksud active replica disini adalah suatu objek data yang sedang direplikakan di site lain dan jika terdapat active replica maka algoritma akan membandingkan current update frequency dari replika dengan update frequency dari transaksi yang baru dan jika transaksi yang baru me-request replika di-update pada frequency yang lebih tinggi, maka frekuensi dari active replika berubah ke frekuensi baru yang di-request oleh transaksi tetapi jika frekuensi dari replika yang di-request oleh transaksi yang baru lebih kecil dari frekuensi aslinya, maka algoritma tidak perlu melakukan apapun karena current frekuensi sudah cukup tinggi. Jika tidak terdapat aktive replika untuk data item, maka menggunakan update frekuensi dan durasi dari transaksi yang baru.
31
2.9
Web server Apache Menurut Hawkins (2001), Apache server merupakan turunan dari aplikasi
yang bernama httpd server yang dibuat oleh Rob McCool di National Center for Supercomputing Applications (NCSA) pada Tahun 1995. Apache merupakan sebuah produk open source, yang berbentuk kode objek tereksekusi (executable object code) yang tidak bisa dibaca oleh manusia. Apache dan produk open source lainnya tidak hanya menyertakan executable object code, tetapi juga menyertakan kode sumber (source code). Apache dapat digunakan untuk memonitor banyak IP address (multiple IP address). Apache dapat memonitor setiap IP address dan dapat memonitor banyak port. Virtual hosting merupakan salah satu fitur dari Apache yang digunakan untuk menangani banyak situs dalam satu server. Terdapat 3 metode untuk mengkonfigurasi Apache agar dapat menangani banyak situs, yaitu user home pages, virtual hosting by name, virtual hosting by IP address. Apache dirancang agar dapat berkolaborasi dengan pengembang aplikasi lainnya. Sesuai dengan tujuan inilah maka dikenalkan Apache API (Application Programmer Interface). Apache API digunakan agar Apache dapat berinteraksi dengan aplikasi lainnya seperti CGI (mod_cgi), perl (mod_perl) dan lain-lain.
2.10 HTML (Hypertext Markup Language) Salah satu bahasa pemrograman yang digunakan untuk mendesain suatu web adalah HTML. HTML merupakan suatu format yang digunakan dalam pembuatan dokumen dan aplikasi yang berjalan dihalaman web. Bahasa pemrograman ini akan memformat teks biasa agar bisa dijalankan diatas web browser. Protokol yang digunakan untuk mentransfer data antara web server ke web browser adalah HTTP (Hypertext Transfer Protocol).
32
WEB Server
Permintaan HTTP (sesuatu.html)
Intepreter script
Kode HTML Tanggapan HTTP
Browser client
Gambar 2.15 Skema HTML
2.10.1 Sintak Dasar HTML Awal penulisan script HTML diawali dengan tanda dan diakhiri dengan , komponen secara lengkapnya adalah sebagai berikut :
judul isidata Kode Program 2.1 Sintaks HTML
2.10.2 Fasilitas HTML HTML menyediakan beberapa fasilitas seperti warna, form, tabel, tab, garis, font dan lain-lain. Fasilitas tersebut dapat dipergunakan untuk membuat desain web dan link ke web yang lainnya. Berikut adalah sintak dasar dari fasilitas tersebut. 2.10.2.1 Warna HTML menggunakan mode kombinasi RGB (red,green,blue) yang ditampilkan dalam bilangan pemanggilan warna :
hexadecimal.
Berikut
adalah sintak
dasar
33
Kode Program 2.2 Sintaks warna di HTML
Tanda #FFFFFF adalah menyatakan pemanggilan warna putih pada background web. Sedangkan tanda #000000 menyatakan warna hitam pada huruf. 2.10.2.2 Form Pemanggilan halaman lain atau halaman sendiri harus menggunakan form. Form memiliki properti dasar seperti method dan action. Method adalah metode pengiriman nilai variabel yang akan digunakan (post atau get). Action akan “mengirimkan” nilai dari variabel dengan metode yang telah dipilih sebelumnya ke halaman yang dituju. Pengiriman nilai ditandai dengan tombol submit yang diklik oleh user. Berikut adalah sintak dasar form :
Kode Program 2.3 Sintaks form di HTML
2.10.2.3 Tabel Tabel diperlukan untuk membuat data yang ditampilkan kelihatan lebih terstruktur. Tabel akan memberikan properti seperti border, ukuran kolom, rules, cellpadding, cellspacing dan lain-lain. Berikut adalah sintak dasar pembuatan tabel :
Kode Program 2.4 Sintaks form di HTML
Memasukkan data kedalam tabel diperlukan tag berupa
dan , dalam suatu baris yang sama maka diulisan satu tanda |
|
dan beberapa tanda
| di dalamnya untuk menentukan kolom dalam baris tersebut.
34
2.10.2.4 Format Karakter Karakter dalam halaman web dapat diatur sesuai dengan keinginan baik ukuran, jenis maupun warnanya dengan menggunakan tag
. Atribut tag
antara lain:
- size
= Angka, adalah ukuran huruf (default-nya 3)
- color = Warna huruf (default-nya hitam) - face
= Jenis huruf (default-nya Times New Roman)
Tag ragam karakter antara lain: teks// Menghasilkan huruf tebal teks// Menghasilkan huruf miring teks// Menghasilkan huruf bergaris bawah Kode Program 2.5 Contoh sintaks form di HTML
2.10.2.5 Menampilkan gambar HTML dapat menampilkan gambar dihalaman web dengan menggunakan tag . Kode Program 2.6 Sintaks gambar di HTML
Atribut elemen antara lain: - src
= lokasi file gambar
- alt
= teks alternatif
- width
= pixel/lebar gambar
- height = pixel/tinggi gambar - align
= [ top | middle | bottom | left | right] (penataan gambar)
- border = pixel/tebal garis tepi gambar
2.10.2.6 Membuat Link Elemen link berfungsi untuk menghubungkan halaman satu dengan halaman lain atau ke URL lain. Format tag link adalah: hypertext Kode Program 2.6 Sintaks link di HTML
35
URL_Tujuan bernilai lokasi dan nama file yang akan dituju, sedangkan teks hypertext akan ditampilkan di browser sebagai penghubung.
2.11 PHP (Hypertext Preprocessor) PHP (Hypertext Preprocessor) adalah sebuah bahasa scripting yang terpasang pada HTML. Sebagian besar sintaks mirip dengan bahasa C, Java dan Perl, ditambah beberapa fungsi PHP yang spesifik. Database pasangannya biasanya MySQL, dijalankan bersama webserver Apache diatas operating system tertentu. Tujuan utama bahasa ini adalah untuk memungkinkan perancang web menulis halaman web dinamik dengan cepat. 2.11.1 Konsep Kerja PHP Metode kerja PHP diawali dengan permintaan suatu halaman web oleh browser, berdasarkan Uniform Resource Locator (URL) atau dikenal dengan sebutan alamat internet. Browser mendapatkan alamat dari web server, mengidentifikasi halaman yang dikehendaki dan menyampaikan segala informasi yang dibutuhkan oleh web server. Selanjutnya web server akan mencarikan berkas PHP yang diminta dan setelah didapatkan, isinya akan segera dikirimkan ke mesin PHP dan mesin inilah yang memproses dan memberikan hasilnya berupa kode HTML ke web server. Lalu web server akan menyampaikan isi halaman web tersebut kepada pengguna melalui browser. Jadi proses kerja PHP tetap mempergunakan HTML sebagai penerjemah visual dari hasil proses PHP. WEB Resources
WEB Server
Kode PHP
Permintaan HTTP (sesuatu.html) Intrepeter PHP
Kode HTML Browser client
Tanggapan HTTP
Gambar 2.16 Interface antara PHP dan HTML
36
Halaman web biasanya disusun dari kode-kode html yang disimpan dalam sebuah file berekstensi *html. File html ini dikirimkan oleh server ke browser, kemudian browser menerjemahkan kode-kode tersebut sehingga menghasilkan suatu tampilan yang indah. Lain halnya dengan program php, program ini harus diterjemahkan oleh web-server sehingga menghasilkan kode html yang dikirim ke browser agar dapat ditampilkan. Program ini dapat berdiri sendiri ataupun disisipkan di antara kode-kode html sehingga dapat langsung ditampilkan bersama dengan kode-kode html tersebut. Program php dapat ditambahkan dengan mengapit program tersebut di antara tanda dan ?>. Tanda-tanda tersebut biasanya disebut tanda untuk escaping (kabur) dari kode html. File html yang telah dibubuhi program php harus diganti ekstensi-nya menjadi *php atau *php3. PHP merupakan bahasa pemograman web yang bersifat server-side HTML=embedded scripting, di mana script-nya menyatu dengan HTML dan berada di server. Artinya adalah sintaks dan perintah-perintah yang kita berikan akan sepenuhnya dijalankan di server tetapi disertakan HTML biasa. PHP dikenal sebagai bahasa scripting yang menyatu dengan tag HTML, dieksekusi di server dan digunakan untuk membuat halaman web yang dinamis seperti ASP (active Server Pages) dan JSP (Java Server Pages). 2.11.2 Kelebihan PHP Menurut Kadir (2008), PHP memiliki banyak kelebihan yang tidak dimiliki oleh bahasa script sejenis. Banyak keuntungan yang dapat diperoleh jika menggunakan PHP diantaranya sebagai berikut: 1.
PHP dapat digunakan pada semua sistem operasi antara lain Linux, Unix, Windows, Mac OS X, RISC OS.
2.
PHP mendukung banyak web server seperti Apache,Microsoft Internet Information Server (MIIS), Personal Web Server (PWS), Netscape, dan banyak lagi yang lainnya.
3.
Tingkat keamanan yang cukup tinggi.
4.
Waktu eksekusi yang lebih cepat dibandingkan dengan bahasa pemograman web lainnya yang berorientasi pada server-side scripting.
5.
Akses ke system database (MySQL) yang lebih fleksibel.
37
2.11.3 Sintak PHP PHP adalah bahasa pemrograman server-side scripting yang menyatu dengan HTML untuk membuat halaman web yang dinamis. Maksud dari serverside scripting adalah sintaks dan perintah yang diberikan akan sepenuhnya dijalankan di server tetapi disertakan pada dokumen HTML. Ada beberapa cara menuliskan scrip PHP, yaitu: //Script PHP anda ?> <% //Script PHP anda %> <script language=”PHP”> //Script PHP anda
Kode Program 2.7 Penulisan sintaks PHP
2.11.4 Tipe data PHP Menurut Kadir (2008), terdapat beberapa tipe data PHP diantaranya sebaga berikut : Integer : menyatakan tipe data bilangan bulat dengan jangkauan kira-kira dari 2 milyar hingga +2 milyar. Double : menyatakan tipe data bilangan real atau titik mengambang, yaitu bilangan yang mempunyai bagian pecahan. String : menyatakan tipe data teks (sederetan karakter yang tidak menyatakan bilangan) Boolean : merupakan tipe data yang digunakan untuk menyatakan nilai kebenaran. Nilainya dapat berupa TRUE atau FALSE.
38
2.11.5 Kompatibilitas Variabel Dalam PHP, variabel dapat secara otomatis ditaksir jenisnya tanpa harus didefinisikan terlebih dahulu. Misalnya $a = "5" (huruf lima) yang merupakan sebuah string dapat dijumlahkan dengan sebuah integer lain (mis. $b = $a + 2;).
Dalam hal ini, $a dianggap sebagai sebuah variabel integer. Sebaliknya,
sebuah variabel integer dapat dijumlahkan dengan string sehingga membentuk suatu string lain. Adapun beberapa aturan penting penulisan variabel PHP adalah sebagai berikut : Variabel harus dimulai dengan karakter “$” (tanda dollar). Tidak boleh diawali dengan angka, tetapi dengan huruf atau underscore “_”. Tidak boleh mengunakan tanda baca. Case sensitive atau membedakan huruf kecil dan besar.
2.11.6 Flow Kontrol Flow kontrol dalam PHP dapat dibagi menjadi 2 bagian, yaitu percabangan (if-else) dan perulangan (for,foreach,while, do-while). Penjelasan mengenai kedua bagian tersebut akan dijelaskan pada urain berikut ini. 2.11.6.1 Percabangan Percabangan, atau sering disebut juga dengan istilah decision-making, memungkinkan aplikasi untuk memeriksa isi suatu variabel atau hasil perhitungan ekspresi dan mengambil tindakan yang sesuai. Ada dua jenis percabangan, dipilih berdasarkan kriteria pemeriksaan dan jumlah pilihan yang tersedia. Berikut adalah sintak dasar untuk if - else : if(condition){ // statement 1 } else{ // statemant 2 } // statement 3 Kode Program 2.8 Sintaks if pada PHP
39
Aliran program : 1.
Condition akan diperiksa
2.
Bila bernilai true, statement 1 akan dijalankan
3.
Bila bernilai false, statement 2 akan dijalankan
4.
Dilanjutkan ke statement 3
Sintak dasar untuk if-elseif-else if(condition1){ // statement 1 } elseif(condition2){ // statement 2 } else{ // statement 3 } // statement 4 Kode Program 2.9 Sintaks if-else pada PHP
Ada 3 kemungkinan aliran program : 1.
Apabila condition 1 bernilai true : a. Statement 1 dijalankan b. Dilanjutkan ke Statement 4
2.
Apabila condition 1 bernilai false, dan condition 2 bernilai true : a. Statement 2 dijalankan b. Dilanjutkan ke Statement 4
3.
Apabila condition 1 dan condition 2 bernilai false : a. Statement 3 dijalankan b. Dilanjutkan ke Statement 4
2.11.6.2 Perulangan PHP menyediakan beberapa fungsi untuk melakukan perulangan, diantaranya adalah sebagai berikut :
40
1.
Perulangan For Looping dengan for disebut juga determinate loop, artinya looping yang
jumlah pengulangannya (iterasi) telah ditentukan di awal looping. Perintah FOR difungsikan untuk mengulangi perintah dengan jumlah perulangan yang sudah di ketahui. Pada perintah ini kita tidak perlu menuliskan sebuah kondisi utuk diuji.. Kita hanya menuliskan nilai awal dan akhir variabel perhitungan. Nilai ini akan secara otomatis bertambah dan berkurang tiap kali sebuah pengulangan dilaksanakan. Sintaknya adalah : for (nilai_awal, nilai_akhir, peningkatan/penurunan) { pernyataan yang akan dijalankan } Kode Program 2.10 Sintaks for pada PHP
Perintah ini digunakan untuk melakukan iterasi pada sebuah nilai array. Sintaknya adalah : foreach (ekspresi_array as $nilai/value) { operasi program; } Kode Program 2.11 Sintaks foreach pada PHP
2.
While Perintah while digunakan untuk mengulangi sbuah perintah sampai pada
jumlah tertentu. Untuk menghentikan pengulangan digunakan suatu kondisi tertentu. Nilai kondisi ini memiliki hasil akhir berupa false dan true seperti layaknya perintah if…else . Pengulangan akan terus berlanjut jika kondisi masih menunjukkan nilai benar. Sintaknya adalah : While (kondisi) { Pernyataan yang akan dijalankan } Kode Program 2.12 Sintaks while pada PHP
41
3.
Do..while Prinsipnya, metode penggunaan do..while dengan while hampir sama,
tetapi yang membedakannya adalah terletak pada eksekusi operasi program. Pada pernyataan while, maka persyaratan terlebih dahulu diperiksa, jika persyaratan bernilai true maka proses eksekusi bias dijalankan. Tetapi proses pada do..while adalah operasi program dieksekusi terlebih dahulu baru kemudian persyaratannya diperiksa. Jika persyaratannya true, maka loop akan terus dijalankan, loop hanya akan berhenti jika proses memiliki hasil false. Oleh karena itu operasi program minimal dapat dieksekusi sekali. Sintak dasar : Do { pernyataan yang akan dijalankan } while (kondisi) Kode Program 2.13 Sintaks do-while pada PHP
2.11.7 Fungsi Fungsi merupakan sekumpulan perintah operasi program yang dapat menerima argumen input dan dapat memberikan hasil output berupa sebuah nilai atau sebuah hasil operasi. Fungsi dideklarasikan dengan statement function diikuti nama fungsi dan beberapa variable input jika ada. PHP kaya dengan fungsi-fungsi untuk mengolah string, kode html, file dan terutama akses terhadap berbagai macam database. Dokumentasi lengkap dapat ditemukan dalam manual PHP. Dalam pemograman, ada dua macam subrutin yaitu prosedur dan fungsi. Perbedaannya adalah jika fungsi berguna untuk mengembalikan nilai tertentu sedangkan prosedur tidak mengembalikan nilai tersebut. Sintak fungsi dalam PHP adalah : Function nama_function (variabel yg diperlukan) { kode perintah } Kode Program 2.14 Kode program function pada PHP
42
2.12 GNU Wget GNU Wget adalah sebuah program komputer sederhana yang mengambil materi dari web server, dan merupakan bagian dari Proyek GNU. Namanya diturunkan dari World Wide Web dan get, konotatif dari fungsi primer-nya. Program ini mendukung pengunduhan melalui protokol HTTP, HTTPS, dan FTP, protokol berbasis TCP/IP yang paling luas digunakan untuk penjelajahan web. Fitur-fiturnya meliputi pengunduhan rekursif, konversi pranala untuk peninjauan offline dari HTML lokal, mendukung proxy, dan lebih banyak lagi. Pertama kali muncul pada Tahun 1996, dilatar belakangi oleh ledakan penggunaan web, menyebabkan penggunaan yang luas di antara para pengguna Unix dan distribusi Linux terkemuka. Ditulis mengunakan bahasa C portable, Wget dapat diinstall secara mudah pada sistem mirip UNIX apa saja dan telah diportasi ke beberapa lingkungan, termasuk Mac OS X, Microsoft Windows, Open VMS dan Amigos OS. Wget digunakan sebagai basis program-program GUI semisal Gwget untuk desktop GNOME. Dirilis di bawah Lisensi Publik Umum GNU v3, Wget adalah perangkat lunak bebas (http://www.gnu.org/software/wget/manual/).
2.13 Perangkat Pemodelan Sistem Perangkat pemodelan sistem terdiri dari beberapa bagian, yaitu: 2.13.1 Flowchart Simbol-simbol dalam flowchart adalah sebagai berikut: 1.
; Terminal. Menunjukkkan awal atau akhir suatu proses.
2.
; Preparation. Persiapan proses atau pemberian nilai awal.
3.
; Data. Menunjukkan proses masukkan, pembacaan atau percetakan data.
43
4.
; Process. Menunjukkan proses pelaksanaan instruksi (selain proses percabangan).
5.
; Decision Menunjukkkan proses pemilihan alternative atau pengecekan kondisi.
6.
; Predefined Process. Menunjukkan proses yang telah didefinisikan.
7.
; Connector. Merupakan penghubung pada satu halaman.
8.
; Off-page connector. Merupakan penghubung pada halaman lain.
9.
; Document Merupakan dokumen (arsip) dari hasil proses.
10.
; Arrow. Merupakan arah aliran proses.
44
DAFTAR ISI
Contents BAB II TINJAUAN PUSTAKA........................................................................... 5 2.1
Definisi Database dan DBMS .................................................................. 5
2.2
Sistem Database Terdistribusi ................................................................. 5
2.2.1 2.3
Keuntungan dan Kerugian Basis Data Terdistribusi ......................... 6
Fragmentasi .............................................................................................. 6
2.3.1
Fragmentasi Horizontal ..................................................................... 7
2.3.2
Fragmentasi Vertikal ......................................................................... 8
2.4
Replikasi ................................................................................................. 10
2.4.1
Jenis Jenis Replikasi........................................................................ 10
2.4.2
Keuntungan dan Kerugian Replikasi .............................................. 12
2.5
MySQL ................................................................................................... 13
2.5.1
Keunggulan MySQL ....................................................................... 14
2.5.2
Tipe Data MySQL ........................................................................... 15
2.5.3
Management User MySQL ............................................................. 17
2.6
Mekanisme Replikasi MySQL ............................................................... 21
2.7
Structured Query Language ( SQL ) ...................................................... 22
2.7.1
Struktur dasar SQL.......................................................................... 24
2.7.2
Fungsi Agregasi .............................................................................. 24
2.8
Algoritma ORDER ................................................................................. 25
2.8.1
Input Algoritma ORDER ................................................................ 25
2.8.2
Deskripsi Algoritma ........................................................................ 29
2.9 2.10
Web server Apache ................................................................................. 31 HTML (Hypertext Markup Language) ............................................... 31
45
2.10.1
Sintak Dasar HTML ........................................................................ 32
2.10.2
Fasilitas HTML ............................................................................... 32
2.11
PHP (Hypertext Preprocessor) ........................................................... 35
2.11.1
Konsep Kerja PHP .......................................................................... 35
2.11.2
Kelebihan PHP ................................................................................ 36
2.11.3
Sintak PHP ...................................................................................... 37
2.11.4
Tipe data PHP ................................................................................. 37
2.11.5
Kompatibilitas Variabel .................................................................. 38
2.11.6
Flow Kontrol ................................................................................... 38
2.11.7
Fungsi .............................................................................................. 41
2.12
GNU Wget .......................................................................................... 42
2.13
Perangkat Pemodelan Sistem .............................................................. 42
2.13.1
Flowchart ........................................................................................ 42
46
DAFTAR GAMBAR
Gambar 2.1 Tingkat availabilitas suatu data ......................................................... 12 Gambar 2.2 Replikasi server dan resource database............................................ 13 Gambar 2.3 Isi database MySQL .......................................................................... 17 Gambar 2.4 Tampilan hasil create user MySQL ................................................ 18 Gambar 2.5 Tampilan hasil delete user MySQL ................................................. 18 Gambar 2.6 Tampilan hasil pemberian hak kepada user MySQL ...................... 19 Gambar 2.7 Tampilan hasil penggantian password user MySQL ........................ 21 Gambar 2.8 Data server master direplikasikan ke server slave. ........................... 21 Gambar 2.9 Gambaran replikasi berantai.............................................................. 22 Gambar 2.10 Input algoritma ORDER ................................................................ 26 Gambar 2.11 Ilustrasi ExeTime,TD, dan SF ......................................................... 26 Gambar 2.12 Transaksi antar site dengan algoritma ORDER .............................. 28 Gambar 2.13 Transaksi lokal dengan algoritma ORDER ................................... 28 Gambar 2.14 Alur pembentukan replika ............................................................. 30 Gambar 2.15 Skema HTML .................................................................................. 32 Gambar 2.16 Interface antara PHP dan HTML ................................................... 35
47
DAFTAR TABEL Tabel 2.1 Tabel nasabah ......................................................................................... 7 Tabel 2.2 Tabel nasabah1 ........................................................................................ 8 Tabel 2.3 Tabel nasabah2 ........................................................................................ 8 Tabel 2.4 Tabel fragmentasi vertikal nasabah1 ....................................................... 9 Tabel 2.5 Tabel fragmentasi vertikal nasabah2 ....................................................... 9 Tabel 2.6 Tabel fragmentasi vertikal nasabah3 ...................................................... 9 Tabel 2.7 Tipe data numerik ................................................................................ 15 Tabel 2.8 Tipe data string ..................................................................................... 16 Tabel 2.9 Tipe data waktu .................................................................................... 16 Tabel 2.10 Privileges user MySQL ...................................................................... 19 Tabel 2.11 Pernyataan-pernyataan dasar SQL ...................................................... 23 Tabel 2.12 Simbol pada Ekspresi Aritmatika ....................................................... 23 Tabel 2.13 Fungsi agregasi ................................................................................... 24
48
DAFTAR KODE PROGRAM
Kode Program 2.1 Sintaks HTML ....................................................................... 32 Kode Program 2.2 Sintaks warna di HTML ...................................................... 33 Kode Program 2.3 Sintaks form di HTML .......................................................... 33 Kode Program 2.4 Sintaks form di HTML .......................................................... 33 Kode Program 2.5 Contoh sintaks form di HTML .............................................. 34 Kode Program 2.6 Sintaks link di HTML .......................................................... 34 Kode Program 2.7 Penulisan sintaks PHP ........................................................... 37 Kode Program 2.8 Sintaks if pada PHP ............................................................. 38 Kode Program 2.9 Sintaks if-else pada PHP ...................................................... 39 Kode Program 2.10 Sintaks for pada PHP ......................................................... 40 Kode Program 2.11 Sintaks foreach pada PHP .................................................... 40 Kode Program 2.12 Sintaks while pada PHP ..................................................... 40 Kode Program 2.13 Sintaks do-while pada PHP ................................................ 41 Kode Program 2.14 Kode program function pada PHP ....................................... 41