Recoverability in DBMS: Definition, How It Works, and Examples
DBMS, recoverability is the ability to restore the database to a correct state after a failure or crash. It ensures that all committed transactions are saved permanently and uncommitted ones are undone to keep data consistent.How It Works
Recoverability in a database system works like a safety net that catches data when something goes wrong, such as a power failure or software crash. Imagine writing a document and saving it regularly so you don't lose your work if your computer shuts down unexpectedly. Similarly, a DBMS uses logs and checkpoints to keep track of changes made by transactions.
When a failure happens, the system looks at these logs to decide which changes were fully completed (committed) and which were not. It then restores the database by keeping all committed changes and removing any partial or uncommitted changes. This process ensures the database stays accurate and reliable, just like fixing a book to its last good page after a spill.
Example
class SimpleDBMS: def __init__(self): self.data = {} self.log = [] # stores (transaction_id, operation, key, value) self.committed = set() def start_transaction(self, tid): print(f"Transaction {tid} started") def write(self, tid, key, value): self.log.append((tid, 'write', key, value)) print(f"Transaction {tid} writes {key} = {value}") def commit(self, tid): self.committed.add(tid) print(f"Transaction {tid} committed") def recover(self): print("Recovering database...") for tid, op, key, value in self.log: if tid in self.committed and op == 'write': self.data[key] = value print("Recovery complete. Current data:", self.data) # Usage db = SimpleDBMS() db.start_transaction(1) db.write(1, 'x', 10) db.commit(1) db.start_transaction(2) db.write(2, 'y', 20) # Transaction 2 does not commit # Simulate failure and recovery print("--- Failure occurs ---") db.recover()
When to Use
Recoverability is essential in any system where data accuracy and reliability matter, such as banking, online shopping, or booking systems. It is used whenever transactions modify data and the system must handle unexpected failures without losing committed work.
For example, if you transfer money between accounts, recoverability ensures that either the full transfer happens or none of it does, preventing errors like money disappearing or being duplicated. It is also critical during system crashes, power outages, or software bugs to keep the database consistent and trustworthy.
Key Points
- Recoverability ensures the database can return to a consistent state after failures.
- It relies on transaction logs to track changes and commits.
- Only committed transactions are saved permanently; uncommitted ones are undone.
- It prevents data loss and corruption in critical applications.