Data dan database merupakan komponen terpenting dalam suatu
sistem informasi manajemen, disamping tentu saja aplikasi untuk sistem
informasi harus tersedia, keduanya saling tergantung. Suatu aplikasi sistem
informasi manajemen tidak ada gunanya jika tidak mempunyai data yang lengkap,
demikian juga sebaliknya jika punya data tetapi tidak mempunyai aplikasi yang
digunakan untuk mengelolanya sehingga tidak dapat dihasilkan suatu laporan,
statistik atau pun informasi.
Klasifikasi kerusakan
-
Kerusakan transaksi :
-
Logical errors:
transaksi tidak lengkap karena ada kesalahan dalam program
-
System errors:
database harus menghentikan sementara transaksi yang aktif karena ada kondisi
yang tidak diharpkan (mis., deadlock)
-
System crash:
kerusakan listrik atau hardware atau software yang menyebabkan system crash.
-
Penyimpan sementara: I nformasi yang ada di media ini hanya ada selama listrik mengalir
-
Kerusakan disk: akibat dari head diskdrive yang rusak atau
kotor
Algoritma Recovery adalah teknik untuk meyakinkan konsistensi
database dan transaksi atomik dan ketahanan terhadap kerusakan memiliki dua
bagian :
1.
Aksi yang ditempuh selama transaksi berjalan
normal untuk menjamin informasi yang memadai yang kelak dibutuhkan oleh
mekanisme recovery
2.
Aksi ditempuh setelah terjadinya
kerusakan/kegagalan sistem yang dilakukan untuk memulihkan isi database ke
suatu keadaan yang menjamin konsistensi basis data, keatomikan dan ketahanan
Struktur penyimpan
1.
Penyimpan sementara:
- Tidak mampu mengatasi kerusakan sistem
- contoh: main memory, cache memory
2.
Penyimpan tetap:
- Mampu mengatasi kerusakan sistem
- Cnoth : disk, tape, flash memory,
non-volatile
(battery backed up) RAM
- Penyimpan stabil:
- Bentuk lain dari penyimpanan untuk
mengatas kerusakan sistem
- Pembuatan copy database dan menyimpan di
tempat lain untuk menjaga jika ada kerusakan
Akses data
Blok menunjukkan satuan pentransferan data dari dan
ke disk, dan dapat berisi banyak item / baris data.
Buffer block blok yang menyimpan data sementara
di main memory.
Blok ini bergerak antara disk dan
main memory melalui dua operasi:
-
input(B)
transfer block B ke main memory.
-
output(B)
transfer buffer blok B ke disk, dan menggantikan blok yang lama.
Setiap transaksi Ti mempunyai
area kerja private untuk tempat pengelolaan salinan dari semua item data yang
diubah oleh transaksi.
-
Ti‘ adalah copy data item X dan disebut xi.
Untuk menyederhanakan, setiap item
data disimpan dalam blok tunggal.
Transaksi mentransfer data ke dan
dari area kerja ke buffer dengan operasi :
-
read(X)
memberi harga X dari basis data ke variabel lokal di memori bernama xi.
-
write(X)
memberi harga dari variabel lokal xi ke item data {X}
blok buffer.
-
Jika
blok dimana X berada tidak ada di memori utama,maka lakukan perintah input
(Bx).
Transaksi yang menggunakan kedua
operasi tersebut :
Ti: get vTransfer
read
(A)
A
ß A –
vTransfer
Write (A)
Read (B)
B ß B + vTransfer
Write (B)
Display A
Display B
Recovery and Atomicity
Mengubah database tanpa memastikan bahwa transaksi berhasil
baik akan membuat database dalam keadaan tidak konsisten. Seperti pada contoh
pentransferan uang, transaksi yang mengubah harus berjalan sempurna atau tidak
samasekali. Beberapa operasi output membutuhkan Ti (untuk output A dan B). Kerusakan dapat
terjadi bila salah satu perubahan pada item data tidak terjadi.
Dengan asumsi ruang disk yang dialokasikan
untuk basis data tidak rusak, maka da 3 pilihan skema untuk menjalankan
mekanisme recovery secara otomatis, yaitu :
1.
File
log dengan penundaan pengubahan
2.
File
log dengan pengubahan langsung
3.
Page
bayangan (Shadow paging)
Recovery
berbasis log
Sebuah log
adalah pelindung kestabilan penyimpan.
-
File
log ini berisi log record, yang berkorelasi dengan semua operasi
perubahan pada basis data.
Ketika transaksi Ti mulai,
dalam registernya akan tertulis <Ti start>log record
Sebelum Ti execute write(X),
dalam log record tertulis <Ti, X, V1, V2>, dimana V1
adalah nilai X sebelum ditulis,
dan V2 adalah nilai yang baru dari X.
-
Log
record mencatat bahwa Ti telah melakukan penulisan pada Xj
Xj mempunyai nilai
V1 sebelum ditulis, dan akan bernilaiV2 setelah
transaksi write.
Ketika Ti selesai, log record
menulis <Ti commit>
.
Log record langsung menulis dalam penyimpan
tetap bukan buffer
Duapendekatan penggunaan log
-
Penundaan
modifikasi database
-
Pengubahan
langsung database
Penundaan pengubahan database
Skema penundaan pengubahan database mencatat semua perubahan ke log,
tetapi menunda untuk writes setelah commit.
Anggap transaksi berjalan berurutan
Transaksi mulai dengan menulis record <Ti start> ke log.
Sebuah operasi
write(X) menyimpulkan bahwa di log record telah tertulis <Ti,
X, V>, dimana V adalah nilai baru untuk X
-
Nilai
lama tidak diperlukan dalam skema ini
ketika Ti telah commit, maka
dalam log tertulis <Ti commit>
Akhirnya, log record dibaca dan digunakan untuk
eksekusi penulisan selanjutnya
Selama recovery sesudah rash, sebuah transaksi
butuh penyelesaian <Ti start> dan<Ti commit>
dalam log.
Penulisan ulang transaksi Ti (
redoTi) mengubah nilai data menjadi baru.
Contoh transaksi T0 dan T1 (T0
dieksekusi sebelum T1):
T0: read (A) T1
: read (C)
A: - A - 50 C:- C-
100
Write (A) write (C)
read (B)
B:- B + 50
write (B)
Berikut ditunjukkan log dari 3 transaksi.
Jika ada kegagalan sistem:
1. redo(T0) yang
membuat semua nilai item data yang diubah T0 ke nilai-nilai baru
2. Untuk me-redo transaksi T0
hanya membutuhkan file log yang mengandung dua buah record yang
memuat <T0 start>
dan <T0 commit>
Pengubahan database langsung
Skema immediate database modification
adalah mekanisme dengan perubahan secara langsung ke basisdata meskipun
transaksi masih berlangsung.
Update log record harus ditulis sebelum item
database ditulis
-
Perubahan
aktual ke database tidak diperkenankan sebelum record yang bersesuaian dalam
file log dituliskan ke media penyimpan stabil
-
Sebelum
eksekusi sebuah operasi output(B), record dalam file log yang
berhubungan dengan item data B telah ditulis dalam media penyimpan stabil
Prosedur recovery untuk sistem ini ada dua:
-
undo(Ti)
yang merekam kembali nilai semua item data yang diubah oleh transaksi Ti
ke nilai awalnya.
-
redo(Ti)
yang membuat semua nilai item data yang diubah oleh transaksi Ti ke
nilai barunya
Setelah terjadi kerusakan database, skema
recovery akan melihat isi file log untuk mengetahui transaksi mana yang akan
diulangi, dan transaksi mana yang dibatalkan, dengan aturan:
-
Transaksi
Ti harus dikembalikan ke kondisi awal (undo) jika dalam
file log ada record <Ti start>, tetapi
tidak ada record <Ti commit>.
-
Transaksi
Ti harus dituntaskan (redo) jika dalam file log ada record <Ti
start> dan <Ti commit>.
Operasi undo dilaksanakan terlebih dahulu dari
pada redo.
Contoh:
Recovery untuk setiap kasus :
a.
undo
(T0): B kembali bernilai 2000 dan B ke 1000.
b.
undo
(T1) dan redo (T0): C kembali menjadi 700,
dan kemudian A dan B are diset ke 950 dan 2050 .
c.
redo
(T0) dan redo (T1): A dan B di set ke 950
dan 2050 demikian pula C di set
ke 600
Checkpoint
Dalam melakukan redo maupun undo sebuah
transaksi ada beberapa kesulitan :
1. Proses pencarian membutuhkan waktu
2. Sebagian besar transaksi yang perlu
diulangi sudah menuliskan perubahannya ke database sehingga tidak benar-benar
perlu diulangi
Untuk mengurangi beban waktu tambahan ini maka
digunakan checkpointing
3. Menulis semua record log yang sedang
berada di memori utama ke media penyimpanan stabil.
4. Menuliskan semua blok buffer yang
berubah ke disk.
5. Menuliskan record < checkpoint>
di file log ke media penyimpan stabil.
Selama recovery dibutuhkan kepastian bahwa
transaksi Ti mulai sebelum checkpoint :
1. Keberadaan record <checkpoint>
dalam file log memungkinkan sistem menjalankan proses recoverynya dengan lebih
efisien
2. Dari file log dapat diketahui bahwa
transaksi Ti yangmemiliki record <Ti commit>
yang muncul sebelum checkpoint terakhir .
3. Kondisi tersebut menandakan bahwa
perubahan kedalam database telah dituliskan
Untuk teknik recovery dengan perubahan
langsung,maka akan diterapkan ketentuan :
4. Untuk transaksi Ti dan semua
transaksi setelah Ti (dinyatakan sebagai Tk) yang tidak memiliki record <Tk
commit>, jalankan operasi undo(Tk)
5. Untuk transaksi Ti dan semua
transaksi setelah Ti (dinyatakan Tk) yang memiliki record <Tk
commit>,jalankan operasi redo(Tk)
Untuk teknik recovery dengan penundaan
pengubahan, operasi undo tidak dibutuhkan. Karena itu hanya ketentuankedua
yangharus dilakukan yaitu menjalankan operasi redo(Tk)
Contoh:
T1 dapat dilanjutkan
T2 dan T3 ulang
T4 batalkan
Shadow Paging
Shadow paging adalah alternatif lain selain file log yang
memerlukan akses ke disk yang lebih sedikit.
Dasar pemikiran: merawat dua halaman tabel
selama transaksi berlangsung current page table, dan shadow page
table
Simpan tabel bayangan dalam penyimpan tetap,
dengan demikian jejak transaksi tersimpan.
-
Shadow
page table tidak pernah berubah selama eksekusi
Pada waktu mulai maka kedua tabel ditandai.
Hanya page asli yang digunakan selama eksekusi transaksi berlangsung.
Kapanpun halaman ditulis untuk pertama kali
-
Copy
halaman ini diberikan ke halaman yang tidak dipakai.
-
Halaman
sekarang dipakai sebagai sumber untuk di copy
-
Update
dilakukan di copyan
Contoh Page Table
.png)
.png)
Tabel asli dan tabel bayangan terbentuk terbentuk setelah
transaksi
Untuk
mengcommit transaksi, harus dilakukan :
1.
Menjamin
semua page data yang ada dalam memori utama yang telah diubah oleh transaksi,
disalin ke dalam disk
2.
Simpan
tabel page yang aktif ke disk.
3.
Simpan
alamat disk dari tabel page aktif ke lokasi yang tetap dalam media penyimpanan
stabil yang telah berisi alamat tabel page bayangan. Aksi ini melakukan
penimpaan pada alamat tabel page bayangan yang lama. Tabel page aktif akan
menjadi tabel page yang baru dan transaksi commit.
Jika crash terjadi sebelum langkah ke 3 selesai
dikerjakan, kita akan kembali ke keadaan sebelum transaksi terjadi. Jika crash
terjadi setelah langkah ke 3 maka efek transaksi tersimpan, sehingga redo tidak
perlu.
Keunggulan dari shadow-paging
-
Tidak
adanya tambahan waktu untuk penulisan record ke dalam file log
-
Proses
recovery lebih cepat karena tidak butuh undo atau redo
Kelemahannya :
-
Tambahan
waktu untuk proses commit
Proses commit sebuah transaksi membutuhkan
sejumlah blok data untuk direkam, seperti blok data aktual, tabel page aktif
dan alamat disk dari tabel page aktif
-
Pemisahan
data ( fragmentasi )
Skema shadow paging menyebabkan page database
mengubah lokasinya saat terjadi perubahan data, sehingga terjadi fragmentasi
data yang dapat memperlambat transfer data dari database ke main memory
-
Data
sampah (garbage)
Setelah transaksi tercommit, page database yang
berisi data versi lama telah diubah menjadi tidak terakses dan page-page inilah
yang disebut sampah
-
Lebih
sulit dalam mengembangkan algoritma supay transaksi berjalan konkuren
Lebih menggunakan basis log
Recovery untuk transaksi konkuren
Meskipun banyak transaksi yang terlibat, sistemhanya akan
menggunakan sebuah buffer disk dan sebuah file log. Blok untuk buffer akan
dipakai secara bersama oleh semua transaksi . Jika sebuah transaksi T telah
mengubah item data Q, tidak boleh ad atransaksi lain yang boleh mengubah item
data yang sama hingga T telah di-commit atau di-roll back. Dapat memanfaatkan Locking Protocol Dua fase
yang ketat, yangmenerapkan penguncian dengan mode exclusive hingga akhir
transaksi.
File log dapat digunakan untuk meroll back transaksi yang
gagal dengan penelusuran mundur untuk setiap record yang terbentuk.
Dalam
sebuah sistem yang konkuren, record checkpoint dalam file log berbentuk <
checkpoint L>
diman L merupakan daftar transaksi yang aktif pada saat checkpoint
terjadi
Ketika
sistem melakukan pemulihan data maka yang dilakukan adalah:
- cari undo-list dan redo-list dalam keadaan kosong
- Lakukan penelusuran mundur
terhadap file log sampai ditemukannya
<checkpoint L> .
Untuk setiap record yang ditemukan :
-
Jika
record adalah <Ti commit>, tambahkan Ti
dalam redo-list
-
Ika
record adalah <Ti start>, maka jika Ti tidak ada dalam
redo-list, tambahkan Ti
dalam undo-list
- Untuk setiap Ti dalam L, jika Ti
itidaka ada dalam redo-list, tambahkan Ti dalam
undo-list
Begitu
kedua daftar terbentuk, maka proses recpovery akan dilakukan dengan
langkah-langkah sbb :
- Lakukanpenelusuran mundur sampai
ditemukan record <Ti start> untuk setiap
transaksiTi dalam undo-list.
-
Selama
penelusuran, jalankan operasi undo untuk setiap record dalam file log
yangmemiliki transaksi Ti pada undo-list.
- Cari record <checkpoint L>
terakhir dalam filelog.
- Lakukanpenelusuran maju pada
file log mulai dari record <checkpoint L> terakhir dan
jalankan operasi .
-
redo untuk
setiap record dalam file log yang dimiliki transaksi Ti yang ada dalam
redo-list
Contoh Recovery
Langa
algorithma recovery dalam file log:
<T0
start>
<T0,
A, 0, 10>
<T0
commit>
<T1
start>
<T1,
B, 0, 10>
<T2
start> /*
Scan in Step 4 stops here */
<T2,
C, 0, 10>
<T2,
C, 10, 20>
<checkpoint
{T1, T2}>
<T3
start>
<T3,
A, 10, 20>
<T3,
D, 0, 10>
<T3
commit>
Backup
Berdasarkan
waktu pelaksanaan atau strateginya ada 2 jenis operasi backup :
- Backup statis (Offline backup),
dimana backup dilakukan dengan lebih dulu menonaktifkan basis data secara
keseluruhan.
-
Backup
statis dapat dilakukan oleh sistem operasi atau dengan program khusus yang
diadakan DBMS.
-
Backup
statis dilakukan dengan penyalinan obyek database secara keseluruhan
- Backup dinamis (online backup),
dimana backup dilakukan tanpa penonaktifan basis data.
-
Backup
dinamis dilakukan dengan penyalinan database secara keseluruhan dengan cara
selektif, yaitu hanya terhadap tabel-tabel yang mengalami perubahan, misalnya
dengan checkpoint
-
Secara
periodik, dbms akan melakukan pembentukan file dump di media penyimpanan stabil
yang berisi salinan dari semua tabel sebelum terjadinya perubahan
Sistem backup jarak jauh
Remote backup memungkinkan sistem berjalan terus meskipun
penyimpan utama mengalami kerusakan.
.png)
Pendeteksian
kerusakan:
-
Harus
menerapkan beberap asaluran komunikasi yang independen diantara situs utama
dengan situs backup.
Pemindahan
kendali:
-
Ketika
situs utama mengalami kerusakan situs backup akanmengambil alih pemrosesan
menjadi situs primer baru
Waktu untuk
pemulihan
-
Jika
isi file log pada situs remotebackup menjadi besar sekali proses recovery akan
emmakan waktu, untuk dapat diatas dengan melakukan record redo secara periodik
-
Konfigurasi
hot spare dapat membuat proses pengalihan kontrol berlangsung cepat
Waktu untuk
commit
-
supaya
ada jaminan bahwa perubahan pada transaksi tercommit, sebuah transaksi tidak
harus dinyatakan commit sebelum record lognya diterima situs backup.
Derajat
durabilitas dapat diklasifikasikan sebagai :
-
One
safe. Sebuah transaksi dicommit segera setelah record log tersebut telah
ditulis pada situs lokal.
-
Two
very safe. Sebuah transaksi di commit segera setelah record log tersbut telah
direkam baik pada situs primer maupun backupnya.
Block
Storage Operations
.png)
Portion of
the Database Log Corresponding to T0 and T1
State of the Log and Database Corresponding to T0 and T1
Portion of the System Log Corresponding to T0 and T1
State of System Log and Database
Corresponding to T0 and T1