Universitas Gunadarma
Depok
2015
DATABASE CONTROL
1. TRANSAKSI
Transaksi adalah satu atau beberapa aksi program aplikasi yang
mengakses/mengubah isi basis data. Transaksi merupakan bagian dari
pengeksekusian sebuah program yang melakukan pengaksesan basis data dan bahkan
juga melakukan serangkaian perubahan data. DBMS yang kita gunakan harus
menjamin bahwa setiap transaksi harus dapat dikerjakan secara utuh atau tidak sama
sekali. Tidak boleh ada transaksi yang hanya dikerjakan sebagian, karena dapat
menyebabkan inkonsistensi basis data. Untuk itu transaksi selalu merubah basis data
dari satu kondisi konsisten ke kondisi konsisten lain.
Sebuah transaksi berpeluang untuk mengganggu integritas basis data yang dapat
membuat kondisi/hubungan antar data tidak seperti seharusnya. Untuk menjamin agar
integritas dapat tetap terpelihara maka setiap transaksi harus memiliki sifat-sifat:
1. Atomik, dimana semua operasi dalam transaksi dapat dikerjakan seluruhnya
atau tidak sama sekali.
2. Konsisten, dimana eksekusi transaksi secara tunggal harus dapat menjamin
data tetap konsisten setelah transaksi berakhir.
3. Terisolasi, jika pada sebuah sistem basis data terdapat sejumlah transaksi yang
dilaksanakan secara bersamaan, maka semua transaksi yang dilaksanakan
pada saat yang bersamaan tersebut harus dapat dimulai dan bisa berakhir.
4. Bertahan, dimana perubahan data yang terjadi setelah sebuah transaksi
berakhir dengan baik, harus dapat bertahan bahkan jika seandainya sistem
menjadi mati.
Terhentinya suatu transaksi tidak selalu diakibatkan oleh kegagalan insidental baik
dari perangkat keras (crash) ataupun kemacetan sistem operasi (hang). Tapi lebih
sering terjadi karena user sengaja menghentikan transaksi atau karena penghentian
transaksi oleh DBMS akibat adanya kondisi tak diinginkan, seperti deadlock atau
timeout.
Sebuah transaksi dapat menghasilkan dua kemungkinan:
a. Jika dilaksanakan lengkap seluruhnya, transaksi tersebut telah di commit dan
basis data mencapai keadaan konsisten baru.
b. Jika transaksi tidak sukses, maka transaksi dibatalkan dan basis data
dikembalikan ke keadaan konsisten sebelumnya (rollback).
Transaksi yang sudah di commit tidak dapat dibatalkan lagi. Jika ada kesalahan,
maka harus dilakukan transaksi lain yang membalik dampak transaksi sebelumnya.
Status-status yang dapat dicapai oleh sebuah transaksi sejak mulai dilaksanakan
hingga selesai atau batal adalah:
1. Aktif (Active), yang merupakan status awal (initial state) sebuah transaksi yang
menunjukkan transaksi tersebut masih dieksekusi.
2. Berhasil Sebagian (Partially Committed), yaitu keadaan yang dicapai transaksi
tepat pada saat operasi terakhir dalam transaksi selesai dikerjakan.
3. Gagal (Failed), yang merupakan keadaan dimana sebuah transaksi terhenti
pengeksekusiannya sebelum tuntas sama sekali.
4. Batal (Aborted), yaitu keadaan dimana sebuah transaksi dianggap tidak/belum
dikerjakan yang tentu dengan terlebih dahulu diawali dengan mengembalikan
semua data yang telah diubah ke nilai-nilai semula. (yang menjadi tanggung
jawab DBMS).
5. Berhasil Sempurna (Committed), keadaan dimana transaksi telah dinyatakan
berhasil dikerjakan seluruhnya dan basis data telah merefleksikan perubahanperubahan yang memang diinginkan transaksi.
2. SECURITY DATABASE
1. Authorization
Pemberian hak akses (dari subjek atas suatu objek) yang mengizinkan sebuah
subyek mempunyai akses secara legal terhadap sebuah system atau obyek.
Subyek
: user atau program
Obyek
: database table, view, application, rocedure.
2. Views (Subschemas)
Hasil yang dinamik dari satu atau lebih operasi relasi yang beroperasi pada relasi
dasar untuk menghasilkan relasi lainnya. View mwerupakan virtual relation yang
tidak secara nyata ada di dalam sebuah database, tetapi dihasilkan atas
permintaan user secara khusus.
3. Backing Up
Proses yang secara periodic menyalin database
memprogram) ke dalam media penyimpanan offline.
dan
menjurnal
(dan
4. Journaling
Proses penyimpanan dan pemeliharaan sebuah jurnal atau log seluruh
perubahan terhadap database agar dapat merecover secara efektif jika terjadi
kegagalan.
5. Checkpointing
Titik temu sinkronisasi antara database dan transaksi log file. Seluruh data yang
disimpan di tempat sementara akan disimpan di media penyimpanan kedua.
6. Integrity
Pengontrolan integritas juga membantu memelihara system database yang
aman dengan mencegah data dari invalid.
7. Encryption
Penyediaan (encoding) data dengan menggunakan algoritma khusus yang
merubah data menjadi tidak dapat dibaca oleh program apapun tanpa
mendeskripsikannya.
3. Concurrency
3.1 Pengertian Concurrency
Concurrency Control adalah proses pengaturan operasioperasi dalam banyak
transaksi yang berjalan secara simultan pada database tanpa mengganggu operasi
pada transaksi lainnya sehingga dapat menghasilkan data yang konsisten
3.2 Sistem Konsep untuk Concurrency
Mengakses beberapa proses bersamaan
Dipengaruhi oleh proses pengubah
Dipengaruhi oleh proses pembaca
3.3 Jenis Masalah dan Contoh Concurrency
1. Masalah kehilangan modifikasi (Lost Updates Problem)
Sebuah transaksi kedua menulis nilai kedua dari data-item (datum) di atas
nilai pertama yang ditulis oleh transaksi konkuren pertama, dan nilai pertama
hilang untuk transaksi lainnya berjalan bersamaan yang membutuhkan, dengan
prioritas mereka, untuk membaca nilai pertama. Transaksi yang telah membaca
akhir nilai yang salah dengan hasil yang salah.
Contoh dari masalahnya adalah sebagai berikut :
transaksi yang mengubah database dan campur tangan mereka bisa membuat
database menjadi corrupt. Namun, transaksi yang hanya membaca database
bisa juga memberikan hasil yang tidak akurat jika mereka diijinkan untuk
membaca hasil bagian dari transaksi yang belum selesai yang secara
bersamaan membaca database.
3. Masalah Analisa yang tidak konsisten (Inconsistent Analysis Problem)
Ketika satu transaksi mengambil ringkasan atas nilai dari semua contoh
item-data ulang, sebuah update transaksi kedua beberapa kasus itu barangdata. Ringkasan yang dihasilkan tidak mencerminkan hasil yang benar untuk
setiap (biasanya diperlukan untuk pembenaran) agar mengutamakan antara
dua transaksi (jika dijalankan sebelum yang lain), melainkan beberapa hasil
acak, tergantung pada waktu update, dan apakah tertentu Hasil update telah
dimasukkan dalam ringkasan atau tidak.
Contoh masalahnya adalah sebagai berikut ini :
Seorang dosen bernama Andi adalah seorang pegawai yang memiliki saldo
sebesar Rp 6.000.000. dia melakukan transfer uang sebesar Rp 2.000.000. dan
pada waktu yang bersamaan dia mendapat gaji sebesar Rp 3.000.000. Tentukan:
1.
2.
3.
Penjelasannya :
Transaksi T1 dan T2 mulai pada waktu yang hampir bersamaan, dan keduanya
membaca saldo Rp6jt. T2 mengurangi balx Rp6jt menjadi Rp4jt dan
menyimpan hasil perubahannya dalam database. Di sisi lain, transaksi T1
menambah copy dari balx Rp2jt menjadi Rp8jt dan menyimpan nilai ini dalam
database, menimpa hasil update sebelumnya dan akhirnya menghilangkan
Rp4jt yang telah ditambahkan sebelumnya ke dalam saldo. Kehilangan update
transaksi T2 dapat dihindari dengan mencegah T1 membaca nilai dari balx
sampai update T2 telah selesai.
Jawab :
1. Saldo bertambah
2. Termasuk dalam kategori masalah Lost Update
3. Tidak ada yang dirugikan, malah keduanya diuntungkan
3.5 Deadlock, Commit, dan Rollback
Deadlock adalah jalan buntu yang dapat terjadi ketika dua atau lebih
transaksi masing-masing menunggu lock (kunci pada mekanisme locking)
yang sedang dipegang oleh transaksi lainnya untuk dilepas. Cara sederhana
mengidentifikasi deadlock adalah menggunakan mekanisme timeout. Jika
sebuah transaksi telah menunggu lock terlalu lama, maka dapat diasumsikan
bahwa transaksi tersebut berada dalam lingkaran deadlock dan membatalkan
transaksi tersebut.
X = kunci X
Y S = kunci S
Y N = No
Y Y = Yes
Properti timestamp :
1. Uniqueness : masing-masing timestamp suatu transaksi adalah unik.
2. Monotonicity : 2 timestamp yang dihasilkan transaksi yang sama
meningkat secara monoton.
4. Recovery
Backup : proses secara periodik untuk mebuat duplikat dari database dan
melakukan logging file (atau program) ke media penyimpanan eksternal/offline.