Recovery pada Database
Recovery dalam database sangat bergantung pada transaction log. Transaction log mencatat semua transaksi dan modifikasi database yang dibuat oleh setiap transaksi. Maka dari itu, transaction log merupakan komponen penting yang ada di setiap sql server database karena apabila ada kegagalan maka data akan di restore/recover berdasarkan transaction log yang ada. Contoh (dengan variable x ):
1. Start_Transaction(x) = Melakukan pencatatan transaction x
2. Read_item(x,a) = Entry log mencatat transaction x membaca nilai database item a
3. Write_item(x,a,value_lama,value_baru) = Entry log mencatat pengubahan nilai dari item database a yang dilakukan oleh transaction x
4. Commit(x) = entry log mencatat bahwa transaksi x berhasil dilakukan dan mencatat transaksi x secara permanen ke database(commited)
5. Abort(x) = mencatat bahwa transaksi x digagalkan
6. Checkpoint = menghapus log sebelumnya dari sistem dan menyimpan secara permanen di disk.
Transaction X akan dianggap selesai(commited) apabila semua operasinya yang mengakses database berhasil dilaksanakan dan tidak dapat dibatalkan(abort). Apabila transaction x telah commited maka data akan dicatat secara permanen di database. Commited transaction selalu melibatkan penulisan commit ke log file dan disk. Pada saat terjadi crash maka data akan dicari dari log file mulai dari entry (Start_Transaction(x)) tetapi belum menuliskan commit (x). Transaction ini terkadang memerlukan roll back untuk membatalkan pengaruhnya pada database pada saat proses pemulihan.
Contoh beberapa tekhnik backup :
1. Full database backup = pemulihan data lengkap mencakup data dan basis data, metadata, termasuk katalog teks
2. Differential backup = Hanya menyimpan perubahan data yang telah terjadi sejak cadangan basis data lengkap terakhir. Ketika data yang sama telah berkali-kali diubah sejak cadangan terakhir, diffrenetial backup menyimpan versi terbaru dari data yang diubah.
3. Transaction log backup = Dalam backup ini, semua peristiwa yang terjadi di database, seperti catatan setiap pernyataan yang dieksekusi di back up. Ini adalah cadangan entry log transaksi dan berisi semua transaksi yang terjadi pada database.
Penampungan data menggunakan transaction log juga disebut sebagai Log-Based Recovery. Log-based recovery mempunyai dua teknik yaitu:
· Deffered database modification dimana semua pergantian data dimasukan ke dalam sebuah penampungan dan ketika transaksi tersebut di komit, maka database sebenarnya akan di-update
· Immediate database modification dimana semua pergantian data akan langsung dilakukan terhadap database.
Selain menggunakan Log-Based Recovery, DBMS juga dapat menggunakan teknik Recovery with Concurrent Transactions yang dapat digunakan ketika transaction log dari masing-masing transaksi sedang terjadi dalam waktu yang bersamaan sehingga data dapat bersisipan dan data yang ingin di-recover tidak pasti. Dengan demikian, DBMS membuat Checkpoint dimana DBMS menyimpan state satu database ketika semua transaksi di commit. DBMS akan menyimpan informasi database ini saat semuanya sudah ter-komit dan menjadikanya ‘tempat asal’ dimana database bisa kembali jika semuanya rusak. Ketika sistem mempunyai transaksi yang sedang berjalan ketika sistem crash, maka:
1. Sistem recovery akan membaca sisa data dari titik crash dan kembali ke titik checkpoint
2. Sistem membuat dua list, undo dan redo
3. Jika sistem membaca command Start dan Commit, makan transaksi itu akan dimasukan ke dalam list redo
4. Jika sistem membaca command Start tetapi tidak ada Abort atau Commit, maka transaksi itu akan dimasukan kedalam undo list.
Hal ini akan dilakukan sampai semua transaksi telah diperhitungkan dan semua transaksi di redo list akan dimasukan kembali dan semua yang di undo list tidak akan dimasukan kembali.
Cara untuk menfasilitasi backup atau recovery transaction dalam database bisa dilakukan dengan berbagai macam cara, contohnya:
· Backup Mechanism yaitu membuat backup dari database dalam sebuah interval untuk menjaga data jika terjadinya sistem failure.
· Logging facilities yaitu membuat transaction log untuk menyatat perubahan apa yang dibuat ke dalam database
· Checkpoint facilities yang mengupdate backup database sehingga perubahan terkini dapat dibuat permanen dan recovery data terkini lebih mudah.
· Recovery manager yang membantu database untuk mengembalikan dirinya ke state dimana database masih stabil sebelum sistem-failure.
Refrences:
Himanshi. (2019). Database Recovery Techniques in DBMS. Retrieved from GeeksforGeeks: https://www.geeksforgeeks.org/database-recovery-techniques-in-dbms/
Thakur, S. (2019, June 15). DATABASE RECOVERY IN DBMS AND ITS TECHNIQUES. Retrieved from What is DBMS: https://whatisdbms.com/database-recovery-in-dbms-and-its-techniques/
tutorialspoint. (2019). DBMS – Data Recovery. Retrieved from Tutorialspoint: https://www.tutorialspoint.com/dbms/dbms_data_recovery.htm