BAB 2 LANDASAN TEORI 2.1 Data Data adalah aliran fakta yang mewakili kejadian yang terjadi dalam organisasi atau dalam lingkungan fisik sebelum diatur menjadi sebuah bentuk yang dapat dimengerti dan digunakan oleh pengguna (Laudon, 2000, p8). Selain itu data juga dapat diartikan sebagai fakta yang dapat disimpan dan memiliki arti (Navathe, 2000, p4). Jadi, dapat disimpulkan bahwa data adalah fakta yang telah terjadi, memiliki arti, dan dapat disimpan serta dapat diatur sedemikian rupa sehingga dapat digunakan untuk berbagai tujuan. 2.2 Basis data Basis data adalah kumpulan data yang berhubungan secara logikal, dan deskripsi dari data tersebut, yang dirancang untuk memenuhi kebutuhan informasi dalam organisasi (Connolly, 2005, p15). Basis data adalah tempat penyimpanan data yang besar dan tunggal yang dapat digunakan secara bersamaan oleh banyak departemen dan pengguna. Semua data terintegrasi dengan duplikasi seminimal mungkin. Basis data menyimpan data yang saling berhubungan secara logikal. Saat menganalisis informasi kebutuhan suatu perusahaan, kita akan mengidentifikasi entity (entitas), attribute (atribut), dan relationship (hubungan). Entity adalah objek (orang, tempat, benda, konsep, atau event) dalam organisasi yang akan dimasukkan ke dalam basis data. Attribute adalah properti yang menjelaskan 6 7 aspek dari objek yang ingin dicatat. Relationship adalah hubungan antar entitas. Basis data berisi entitas, atribut, dan hubungan logikal antar entitas. 2.3 Model Data Relasional Model data adalah kumpulan konsep yang tergabung untuk mendeskripsikan dan memanipulasi data, hubungan antar data, serta batasanbatasan pada data dalam suatu organisasi, sebagai representasi objek dan event pada dunia nyata (Connolly, 2005, p43). Model data relasional ditemukan oleh Edgar F. Codd pada tahun 1970. Model data relasional adalah model data yang didasarkan pada konsep matematika dari relasi, yang secara fisik direpresentasikan sebagai tabel (Connolly, 2005, p69). Codd menggunakan terminologi yang diambil dari matematika, terutama teori set dan logika predikat. Dalam model relasional, semua data terstruktur secara logis dalam sejumlah relasi. Setiap relasi memiliki nama, dan terdiri dari sejumlah atribut data. Kelebihan dari model relasional adalah struktur logis datanya yang sederhana. Relasi digunakan untuk menyimpan informasi tentang suatu objek, untuk direpresentasikan ke dalam basis data. Relasi direpresentasikan sebagai tabel dengan kolom dan baris (Connolly, 2005, p72). 2.3.1 Struktur Data Relasional Komponen-komponen utama dari struktur data relasional antara lain adalah relasi, atribut atau field, domain, dan tuple atau record. Sebuah relasi adalah sebuah tabel dengan sejumlah kolom dan baris. Atribut atau yang lebih dikenal dengan istilah field adalah kolom dari 8 sebuah relasi. Domain adalah sekumpulan nilai yang diperbolehkan untuk satu atau banyak field. Sedangkan satu tuple atau record adalah satu baris dari relasi (Connolly, 2005, p72). Selain itu, ada juga yang disebut degree (derajat) dan cardinality. Degree adalah jumlah field yang ada dalam sebuah relasi. Sedangkan cardinality adalah jumlah tuple dalam suatu relasi (Connolly, 2005, p74). Dengan demikian, dapat disimpulkan bahwa suatu basis data relasional adalah sekumpulan relasi yang sudah ternormalisasi dengan nama relasi yang berbeda satu sama lain (unik). Relasi yang ternormalisasi di sini berarti relasi yang terstruktur dengan benar sesuai dengan kaidah normalisasi (Connolly, 2005, p74). Atribut R e l a s i BranchNo Street City Postcode B005 22 Deer Rd London SW1 4EH B007 16 Argyll St Aberdeen AB2 3SU B003 163 Main St Glasgow G11 9QX B004 32 Manse Rd Bristol BS99 1NZ B002 56 Clover Dr London NW10 6EU Degree Gambar 2.1 Contoh Struktur Data Relasional C a r d i n a l i t y 9 2.4 Database Management System (DBMS) 2.4.1 Definisi DBMS DBMS (Database Management System) adalah sistem software yang memungkinkan pengguna untuk mendefinisikan, menciptakan, memelihara, dan mengontrol akses ke basis data (Connolly, 2005, p16). DBMS menyediakan fasilitas sebagai berikut: 1) Memungkinkan pengguna mendefinisikan basis data, biasanya melalui Data Definition Language (DDL). DDL memungkinkan pengguna menspesifikasi tipe dan struktur data serta batasan data yang disimpan dalam basis data. 2) Memungkinkan pengguna untuk memanipulasi data dalam basis data yang meliputi insert, update, delete, dan retrieve, biasanya melalui Database Manipulation Language (DML). DML menyediakan fasilitas untuk menyelidiki data yang disebut query language. 3) Menyediakan pengontrolan akses ke basis data, yang meliputi: • Sistem keamanan, yang mencegah pengguna yang tidak berwenang mengakses basis data. • Sistem integritas, yang mempertahankan konsistensi data yang tersimpan. • Sistem pengontrol concurrency, yang memungkinkan akses bersamaan ke dalam basis data. • Sistem pengontrol recovery, yang akan mengembalikan basis data ke consistent state sebelum terjadi failure pada hardware atau software. 10 • Katalog yang dapat diakses oleh pengguna, yang menyimpan deskripsi data dalam basis data. Sebuah DBMS terdiri dari sepuluh fungsi utama (Connolly, 2005, p48), yaitu : 1) Penyimpanan, pengambilan, dan pengubahan (update) data 2) Katalog yang dapat diakses oleh pengguna 3) Transaction support (mendukung proses transaksi) 4) Layanan kontrol concurrency 5) Layanan recovery 6) Layanan otorisasi 7) Dukungan untuk komunikasi data 8) Layanan integritas 9) Layanan untuk mendukung data independence 10) Layanan utility Sedangkan menurut Silberschatz, DBMS adalah kumpulan data yang berhubungan dan program untuk mengakses data tersebut. Yang dimaksud kumpulan data adalah basis data, yang menyimpan informasi yang relevan bagi perusahaan. Tujuan utama DBMS adalah menyediakan cara untuk menyimpan dan mengambil (retrieve) informasi basis data dengan nyaman dan efisien (Silberschatz, 2006, p1). 2.4.2 Kelebihan dan Kekurangan DBMS Kelebihan DBMS (Connolly, 2005, p26) antara lain: • Mengontrol data redundancy (pengulangan data). 11 • Konsistensi data. • Lebih banyak informasi dari jumlah data yang sama. • Dapat berbagi data. • Meningkatkan integritas data. • Meningkatkan keamanan. • Mendukung standarisasi. • Berskala ekonomi. • Menyeimbangkan requirement yang bertentangan. • Meningkatkan akses dan respon data. • Meningkatkan produktivitas. • Meningkatkan pemeliharaan melalui data independence. • Meningkatkan concurrency. • Meningkatkan layanan backup dan recovery. Kekurangan DBMS (Connolly, 2005, p29) antara lain: • Kompleksitas • Ukuran • Biaya DBMS • Biaya hardware tambahan • Biaya konversi • Kinerja • Dampak kesalahan lebih besar 12 2.4.3 Komponen DBMS Ada 5 komponen utama DBMS (Connolly, 2005, p18), yaitu: 1) Hardware Untuk menjalankan DBMS dan aplikasi diperlukan hardware (perangkat keras). Hardware bisa berbentuk PC (personal computer), mainframe, dan jaringan komputer. Hardware yang digunakan tergantung permintaan perusahaan dan DBMS yang digunakan. Ada DBMS yang hanya dapat berjalan pada hardware dan sistem operasi tertentu, sementara ada juga DBMS yang dapat berjalan pada berbagai hardware dan sistem operasi. 2) Software Komponen software terdiri dari software DBMS sendiri dan program aplikasi, serta sistem operasi, termasuk software jaringan bila DBMS digunakan pada jaringan. Biasanya, program aplikasi ditulis dalam bahasa pemrograman generasi ketiga (3GL), seperti C, C++, Java, Visual Basic, COBOL, Fortran, Ada atau Pascal, serta dengan bahasa pemrograman generasi keempat (4GL), seperti SQL, yang ditanamkan dalam bahasa generasi ketiga. Penggunaan bahasa pemrograman generasi keempat dapat meningkatkan produktifitas secara signifikan dan menghasilkan program yang mudah dipelihara. 3) Data Data adalah komponen DBMS yang paling penting berdasarkan sudut pandang pengguna. Data berperan sebagai jembatan antara komponen mesin dan komponen manusia. Basis data mengandung data operasional 13 maupun metadata; ’data mengenai data’. Struktur basis data disebut schema. 4) Prosedur Prosedur berarti instruksi dan aturan yang mengarahkan perancangan dan penggunaan basis data. Pengguna sistem dan staf yang mengatur basis data memerlukan prosedur yang terdokumentasi mengenai cara menggunakan atau menjalankan sistem. Prosedur meliputi instruksi mengenai: • Log dalam DBMS • Menggunakan fasilitas DBMS atau program aplikasi tertentu • Memulai dan menghentikan DBMS • Membuat salinan backup dari basis data • Mengatasi kesalahan hardware atau software • Merubah struktur tabel, mengatur ulang basis data pada beberapa disk, meningkatkan kinerja, atau mengarsipkan data pada secondary storage. 5) Manusia Komponen terakhir adalah manusia yang terlibat dalam sistem, seperti data administrator, database administrator, database designer, application developer, dan end-user . 2.5 Transaction Support Sebagaimana disebutkan sebelumnya, salah satu fungsi utama dari sebuah DBMS adalah transaction support, yang berarti bahwa DBMS harus 14 menyediakan fasilitas yang dapat memastikan bahwa semua update yang berkorespondensi dengan suatu transaksi benar-benar dilakukan atau tidak sama sekali (Connolly, 2005, p49). Transaksi adalah sebuah aksi, atau deretan aksiaksi, yang dilakukan oleh pengguna atau program aplikasi, yang membaca atau melakukan perubahan terhadap isi dari basis data (Connolly, 2005, p573). Sebuah transaksi merupakan suatu unit kerja logikal (logical unit of work) dalam basis data. Ini bisa berupa keseluruhan program, sebagian dari program, atau bahkan satu baris perintah (sebagai contoh, perintah SQL INSERT atau UPDATE), dan melibatkan sejumlah operasi terhadap basis data. Dalam konteks basis data, eksekusi dari sebuah program aplikasi bisa disebut sebagai deretan transaksi-transaksi dengan proses yang bersifat non-database terselip di antaranya. Sebuah transaksi bisa memiliki dua hasil sekaligus. Jika selesai dengan sukses, transaksi dikatakan telah commit dan basis data mencapai sebuah consistent state yang baru. Consistent state di sini berarti suatu keadaan basis data yang benar. Di pihak lain, jika transaksi tidak tereksekusi dengan sukses, maka transaksi tersebut dikatakan abort. Jika transaksi abort, maka basis data harus dikembalikan ke consistent state sebelum transaksi tersebut dimulai. Ini dinamakan undo atau roll back. Setiap transaksi harus memenuhi sifat ACID (Connolly, 2005, p575), yaitu : 1) Atomicity. Sifat ‘semua atau tidak sama sekali’. Sebuah transaksi adalah unit yang tidak terbagi yang jika tidak dikerjakan secara keseluruhan maka tidak 15 dikerjakan sama sekali. Adalah tanggung jawab dari sistem recovery dalam DBMS untuk memastikan sifat ini. 2) Consistency. Sebuah transaksi harus mentransformasikan basis data dari satu consistent state ke consistent state yang lainnya. 3) Isolation. Transaksi dieksekusi secara independen atau tidak terikat dari transaksi yang lainnya. Dengan kata lain, efek dari transaksi yang tidak komplit tidak mempengaruhi transaksi lainnya. 4) Durability. Efek-efek dari sebuah transaksi yang sudah selesai secara permanen ditulis ke dalam basis data dan tidak boleh hilang jika kemudian terjadi failure. Adalah tanggung jawab dari sistem recovery untuk memastikan sifat ini. 2.6 Recovery Basis Data 2.6.1 Mengapa Diperlukan Recovery Basis Data ? Recovery basis data adalah proses mengembalikan basis data ke consistent state jika terjadi failure (Connolly, 2005, p605). Recovery basis data adalah salah satu bagian dari transaction support, yaitu fiturfitur pada DBMS yang mendukung pengelolaan transaksi-transaksi yang melibatkan basis data. Ada banyak tipe-tipe failure yang dapat mempengaruhi proses dalam basis data, yang masing-masing harus ditangani dengan cara yang berbeda. Di antaranya adalah (Garcia-Molina, 2000, p424) : 1) Kesalahan pemasukan data Ada beberapa kesalahan data tidak dapat terdeteksi. Misalnya, bila seorang pegawai salah mengetik satu digit dari nomor telepon konsumen, 16 data tersebut tetap terlihat seperti nomor telepon. Sebaliknya, bila pegawai menghilangkan satu digit dari nomor telepon konsumen, data tersebut sudah jelas salah, karena tidak memiliki pola nomor telepon. DBMS modern memiliki sejumlah mekanisme software untuk mencari kesalahan pemasukan data yang dapat terdeteksi. Triggers, program yang dieksekusi saat terjadi modifikasi terhadap basis data, digunakan untuk memeriksa data yang baru saja dimasukkan sesuatu dengan batasan yang dibuat perancang basis data. 2) Media failure Kegagalan disk lokal, kegagalan yang hanya merubah satu atau beberapa bit, biasanya bisa dideteksi dengan algoritma parity check. Kegagalan disk yang mempengaruhi hampir semua disk, terutama head crash, dimana seluruh disk menjadi tidak terbaca, biasanya diatasi dengan salah satu atau dua pendekatan berikut: • Menggunakan salah satu skema RAID sehingga bagian disk yang hilang bisa dikembalikan. • Membuat arsip, salinan dari basis data pada media seperti tape atau optical disk. Arsip tersebut dibuat secara teratur, baik arsip penuh maupun ditambahkan, dan disimpan di tempat yang aman dari basis data sendiri. • Pendekatan yang lain adalah menyimpan salinan basis data secara online dan tersebar di beberapa tempat. 17 3) Catastrophic failure Kategori ini adalah berbagai situasi dimana media yang menyimpan basis data hancur. Contoh-contoh meliputi ledakan atau kebakaran di tempat basis data tersimpan dan pengrusakan atau virus. Pendekatan yang digunakan untuk melindungi basis data dari media failure, yaitu membuat arsip, membuat salinan basis data yang tersebar, juga dapat digunakan untuk melindungi terhadap bencana. 4) System failure (kegagalan sistem) System failure adalah masalah-masalah yang dapat menyebabkan transaksi hilang. System failure biasanya berupa putusnya arus listrik dan kesalahan software. Masalah tersebut dapat menyebabkan basis data menjadi tidak konsisten. Cara mengatasi masalah-masalah yang timbulkan karena kegagalan sistem adalah mencatat (logging) semua perubahan basis data dalam log terpisah dan nonvolatile serta melakukan proses recovery bila diperlukan. 2.6.2 Fasilitas Recovery Sebuah DBMS menyediakan beberapa fasilitas untuk mendukung recovery yaitu (Connolly, 2005, p609) : • Mekanisme backup, yang membuat backup copy basis data secara berkala. • Fasilitas logging, yang berfungsi menjejaki status dari transaksi yang sedang berjalan dan perubahan basis data. 18 • Fasilitas checkpoint, yang memungkinkan update yang sedang berjalan terhadap basis data dibuat menjadi permanen. • Recovery manager, yang memungkinkan sistem untuk mengembalikan basis data ke consistent state jika terjadi failure. 2.6.3 Log File Agar dapat menjejaki transaksi-transaksi basis data, DBMS membuat sebuah file khusus yang disebut log (atau journal) yang berisikan informasi tentang semua update terhadap basis data (Connolly, 2005, p610). Log berisikan data sebagai berikut : 1) Record-record transaksi, yang berisi : • Identifier (pengenal) transaksi. • Tipe log record (transaksi start, insert, update, delete, abort, commit). • Identifier dari data item yang dipengaruhi oleh aksi-aksi basis data (operasi insert, delete, dan update). • Before-image dari data item, yang menunjukkan nilai data item tersebut sebelum perubahan (hanya operasi update dan delete). • After-image dari data item, yang menunjukkan nilai data item tersebut sesudah perubahan (hanya operasi insert dan update). • Informasi manajemen log, seperti pointer yang menunjuk ke log record yang sebelumnya atau berikutnya untuk transaksi tertentu (semua operasi). 19 2) Checkpoint records Tabel 2.1 Contoh segmen dari log file Before TID Waktu Operasi After Objek Image pPtr nPtr 0 2 1 8 0 4 3 5 4 6 5 9 Image T1 10:12 START T1 10:13 UPDATE T2 10:14 START T2 10:16 INSERT B T2 10:17 DELETE C m T2 10:17 UPDATE D n T3 10:18 START 0 11 T1 10:18 COMMIT 2 0 6 0 7 12 11 0 A j k k s CHECK 10:19 T2, T3 POINT T2 10:19 COMMIT T3 10:20 INSERT T3 10:21 COMMIT E p Tabel 2.1 di atas menggambarkan sebuah segmen dari suatu log file yang menunjukkan tiga contoh transaksi T1, T2, dan T3 yang sedang dieksekusi secara bersamaan. Kolom Waktu menunjukkan waktu 20 terjadinya operasi transaksi, sedangkan kolom pPtr dan nPtr merepresentasikan pointer yang menunjuk ke log record sebelum dan sesudah suatu log record untuk sebuah transaksi. Misalnya untuk log record kedua (pukul 10.13) untuk transaksi T1, nilai pPtr 1 berarti menunjukkan log record sebelumnya adalah log record pertama (pukul 10:12) sedangkan nilai pPtr 8 menunjukkan log record setelahnya adalah log record ke delapan (pukul 10:18). 2.6.4 Checkpoint Satu kesulitan dalam penggunaan log file untuk proses recovery basis data adalah ketika failure terjadi, tidak dapat diketahui seberapa jauh pencarian kembali harus dilakukan. Ini dapat mengakibatkan banyak transaksi yang sudah ditulis ke dalam basis data secara permanen dilakukan kembali (redo). Untuk membatasi pencarian dan proses sesudahnya yang perlu dilakukan terhadap log file, dapat digunakanteknik yang disebut checkpoint. Checkpoint adalah titik keselarasan antara basis data dan log file transaksi. (Connolly, 2005, p611) Checkpoint dijadwalkan pada interval tertentu dan melibatkan beberapa operasi berikut : • Menulis semua log record pada main memory ke dalam secondary storage. • Menulis block-block yang sudah dimodifikasi dalam database buffer ke secondary storage. 21 • Menulis sebuah checkpoint record ke log file. Record ini berisikan identifier dari semua transaksi yang aktif pada waktu checkpoint. Masalah yang dihadapi dengan teknik checkpoint di atas adalah semua transaksi harus dihentikan saat menjalankan checkpoint. Oleh karena itu, terdapat teknik yang lebih kompleks disebut nonquiescent checkpoint, yang memungkinkan transaksi baru terus dijalankan selama chekcpoint berlangsung. Langkah-langkah dalam nonquiescent checkpoint adalah (Garcia-Molina, 2000, p440): 1) Menuliskan log record <START CKPT (T1,...,Tk)> dan lakukan flush terhadap log. T1,...,Tk adalah pengidentifikasi atau nama dari semua transaksi yang sedang aktif. 2) Tunggu hingga semua transaksi T1,...,Tk di-commit atau di-abort, tapi transaksi lain boleh tetap diterima. 3) Bila semua transaksi T1,..., Tk sudah selesai, tuliskan log record <END CKPT> dan lakukan flush terhadap log. Jika transaksi dilakukan secara berurutan, maka ketika failure terjadi, kita harus memeriksa log file untuk menemukan transaksi terakhir yang dimulai sebelum checkpoint terakhir. Transaksi-transaksi sebelumnya telah commit dan itu berarti telah selesai ditulis ke dalam basis data pada saat checkpoint. Karena itu, kita hanya perlu melakukan redo terhadap transaksi yang aktif pada saat checkpoint dan transaksitransaksi sesudahnya yang melakukan start dan telah commit setelah checkpoint dan sebelum terjadi failure. Sebaliknya, transaksi lain yang sedang aktif pada saat terjadi failure harus di-undo. 22 Proses checkpoint dapat dilakukan tiga sampai empat kali dalam satu jam, yaitu sekitar 15 menit hingga 20 menit sekali. Bila terjadi system failure, proses recovery hanya perlu dilakukan terhadap transaksitransaksi yang dilakukan selama rentang waktu tersebut. T1 T2 T3 T4 T5 T6 t0 tc tf Gambar 2.2 Contoh UNDO/REDO Contoh pada Gambar 2.2 mengilustrasikan 6 transaksi, yaitu T1, T2, ..., T6 yang sedang dieksekusi secara bersamaan. DBMS dimulai pada waktu t0, tapi kemudian terjadi failure pada waktu tf. Checkpoint terjadi pada waktu tc. Pada kasus ini, transaksi T2 dan T3 sudah telah ditulis ke dalam secondary storage. Sedangkan redo harus dilakukan pada T4 yang sedang aktif pada saat checkpoint, dan pada T5 yang dimulai setelah checkpoint tetapi telah commit pada sebelum terjadi failure. Undo harus dilakukan pada transaksi T1 dan T6 yang masih aktif pada saat terjadi failure. 23 2.6.5 Teknik-Teknik Recovery Terdapat dua teknik utama untuk recovery karena kegagalan transaksi yang bukan disebabkan oleh bencana alam, yaitu deferred update dan immediate update. (Navathe, 2000, p578) Teknik deferred update tidak benar-benar mengubah basis data hingga transaksi mencapai commit point. Sebelum mencapai commit point, semua perubahan oleh transaksi direkam dalam lingkungan kerja transaksi lokal. Selama commit, perubahan yang pertama terekam dalam log akan terlebih dahulu tertulis ke dalam basis data. Bila transaksi gagal sebelum mencapai commit point, maka transaksi tersebut tidak akan mengubah basis data sehingga tidak diperlukan operasi undo. Teknik ini memerlukan operasi redo karena mungkin saja transaksi yang sudah mencapai commit point belum terekam di dalam basis data. Oleh karena itu, teknik deferred update juga disebut algoritma NO-UNDO/REDO. Teknik deferred update menggunakan log file dengan cara-cara seperti berikut (Connolly, 2005, p613): 1) Saat transaksi dimulai, tulis record transaction start pada log. 2) Bila operasi write dilakukan, tulis log record yang mengandung semua data log sebelumnya (kecuali before-image dari perubahan yang sedang dilakukan). Jangan menulis perubahan ke buffer atau ke basis data. 3) Bila transaksi akan di-commit, tulis record transaction commit pada log, tulis semua log record transaksi ke disk, dan kemudian jalankan transaksi. Gunakan log record untuk melakukan perubahan terhadap basis data. 24 4) Bila transaksi di-abort, abaikan log record transaksi dan jangan lakukan penulisan. Bila terjadi kegagalan sistem, kita dapat melakukan recovery basis data berdasarkan log file, dengan ketentuan: 1) Transaksi yang memiliki log record berupa transaction start dan transaction commit harus di-redo. 2) Transaksi yang memiliki log record berupa transaction start dan transaction abort tidak perlu dijalankan karena belum ditulis ke basis data, jadi transaksi-transaksi tersebut tidak perlu di-undo. Teknik immediate update melakukan perubahan pada basis data sebelum transaksi mencapai commit point. Meskipun demikian, operasioperasi yang dilakukan tetap dicatat dulu pada log di disk secara forcewriting sebelum dimasukkan ke dalam basis data. Bila transaksi gagal setelah perubahan dilakukan pada basis data tapi belum mencapai commit point, efek operasi pada basis data harus di-undo. Umumnya dalam kasus immediate update diperlukan undo dan redo selama recovery sehingga teknik ini dikenal dengan algoritma UNDO/REDO. Teknik immediate update menggunakan log file dengan cara-cara seperti berikut (Connolly, 2005, p614): 1) Saat transaksi dimulai, tulis record transaction start pada log. 2) Bila operasi write dilakukan, maka tulis sebuah record yang mengandung data yang diperlukan ke dalam log file. 3) Begitu log record tertulis, tulis juga perubahan yang dilakukan ke database buffer. 25 4) Update terhadap basis data akan ditulis setelah buffer ditulis ke secondary storage. 5) Ketika transaksi di-commit, tulis record transaction commit pada log. Bila terjadi kegagalan sistem, kita dapat melakukan recovery basis data berdasarkan log file, dengan ketentuan: 1) Transaksi yang memiliki log record berupa transaction start dan transaction commit harus di-redo dengan menuliskan after-image. 2) Transaksi yang memiliki log record berupa transaction start tetapi tidak terdapat transaction commit harus di-undo dengan cara menulis beforeimage dari field yang terpengaruh, dengan kata lain mengembalikan basis data ke keadaan sebelum transaksi dimulai. Selain itu terdapat variasi dari algoritma ini, dimana semua transaksi terekam ke dalam basis data sebelum transaksi mencapai commit point sehingga hanya memerlukan undo. Teknik ini disebut teknik immediate update dengan algoritma UNDO/NO-REDO. Dalam penggunaan teknik immediate update dengan algoritma UNDO/NO-REDO, bila terjadi kegagalan sistem, kita dapat melakukan recovery basis data berdasarkan log file, dengan ketentuan: 1) Transaksi yang memiliki log record berupa transaction start dan transaction commit dapat diabaikan. 2) Transaksi yang memiliki log record berupa transaction start tetapi tidak terdapat transaction commit harus di-undo dengan cara menuliskan before-image dari field yang terpengaruh, dengan kata mengembalikan basis data ke keadaan sebelum transaksi dimulai. lain 26 2.7 XML Extensible Markup Language (XML) adalah markup language umum yang dapat digunakan untuk menciptakan markup language khusus, XML mampu menjelaskan banyak jenis data yang berbeda. Dengan kata lain, XML adalah cara untuk menjelaskan data. (Wikipedia) Berbeda dengan HTML, XML tidak memiliki kumpulan tag yang diperbolehkan, melainkan harus membuat tag-tag yang diperlukan. Inilah fitur utama XML dalam representasi dan pertukaran data. Representasi XML untuk penyimpanan data memang kurang efisien, tetapi untuk pertukaran data, representasi XML memiliki keuntungan yang signifikan. Seperti SQL adalah bahasa yang dominan untuk membuat query data relasional, XML adalah format yang dominan untuk pertukaran data. (Silberschatz, 2006, p395) Kelebihan XML meliputi format yang dapat dibaca oleh manusia maupun mesin, mendukung Unicode sehingga dapat mengkomunikasikan hampir semua informasi yang tertulis dalam bahasa manusia, dapat merepresentasikan struktur data komputer yang umum, membuat algoritma parsing menjadi sangat sederhana, efisien dan konsisten. XML banyak digunakan sebagai format untuk penyimpanan dan pemrosesan dokumen karena XML memiliki standar internasional, struktur hirarkis yang sesuai untuk banyak tipe dokumen, tidak memerlukan izin (lisense) atau pembatasan, bersifat platform-independent sehingga tidak terpengaruh perubahan teknologi. (Wikipedia) 27 Kekurangan XML meliputi sintaks yang sering berulang dan bertele-tele, memiliki banyak fitur yang tidak tidak jelas, tidak mendukung tipe data tertentu seperti ”integer”, ”date”, dan sebagainya, pemetaan XML dalam paradigma relasional atau object oriented cukup rumit, dan XML hanya bisa digunakan untuk penyimpanan data hanya bila file cukup kecil. (Wikipedia) 2.7.1 Struktur Data XML Bagian dasar dokumen XML adalah element. Element adalah pasangan tag awal dan akhir, serta semua teks yang terdapat di dalam tag. (Silberschatz, 2006, p399) Dokumen XML harus mempunyai satu element root yang berisi semua element lain dalam dokumen. Element dalam dokumen XML harus disusun dengan benar, misalnya: <acccount> </account> .... <balance> ... </balance> ... Teks dapat digabungkan dengan subelement dari suatu element, sehingga sangat berguna untuk merepresentasikan data yang lebih terstruktur seperti isi basis data dalam XML, contoh: ... <account> This account is seldom used anymore. <account-number> A-102 </account-number> <branch-name> Perryridge <branch-name> <balance> 400 </balance> </account> ... 28 Selain element, dalam XML juga terdapat attribute. Attribute untuk suatu element muncul dalam bentuk pasangan name = value sebelum tag ditutup ‘>’. Attribute berbentuk string dan tidak mengandung markup. Attribute hanya muncul sekali dalam tag, berbeda dengan subelement yang diulang-ulang. Contoh : ... <account acct-type = ”checking”> <account-number> A-102 </account-number> <branch-name> Perryridge <branch-name> <balance> 400 </balance> </account> ... Karena dokumen XML dirancang untuk ditukarkan antar aplikasi, maka mekanisme namespace digunakan supaya perusahaan dalam menspesifikasi nama yang unik secara global untuk digunakan sebagai tag element dalam dokumen. Contoh: <bank xmlns: FB=”http://www.FirstBank.com”> ... <FB:branch> <FB:branchname> Downtown </FB:branchname> <FB:branchcity> Brooklyn </FB:branchcity> </FB:branch> </bank> 2.7.2 XML Schema Basis data memiliki skema, yang digunakan untuk membatasi informasi apa yang disimpan dalam basis data dan membatasi tipe data dari informasi yang disimpan. Dokumen XML dapat dibuat tanpa menggunakan skema, tetapi kurang berguna bila dokumen XML harus diproses secara otomatis sebagai bagian dari aplikasi, atau bila sejumlah besar data akan diformat dalam XML. 29 Dalam standar XML, mekanisme skema document-oriented dapat berupa Document Type Definition (DTD) dan XML Schema. (Silberschatz, 2006, p402) Kelebihan XML Schema dibanding DTD (Silberschatz, 2006, p408): 1) Memperbolehkan pembuatan tipe yang didefinisikan oleh pengguna. 2) Memungkinkan teks yang muncul dalam element dibatasi pada tipe tertentu, seperti tipe numerik dalam format tertentu. 3) Memungkinkan pembatasan tipe untuk membuat tipe tertentu, sebagai contoh dengan menentukan nilai minimum dan maksimum. 4) Memungkinkan tipe yang kompleks diperluas menggunakan bentuk inheritance. 5) XML Schema adalah superset dari DTD. 6) Memungkinkan keunikan dan foreign key. 7) Terintegrasi dengan namespace supaya bagian dokumen yang berbeda dapat disesuaikan dengan skema yang berbeda. 8) Dispesifikasi oleh sintaks XML. 2.7.3 XPath XPath adalah bahasa untuk path expression. Path expression dalam XPath adalah urutan lokasi yang dipisahkan dengan “/”. Hasil dari path expression adalah sekumpulan nilai. (Silberschatz, 2006, p409). Contoh: /bank-2/customer/name 30 Akan menghasilkan element berikut: <name>Joe<name> <name>Lisa<name> <name>Mary<name> 2.7.4 XSLT XSLT dirancang sebagai bahasa transformasi. Style sheet adalah representasi dari pilihan format dokumen, biasanya disimpan di luar dokumen, jadi format terpisah dari isi. XML Stylesheet Language (XSL) sebenarnya dirancang untuk membuat HTML dari XML, dan merupakan perluasan logikal dari style sheet HTML. Bahasa ini meliputi mekanisme transformasi umum yang disebut XSL Transformation (XSLT), yang dapat digunakan untuk mentransformasi satu dokumen XML ke dokumen XML lain, atau ke format lain, seperti HTML. Transformasi XSLT sangat kuat dan XSLT dapat berperan sebagai bahasa query. (Silberschatz, 2006, p417) Transformasi XSLT diekspresikan dalam sekumpulan aturan rekursif yang disebut template. Template untuk XSLT terdiri dari bagian match dan select, misalnya: <xsl: template match=”/bank-2/customer”> <xsl:value-of-select=”customer-name”> </xsl:template> <xsl: template match=”.”/> 2.7.5 XQuery XQuery adalah standar untuk melakukan query pada data XML. Bahasa XQuery adalah turunan dari bahasa query XML yang disebut Quilt. 31 Berbeda dengan XSLT, XQuery tidak merepresentasikan query dalam XML, sebaliknya lebih mirip query SQL dan disusun dalam ekspresi “FLWR” (dieja “flower”) yang terdiri dari 4 bagian: for, let, where, dan return. Bagian for memberikan sekumpulan variabel yang menjangkau seluruh hasil dari ekspresi XPath. Bila variabel yang dispesifikasi lebih dari satu, maka hasilnya meliputi produk Cartesian dari nilai variabel yang memungkinkan, sehingga for hampir sama dengan from dalam query SQL. Bagian let memungkinkan ekspresi yang rumit ditempatkan pada nama variabel sehingga terlihat lebih sederhana. Bagian where sama dengan SQL, yaitu melakukan pengujian tambahan untuk menggabungkan tuple dari bagian for. Dan terakhir, bagian return memungkinkan konstruksi hasil dalam format XML. (Silberschatz, 2006, p412) Contoh: for $x in /bank-2/account let $acctno :=$x/@account-number where $x/balance > 400 return <account-number> $acctno </account-number> 2.7.6 Penyimpanan Data XML dalam Basis Data Relasional Karena basis data relasional digunakan secara luas dalam aplikasi yang ada, maka menyimpan data XML dalam basis data relasional akan sangat menguntungkan sehingga data dapat diakses dari aplikasi yang ada. Beberapa pendekatan alternatif untuk menyimpan data XML (Silberschatz, 2006, p422): 32 1) Disimpan sebagai string. Cara yang sederhana untuk menyimpan data XML dalam basis data relasional adalah dengan menyimpan tiap child element dari element tingkat atas sebagai string dalam tuple yang terpisah dalam basis data. Meskipun mudah digunakan, sistem basis data tidak mengetahui skema dari elemen yang disimpan. Sehingga tidak mungkin melakukan query data secara langsung. Salah satu solusi untuk masalah ini adalah menyimpan tipe element yang berbeda dalam relasi yang berbeda juga, dan menyimpan nilai element yang penting sebagai attribute relasi supaya memungkinkan penggunaan indeks. 2) Tree representation. Data XML yang berubah-ubah dapat dimodelkan sebagai tree dan disimpan menggunakan sepasang relasi: nodes (id, type, label, value) child (child-id, parent-id) Tiap element dan attribute dalam data XML diberi pengidentifikasi yang unik. Sebuah tuple dimasukkan ke dalam relasi nodes untuk tiap element dan attribute dengan pengidentifikasi (id), tipe (attribute atau element), nama element atau attribute (label) dan nilai teks dari element atau attribute (value). Relasi child digunakan untuk mencatat element parent dari setiap element dan attribute. Keuntungan representasi ini adalah semua informasi XML dapat direpresentasikan secara langsung dalam bentuk relasional, dan banyak query XML yang dapat diterjemahkan menjadi query relasional dan 33 dieksekusi dalam sistem basis data. Kekurangan pendekatan ini adalah setiap element dipecah-pecah dan berbagai operasi join diperlukan untuk menggabungkan element kembali. 3) Pemetaan relasi. Dalam pendekatan ini, element XML yang skemanya diketahui dipetakan menjadi relasi dan attribute. Element yang skemanya tidak diketahui disimpan sebagai string atau tree representation. Relasi dibuat untuk tiap tipe element yang skemanya diketahui. Semua attribute dari element disimpan sebaai attribute relasi. Semua subelement yang terjadi dalam element juga direpresentasikan sebagai attribute relasi. 2.8 Use Case Modeling Industri pengembangan software telah mengetahui bahwa supaya berhasil dalam merencanakan, merancang, membangun dan menyebarkan sistem informasi, pertama-tama sistem analisis harus memahami kebutuhan stakeholder dan alasan sistem tersebut dikembangkan – konsep tersebut dikenal dengan usercentered development. Dengan berfokus pada pengguna sistem, analis dapat berkonsentrasi pada cara sistem digunakan dan bukan bagaimana sistem akan dibangun. Use-case modeling adalah pendekatan yang memfasilitasi pengembangan berpusat pada penggunaan. Use-case modeling terbukti sebagai alat bantu yang sangat baik dalam menentukan kebutuhan sistem dari perspektif pengguna dan stakeholder. Alat ini dikenal luas sebagai praktek terbaik untuk mendefinisikan, mendokumentasikan dan memahami kebutuhan fungsional sistem informasi. Penggunaan use-case 34 modeling memungkinkan dan mendorong keterlibatan pengguna, yang merupakan salah satu faktor penentu kesuksesan proyek yang sangat penting. (Whitten, 2004, p270) 2.8.1 Use Case Use-case modeling mengidentifikasi dan menjelaskan fungsi sistem dengan menggunakan alat yang disebut use case. Use case menjelaskan fungsi sistem dari perspektif pengguna eksternal dengan cara dan terminologi yang dimengerti pengguna. Use case adalah hasil dari menguraikan cakupan fungsionalitas sistem menjadi banyak pernyataan fungsionalitas sistem yang lebih kecil. Pernyataan tersebut direpresentasikan secara grafikal oleh elips horizontal dengan nama use case di atas, bawah atau di dalam elips. Sebuah use case merepresentasikan satu tujuan sistem dan menjelaskan urutan aktifitas dan interaksi dengan pengguna dalam mencapai tujuan. Use case pertama-tama didefinisikan selama tahap analisis kebutuhan dalam siklus pengembangan software. Dan use case tersebut akan ditambahkan serta direvisi sepanjang siklus. Selama analisis kebutuhan, use case digunakan untuk mencatat inti permasalahan bisnis dan untuk memodelkan fungsionalitas dari sistem yang diusulkan. (Whitten, 2004, p272) Gambar 2.3 Simbol Use Case 35 2.8.2 Actor Use case dipicu oleh pengguna eksternal yang disebut actor. Actor mengawali aktifitas sistem untuk melakukan tugas-tugas bisnis yang menghasilkan nilai yang dapat diukur. Ada 4 tipe actor: 1) Primary business actor – stakeholder yang memperoleh keuntungan dari eksekusi use case dengan menerima sesuatu yang dapat diukur atau dilihat. 2) Primary system actor – stakeholder yang secara langsung berhubungan dengan sistem untuk mengawali atau memicu kejadian bisnis atau sistem. Primary system actor akan berinteraksi dengan primary business actor dalam menggunakan sistem. Primary system actor memfasilitasi kejadian melalui penggunaan sistem secara langsung untuk keuntungan primary business actor. 3) External server actor – stakeholder yang merespon terhadap permintaan dari use case 4) External receiver actor – stakeholder yang bukan primary actor tapi menerima sesuatu yang dapat diukur atau dilihat dari use case. (Whitten, 2004, p273) Gambar 2.4 Simbol Actor 36 2.8.3 Relationship Relationship digambarkan sebagai garis antara 2 simbol dalam diagram use case. Arti relationship berbeda-beda tergantung cara gambar garis dan tipe simbol yang dihubungkan. Beberapa relationship yang terdapat dalam diagram use case: 1) Associations. Relationship antara actor dan use case terjadi bila use case menjelaskan interaksi di antara actor dan use case. 2) Extends. Use case dapat mengandung fungsionalitas yang kompleks terdiri dari beberapa langkah sehingga logika use case sulit dimengerti. Untuk menyederhanakan use case supaya lebih mudah dipahami, kita dapat mengekstraksi langkah yang kompleks dalam use case tersendiri. Use case yang dihasilkan disebut extension use case yang memperluas fungsionalitas use case awal. Relationship antara extension use case dan use case awal disebut relationship extends dan diberi label <<extends>>. 3) Uses (atau Includes). Sering kali ada 2 atau lebih use case yang melakukan langkah yang identik. Langkah-langkah yang sama dapat diekstraksi menjadi use case terpisah yang disebut abstract use case. Abstract use case dapat digunakan kembali dan merupakan alat yang baik untuk mengurangi pengulangan antar use case. Relationship antar abstract use case dan use case yang menggunakannya disebut relationship uses (beberapa alat use case modeling menyebut relationship includes) dan diberi label <<uses>>. 37 4) Depends on. Mengetahui ketergantungan antar use case dapat membantu menentukan urutan pengembangan use case. Diagram use case yang memodelkan ketergantungan use case dalam sistem menggunakan relationship depends-on memberikan model yang sangat baik untuk perencanaan dan penjadwalan. Garis relationship depends-on diberi label <<depends on>>. 5) Inheritance. Bila 2 atau lebih actor memiliki behavior yang sama – dengan kata lain dapat memicu use case yang sama – sebaiknya behavior yang sama digabungkan dan diserahkan kepada abstract actor yang baru untuk mengurangi perulangan komunikasi dengan sistem. (Whitten, 2004, p274).