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.
Kegunaan atau fungsi sistem basis data, mengatasi masalah-masalah
pemrosesan data yang sering ditemui, permasalah tersebut diantaranya:
- 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
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
Memberi tanda bahwa transaksi telah
selesai. Update dibuat permanen (bahkan jika setelah commit terjadi kegagalan
system).
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
:
- Uncommitted Dependency Problem
- Incosistent Analysis Problem
Locking
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
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 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.
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