Basis Data dan Sistem Basis Data
Sebelum
lebih jauh mengenal tentang sistem basis
data. Kita mulai terlebih dahulu dengan mengenal basis data dan sistem basis
data itu sendiri. Basisdata adalah kumpulan dari berbagai data/informasi
yang saling berhubungan satu sama lain, disimpan di dalam perangkat keras
(komputer) secara sistematis sehingga dapat diolah menggunakan perangkat lunak.
Sedangkan,
sistem basis data merupakan sekumpulan basis data dengan para pemakai yang menggunakan basis data
secara bersama-sama, personil yang merancang dan mengelola basis data,
teknik-teknik untuk merancang dan mengelola basis data, serta system computer
yang mendukungnya.
Sistem
basis data merupakan lingkup terbesar dalam organisasi data. Sistem basis
data mencakup semua bentuk komponen data yang ada dalam suatu system. Sedangkan
basis data merupakan komponen utama yang menyusun system basis data.
Sistem basis
data dan juga DBMS memiliki hubungan yang sangat erat. Jadi, bisa disimpulkan
bahwa suatu sistem basis data merupakan suatu sistem yang melakukan proses
management pada basis data atau database dengan menggunakan software DBMS. Suatu basis data dan juga DBMS tidak akan disebut sebagai sistem basis
data, apabila antara database dan juga DBMS tidak mengalami interaksi dan tidak
saling berhubungan satu sama lain.
Tujuan basis data dan sistem basis data, adalah sebagai berikut ini:
- Kecepatan serta kemudahan dalam menyimpan, memanipulasi atau juga menampilkan kembali data tersebut.
- Efisiensinya ruang penyimpanan.
- Keakuratan (Accuracy) data.
- Ketersediaan (Availability) data.
- Kelengkapan (Completeness) data, kita dapat melakukan perubahan struktur dalam basis data, baik dalam penambahan objek baru (tabel) atau dengan penambahan field-field baru pada table.
- Keamanan (Security) data, dapat menentukan pemakai yang boleh menggunakan basis data.
- Kebersamaan Pemakai (Sharability), pemakai basis data bisa lebih dari satu orang.
- Redudansi data dan juga inkonsistensi data.
- Kesuliatan dalam pengaksesan data.
- Data Isolation.
- Konkurensi pengaksesan.
- Masalah keamanan.
- Masalah Integritas.
Setelah mengenal basis data dan sistem basis data,
selanjutnya kita akan membahas materi-materi dalam sistem basis data
diantaranya adalah integritas data, transaksi, conccurency, xml dan back-end
programming.
Integritas Data
Integritas pada basis data adalah
suatu masalah utama di dalam database yang berusaha agar menjaga data tetap
konsisten atau valid. Penerapan aturan-aturan ini akan dapat menghindarkan
basis data dari upaya-upaya atau kesalahan yang biasanya tidak disengaja,
khususnya dalam melakukan pemanipulasian data, yang dapat membuat basis data
menjadi tidak konsisten atau integritasnya terganggu.
Jenis-jenis integritas data yang harus dipelihara dalam basis data adalah sebagai berikut,
1. Integritas Entitas (Entity Integrity), dimana tidak ada baris data duplikat dalam satu table
2. Integritas Jangkauan (Domain Integrity), dimana tidak ada item data yang melanggar jangkuan nilai di tiap kolom data
3. Integritas Acuan (Referential Integrity), yang menjaga relasi/korespodensi antar table
4. Integritas Data Antar Tabel (Redundant Data Integrity), dimana data di sebuah table tidak terulang di table lain
Jenis-jenis integritas data yang harus dipelihara dalam basis data adalah sebagai berikut,
1. Integritas Entitas (Entity Integrity), dimana tidak ada baris data duplikat dalam satu table
2. Integritas Jangkauan (Domain Integrity), dimana tidak ada item data yang melanggar jangkuan nilai di tiap kolom data
3. Integritas Acuan (Referential Integrity), yang menjaga relasi/korespodensi antar table
4. Integritas Data Antar Tabel (Redundant Data Integrity), dimana data di sebuah table tidak terulang di table lain
Pada umumnya ada beberapa jenis integritas data, diantaranya
adalah sebagai berikut :
- Create Domain, yaitu membuat tipe data baru. Fungsi ini biasa digunakan untuk menangani data yang membutuhkan aturan bisnis sendiri, contohnya membuat tipe data khusus untuk angka yang isinya hanya berisi bilangan 0 dan 1.
- Not NULL, yaitu menjaga agar suatu data tidak kosong dengan kata lain harus ada valuenya. Contohnya NIM pada tabel mahasiswa tidak boleh kosong.
- Unique, yaitu membuat agar suatu data tidak memiliki nilai yang sama dengan record lainnya dalam tabel yang sama. Contohnya NIM pada tabel mahasiswa.
- Primary key, merupakan gabungan antara not null dan unique, misalnya NIM pada tabel mahasiswa.
- Check, memeriksa data dengan aturan bisnisinya sendiri tanpa membuat tipe data baru. Contohnya sebelum memasukkan nilai ujian pada tabel nilai data tidak boleh bernilai negatif.
- Referential Integrity, adalah integritas pada relasi antar tabel. Contohnya jika kolom NIM mahasiswa pada tabel nilai mengacu ke kolom NIM pada tabel mahasiswa, dan terjadi perubahan (delete atau update) pada NIM di tabel mahasiswa, maka ada beberapa pilihan yang dapat dilakukan terhadap NIM yang di tabel nilai, diantaranya adalah :
o Delete cascade, hapus record pada kedua
tabel
o Delete set null, hapus record di tabel
asal dan tabel yang mengacu di jadikan NULL
o Update cascade, perbarui isi record pada
kedua tabel
Transaksi
Transaksi di dalam sebuah basis data dapat didefinisikan sebagai serangkaian aksi yang mengandung pengaksesan basis data dan bahkan juga dapat mengandung serangkaian perubahan data. Sebuah transaksi umumnya terdiri atas sejumlah operasi yang membentuk sebuah satuan kerja lojik. DBMS yang kita gunakan harus dapat menjamin bahwa setiap satuan transaksi harus dapat dikerjakan secara utuh atau tidak sama sekali. Tidak boleh terjadi ada transaksi yang hanya dikerjakan sebagian karena hal ini dapat mengakibatkan adanya inkonsistensi basis data.
Untuk menjamin agar integritas data tetap terpelihara, maka setiap transaksi harus memiliki sifat-sifat seperti berikut ini,
- Atomicity Ini berarti bahwa transaksi haruslah berhasil secara keseluruhan, atau gagal sama sekali.
- Consistency Menjaga konsistensi data di database
- Isolation Transaksi yang dilakukan secara bersamaan haruslah bisa dimulai dan bisa berakhir.
- Durability Setelah transaksi berakhir, data yang berubah tidak boleh kembali ke data awal walaupun sistem mati.
Dalam transaksi database, ada 3 hal yang harus dicegah yaitu.
- DIRTY READ Transaksi membaca data dari hasil transaksi lainnya yang gagal. Kedua transaksi tersebut berjalan bersamaan.
- NONREPEATABLE READ Transaksi membaca ulang data yang telah di baca sebelumnya karena data tersebut telah di modifikasi oleh transaksi lainnya.
- PHANTOM READ Transaksi membaca sebuah data yang telah hilang akibat dari transaksi yang lainnya.
Untuk mencegah 3 hal tersebut, maka dalam Oracle terdapat 2 level isolasi yang dapat diimplementasikan, yaitu :
- READ COMMITED Transaksi hanya dapat melihat perubahan data setelah transaksi lain telah commit pada data tersebut. (Seperti dalam contoh commit).
- SERIALIZABLE Adalah level isolasi yang menyediakan isolasi transaksi yang paling ketat. Saat transaksi berada pada level serializable, sebuah query SELECT hanya melihat data yang di COMMIT sebelum transaksi di mulai; transaksi tersebut tidak akan pernah melihat baik data yang belum di COMMIT atau perubahan data yang terjadi selama eksekusi transaksi oleh transaksi lain yang berjalan pada waktu bersamaan. Isolasi level ini mencegah terjadinya PHANTOM READ.
Dua Operasi Penting Transaksi
- Commit
- Rollback
Memberi tanda bahwa transaksi GAGAL.
Save Point
Savepoint adalah suatu keadaan atau sebuah titik aman dimana suatu transaksi bisa diselesaikan dalam satu atau beberapa transaksi.
Fungsi dari save point adalah supaya pada saat kita ingin rollback atau ada transaksi yang gagal, transaksi tidak berjalan dari awal kembali, tetapi dari save poin yang telah kita buat.
Concurrency
Concurrency adalah banyaknya transaksi yang dijalankan secara bersamaan dalam satu waktu.
DBMS mengijinkan banyak transaksi pada saat bersamaan untuk mengakses data yang sama.
Concurrency Control Mechanism (CCM) dibutuhkan agar transaksi tidak saling “menggangu”.
Adapun 3 masalah concurrency adalah :
- Lost Update Problem
- Uncommitted Dependency Problem
- Incosistent Analysis Problem
Locking
Locking terjadi jika suatu transaksi ingin record atau resource tidak berubah dalam waktu tertentu
Jenis Lock
Locking terjadi jika suatu transaksi ingin record atau resource tidak berubah dalam waktu tertentu
Jenis Lock
- Exclusive Lock (Xlock) atau write lock yaitu locking yang hanya bisa di gunakan untuk mengupdate dan membaca transaksi
- Shared Lock (Slock) atau read lock yaitu locking yang hanya bisa di gunakan untuk membaca transaksi.
Data Access Protocol
- Transaksi yang ingin mengambil nilai sebuah record (retrieve) harus mendapat Slock pada record tersebut
- Transaksi yang ingin
mengupdate, harus mendapat Xlock
Dead Lock
Dead lock adalah situasi dimana dua atau lebih transaksi dalam kondisi wait-state, satu sama lain menunggu lock dilepaskan sebelum dapat memulai
Dead lock adalah situasi dimana dua atau lebih transaksi dalam kondisi wait-state, satu sama lain menunggu lock dilepaskan sebelum dapat memulai
Contoh Deadlock
Deadlock dapat ditangani dengan cara berikut :
- Deteksi dan pecahkan deadlock
- Deteksi deadlock > wait-for-graph
- Pecahkan deadlock > salah satu dirollback paksa (bagaimana penanganan rollback ini?)
- Ostrich Algorithm > diabaikan
XML (Extensible Mark up Language)
XML (extensible mark up
language) merupakan representasi data yang bisa didefinisikan sesuai
keinginan pengguna. Karena formatnya yang standar dan fleksibel, XML sering
dipergunakan pada berbagai pertukaran informasi. Dan merupakan suatu keuntungan
bagi kita bila kita bisa menyimpannya pada basis data dan memprosesnya. XML
tidak dikonsentrasi untuk pemrosesan dan penampilan data tetapi terutama
dimaksudkan untuk memberitahu komputer apa arti sesungguhnya dari data yang
disertakan.
Kita menggunakan XML dalam membangun suatu sistem dikarenakan XML tidak
tergantung pada satu platform alias platform independent juga language
independent . Ditujukan untuk melakukan pertukaran data (data transfering).
Perbedaan XML dan HTML
XML digunakan dengan cara yang menyerupai HTML. Akan tetapi terdapat
perbedaan besar antara keduanya, yaitu :
- HTML digunakan untuk mendeskripsikan bagaimana data diformat
- XML digunakan untuk mendeskripsikan apa arti sebenarnya dari data
- Struktur HTML telah didefinisikan
- Aturan XML lenih ketat, contohnya setiap tag harus ada penutupnya
- XML bersifat case sensitive
- HTML keamanannya kurang dan hanya mengirim data tidak beserta library berbeda dari XML.
Back End Programming
Back-End programming adalah program yang berjalan pada database secara
otomatis ketika terjadi suatu pemicu tertentu. Dalam oracle ada beberapa metode
untuk melakukan back-end programming, yaitu dengan trigger dan stored
procedure.
Stored Procedure
Stored Procedure
Stored
procedure adalah sebuah prosedur—layaknya subprogram (subrutin) di dalam bahasa
pemrograman reguler—yang tersimpan di dalam katalog basis data. Stored
procedure memungkinkan sebuah aplikasi berbasis database (SQL)
mendefinisikan dan kemudian memanggil prosedur melalui pernyataan SQL. Stored
procedure dapat digunakan untuk aplikasi terdistribusi (client server)
maupun aplikasi tidak terdistribusi.
Gambar Stored
Procedure
Beberapa
kelebihan yang ditawarkan stored procedure antara lain: meningkatkan performa,
mereduksi trafik jaringan, reusable, dan meningkatkan kontrol sekuriti. Di
balik kelebihan-kelebihannya, stored procedure juga memiliki kekurangan, di
antaranya: berpotensi meningkatkan beban server dan penulisannya tidak mudah
(memerlukan pengetahuan spesifik).
Tersimpannya
Stored procedure pada sistem database terpusat memungkinkan dilakukannya
perubahan untuk menyesuaikan dengan perubahan sistem terkini dan dapat berlaku
untuk keseluruh sistem aplikasi yang ada tanpa perlu dilakukan perubahan untuk
setiap modul aplikasi.
Dalam
implementasi nyata, penggunaan stored procedure sering melibatkan parameter. Di
MySQL, parameter stored procedure dibedakan menjadi tiga mode: IN, OUT, dan
INOUT.
- IN
Parameter
yang merupakan mode default ini mengindikasikan bahwa sebuah parameter dapat
di-pass ke stored procedure tetapi nilainya tidak dapat diubah (dari dalam
stored procedure).
- OUT
Mode ini
mengindikasikan bahwa stored procedure dapat mengubah parameter dan mengirimkan
kembali ke program pemanggil.
- INOUT
Mode ini
pada dasarnya merupakan kombinasi dari mode IN dan OUT.
Stored
procedure dapat mencerminkan beragam operasi data, misalnya seleksi,
penambahan, pengubahan, penghapusan, dan juga operasi-operasi DDL. Seperti
halnya prosedur di bahasa pemrograman, stored procedure juga dapat melibatkan
variabel, pernyataan kondisional, dan pengulangan.
Trigger
Trigger merupakan suatu block PL/SQL yang akan tersimpan didalam database. Trigger akan teraktivasi secara otomatis ketika terjadi suatu kejadian/event (INSERT, DELETE, UPDATE) terhadap table, view dan database. Biasanya Trigger digunakan untuk mengisi ataupun mengubah nilai kolom dalam suatu tabel sehingga validasi nilai dari tabel tersebut akan terjaga.
Manfaat Trigger
Dengan menggunakan Trigger integritas data serta konsistensi data dapat terjaga dan juga dapat mencegah terjadinya transaksi yang tidak valid. Selain itu standarisasi (penyeragaman) terhadap proses juga dapat tercapai karena Trigger dibuat satu kali dan tersimpan didalam database, sehingga setiap operasi yang dilakukan oleh siapapun terhadap sistem tersebut akan menggunakan Trigger yang sama.
Trigger
Trigger merupakan suatu block PL/SQL yang akan tersimpan didalam database. Trigger akan teraktivasi secara otomatis ketika terjadi suatu kejadian/event (INSERT, DELETE, UPDATE) terhadap table, view dan database. Biasanya Trigger digunakan untuk mengisi ataupun mengubah nilai kolom dalam suatu tabel sehingga validasi nilai dari tabel tersebut akan terjaga.
Manfaat Trigger
Dengan menggunakan Trigger integritas data serta konsistensi data dapat terjaga dan juga dapat mencegah terjadinya transaksi yang tidak valid. Selain itu standarisasi (penyeragaman) terhadap proses juga dapat tercapai karena Trigger dibuat satu kali dan tersimpan didalam database, sehingga setiap operasi yang dilakukan oleh siapapun terhadap sistem tersebut akan menggunakan Trigger yang sama.
Referensi :
Hand Out Sistem Basis Data oleh Budi Laksono Putro
Modul 10554_pengantar_basis_data.pdf
Modul 5 Trigger oleh Tim Asisten Praktikum
Sistem Basis Data ILKOM UPI
http://www.sql2learn.com/detailpost/stored-procedure