Anda di halaman 1dari 12

Tugas

Sistem Basis Data 2


Database Control

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 T1 dan T2 mulai pada waktu yang hampir bersamaan, dan


keduanya membaca saldo $100. T2 menambah balx $100 menjadi $200 dan
menyimpan hasil perubahannya dalam database. Di sisi lain, transaksi T1
mengurangi copy dari balx $10 menjadi $90 dan menyimpan nilai ini dalam
database, menimpa hasil update sebelumnya dan akhirnya menghilangkan $100
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.
2. Masalah modifikasi sementara (Uncommitted Dependency Problem)
Transaksi membaca nilai yang ditulis oleh transaksi yang telah kemudian
dibatalkan. Nilai ini menghilang dari database pada abort, dan tidak
seharusnya dibaca oleh setiap transaksi ("membaca kotor"). Pembacaan
transaksi diakhiri dengan hasil yang salah.
Contoh masalahnya adalah sebagai berikut ini :

Transaksi T4 mengubah balx menjadi $200 namun T4 membatalkan


transaksi sehingga balx harus dikembalikan ke nilai asalnya, yaitu $100.
Namun, pada waktu itu, transaksi T3 telah membaca nilai baru balx ($200) dan
menggunakan nilai ini sebagai dasar pengurangan $10, sehingga memberikan
saldo yang keliru sebesar $190, yang seharusnya adalah $90. Nilai balx yang
dibaca T3 disebut dirty data, yang berasal dari nama alternatifnya, yaitu
masalah dirty read. Alasan rollback ini tidaklah penting. Masalahnya adalah
transaksinya gagal (error), mungkin mengurangi rekening yang salah. Efeknya
adalah asumsi T3 yang menganggap update T4 telah berhasil dijalankan,
meskipun selanjutnya perubahannya dibatalkan. Masalah ini dihindari dengan
mencegah T3 membaca balx sampai keputusan telah dibuat, yaitu commit atau
membatalkan efek T4. Dua masalah di atas mengkonsentrasikan pada

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 :

Masalah inconsistent analysis muncul ketika sebuah transaksi membaca


beberapa nilai dari database tapi transaksi kedua mengubah beberapa darinya
ketika eksekusi transaksi yang pertama. Contohnya, sebuah transaksi yang
meringkas data pada sebuah database(contohnya, saldo total) akan mendapat
hasil yang tidak akurat jika, ketika berjalan, transaksi lain sedang mengubah
database. Pada contoh diatas, ringkasan transaksi T6 sedang berjalan secara
bersamaan dengan transaksi T5. Transaksi T6 sedang menjumlahkan saldo
rekening x ($100), rekening y ($50), dan rekening z($25). Namun, di tengah
jalan, transaksi T5 telah mentransfer $10 dari balx ke balz, sehingga T6
sekarang mempunyai hasil yang salah (lebih besar $10).
3.4 Contoh Kasus

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.

Apakah saldo berkurang atau bertambah?

2.

Termasuk dalam masalah apakah kasus tersebut?

3.

Siapa pihak yang dirugikan dalam transakasi yang bersamaan ini?

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

Commit adalah operasi yang menyatakan bahwa suatu transaksi sudah


terselesaikan / sukses (successful end-of-transaction).
Rollback adalah operasi yang menyatakan bahwa suatu transaksi dibatalkan
(unsuccessfull end-of-transaction).

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.

3.6 Mekanisme Concurrency Control


1. LOCKING
Locking adalah salah satu mekanisasi pengontrolan konkuren. Konsep
dasar mekanisme ini ialah ketika suatu transaksi memerlukan jaminan bahwa
record yang diinginkan tidak akan berubah secara mendadak, maka diperlukan
kunci untuk record tersebut. Fungsinya kunci (lock) adalah dengan menjaga
record tersebut agar tidak dimodifikasi oleh transaksi lain.
Cara kerja dari kunci :
1. Pertama kita asumsikan terdapat 2 macam kunci:
Kunci X : kunci yang eksklusif.
Kunci S : kunci yang digunakan bersama-sama.
2. Jika transaksi A menggunakan kunci X pada record R, maka permintaan
dari transaksi B untuk suatu kunci pada R ditunda, dan B harus
menunggu sampai A melepaskan kunci tersebut.
3. Jika transaksi A menggunakan kunci S pada record R, maka:
Bila transaksi B ingin menggunakan kunci X, maka B harus
menunggu sampai A melepaskan kunci tersebut.
Bila transaksi B ingin menggunakan kunci S, maka B dapat
menggunakan kunci S bersama A.
4. Pada awal terjadi tansaksi :
Bila suatu transaksi hanya melakukan pembacaan saja, secara
otomatis ia memerlukan kunci S baca (S)/ read(S)
Bila transaksi tersebut ingin memodifikasi record maka secara
otomatis ia memerlukan kunci X memodifikasi (X) / write(X)
Bila transaksi tersebut sudah menggunakan kunci S, setelah itu ia
akan memodifikasi record, maka kunci S akan dinaikan ke level kunci
X.
X

X = kunci X

Y S = kunci S

Y N = No

Y Y = Yes

5. Kunci X dan kunci S akan dilepaskan pada saat synchpoint


(synchronization point).
Synchpoint menyatakan akhir dari suatu
transaksi dimana basis data berada pada state yang konsisten. Bila
synchpoint ditetapkan maka:
Semua modifikasi program menjalankan operasi commit atau
rollback.
Semua kunci dari record dilepaskan.
2. TIME STAMPING
Salah satu concurrency control alternatif yang dapat menghilangkan
deadlock adalah time stamping. Secara umum, timestamping (TS) adalah
penanda waktu saat transaksi terjadi. Hal ini untuk mengurutkan eksekusi
transaksi agar sama dengan eksekusi serial.
Time stamp dapat berupa :
a. Waktu sistem saat transaksi dimulai, atau
b. Penghitung logik (logical counter) yang terus bertambah nilainya tiap kali
terjadi transaksi baru.
c.
Jika timestamp transaksi a lebih kecil daripada timestamp transaksi b , atau
TS(Ta) < TS(Tb), maka transaksi a (Ta) selalu dilaksanakan sebelum transaksi
b (Tb).
Contoh:
Misal rekaman pada basis data memuat TS 168, yang mengidentifikasikan
transaksi dengn TS 168 adalah transaksi yang terkemudian yang sukses
mengupdate rekaman yang bersangkutan. Maka jika ada transaksi dengan TS
170 mencoba mengupdate rekaman yang sama, maka update ini akan
diijinkan, karena TS yang dimiliki lebih kemudian dari TS pada rekaman. Saat
transaksi ini dilakukan, TS pada rekaman akan diatur menjadi 170. Sekaran,
jika transaksi yang akan mengupdate rekaman tersebut memiliki TS 165, maka
update ditolak karena TS-nya < TS di rekaman.
Selain transaksi, item data juga memiliki nilai time stamp. Untuk setiap item
data Q, ada 2 nilai time stamp, yaitu:
a. Read time stamp atau R-timestamp(Q), yang menunjukkan nilai TS terbesar
dari setiap transaksi yang berhasil menjalankan operasi read(Q).

b. Write time stamp atau W-timestamp(Q), yang menunjukkan nilai TS


terbesar dari setiap transaksi yang berhasil menjalankan operasi write(Q).
Timestamp ini akan selalu diperbarui ketika ada perintah baru read(Q) atau
write(Q) yang dijalankan.

2.1 Time-stamping Ordering Protocol


Protokol ini menjamin bahwa tiap operasi read dan write yang memiliki
konflik dieksekusi sesuai urutan TS.
1. Untuk transaksi Ta yang menjalankan operasi read(Q)
a. Jika TS(Ta) < W-TS(Q) maka transaksi Ta perlu membaca kembali
nilai Q yang telah ditulis dan transaksi Ta akan dibatalkan (rollback).
b. Jika TS(Ta) W-TS(Q) maka operasi read dieksekusi, dan R-TS(Q)
diisi dengan nilai terbesar diantara TS(Ta) dan R-TS(Q).
2. Untuk transaksi Ta yang menjalankan operasi write(Q):
a. jika TS(Ta) < R-TS(Q) maka nilai Q yang baru dihasilkan Ta tidak
akan dimanfaatkan lagi, dan sistem berasumsi bahwa nilai tersebut
tidak pernah dihasilkan. Karena itu operasi write ditolak, dan
transaksi Ta di rollback.
b. jika TS(Ta) < W-TS(Q) maka itu berarti transaksi Ta sedang berusaha
melakukan penulisan nilai Q yang kadaluarsa. Maka operasi wrwite
ini akan ditolak dan transaksi Ta akan di rollback.
c. Di luar kondisi a dan b di atas, operasi write dieksekusi dan W-TS(Q)
diberi nilai baru yang sama dengan TS(Ta).
Terhadap transaksi Ta yang di rollback, akan diberikan sebuah timestamp
yang baru dan diulang kembali.

Properti timestamp :
1. Uniqueness : masing-masing timestamp suatu transaksi adalah unik.
2. Monotonicity : 2 timestamp yang dihasilkan transaksi yang sama
meningkat secara monoton.

Cara pemberian nilai timestamp :


1. Global (systemwide) monotonically increasing number
2. Local (site) monotonically increasing number.

4. Recovery
Backup : proses secara periodik untuk mebuat duplikat dari database dan
melakukan logging file (atau program) ke media penyimpanan eksternal/offline.

Recovery : merupakan upaya untuk mengembalikan basis data ke keadaaan


yang dianggap benar setelah terjadinya suatu kegagalan.
1. Pemulihan terhadap kegagalan transaksi
2. Pemulihan terhadap kegagalan system
3. Pemulihan terhadap kegagalan media
4.1 Jenis jenis kegagalan :
1. Kegagalan system
Kegagalan yang mempengaruhi semua transaksi yang sedang berjalan tetapi
tidak merusak database secara fisik.
Contoh : system error, software error
2. Kegagalan media
Kegagalan yang merusak database dan semua transaksi yang sedang
berjalan pada saat itu.
Contoh : head crash
Berbagai kemungkinan yang harus diantisipasi :
Gangguan Listrik
Kerusakan Disk
Kesalahan Perangkat Lunak
Pengaksesan oleh orang yang tidak berhak
Dua Pengguna/ lebih mengubah data yang sama

4.2 Fasilitas recovery


Fasilitas recovery didalam DBMS :
Back up mechanism
Membuat back up database dan log file secara periodik
Looging facility
Mencatat semua transaksi yang sedang berjalan
Checkpoint facility
Synchronization point antara database dengan transaksi log file
Recovery manager
Mengijinkan system untuk merestore database kekondisi yang tepat

Sejumlah control yang disediakan oleh DMBS :


Pemulihan (recovery)
Pengamanan (security)
Integritas (integrity)
Konkurensi (concurency)
4.3 Teknik Recovery
1. Defered upate / perubahan yang ditunda :
Perubahan pada basis data tidak akan berlangsung sampai transaksi ada
pada poin disetujui (COMMIT). Jika terjadi kegagalan maka tidak akan terjadi
perubahan, tetapi diperlukan operasi redo untuk mencegah akibat dari
kegagalan tersebut.
2. Immediate Upadte / perubahan langsung :
Perubahan pada basis data akan segera tanpa harus menunggu sebuah
transaksi tersebut disetujui. Jika terjadi kegagalan diperlukan operasi UNDO
untuk melihat apakah ada transaksi yang telah disetujui sebelum terjadi
kegagalan.
3. Shadow Paging :
Menggunakan page bayangan dimana pada prosesnya terdiri dari 2 tabel
yang sama, yang satu menjadi tabel transaksi dan yang lain digunakan sebagai
cadangan. Ketika transaksi mulai berlangsung kedua tabel ini sama dan selama
berlangsung tabel transaksi yang menyimpan semua perubahan ke database,
tabel bayangan akan digunakan jika terjadi kesalahan. Keuntungannya adalah
tidak membutuhkan REDO atau UNDO, kelemahannya membuat terjadinya
fragmentasi.

Anda mungkin juga menyukai