What Does Durability Mean?
Durability in databases is the property that ensures transactions are saved permanently and do not accidentally disappear or get erased, even during a database crash. This is usually achieved by saving all transactions to a non-volatile storage medium.
Durability is part of the ACID acronym, which stands for atomicity, consistency, isolation and durability. ACID is a set of properties guaranteeing the reliability of all database transactions.
Techopedia Explains Durability
There are several organizations, such as banks and hospitals, whose very existence depends on the information systems run on databases. The ability to recover 100% of all committed transactions is absolutely crucial. The recovery rate must be 100 percent, not 90 percent or even 99.6 percent. In addition, this recovery must be permanent, meaning all transactions must be reconstructed, even if the database server crashes due to OS failure or power loss.
You can immediately see why durability, as part of ACID, is a holy grail for designers of relational database systems. ACID, a term popularized by by Theo Harder and Andreas Reuter in their 1983 article “Principles of Transaction-Oriented Database Recovery”, is the set of qualities that, when properly implemented, will always guarantee the reliable processing, handling and storage of all database transactions.
Durability in modern relational database systems is usually achieved by means of transaction logs- recyclable files – files used to store all database transactions in a session. Once a user issues a commit command, then the transaction is first written to the database files stored on a non-volatile medium such as a hard disk, which is done before confirming to the user that the save has occurred. If a database crashes before the save, the data is still on the transaction logs the next time the database is restarted, but any uncommitted changes are undone or rolled back. In distributed computing where servers are geographically dispersed, this guarantee is difficult or tricky to implement, so the same is achieved by use of the two-phase commit.