# Is there a CAP theorem for Durability?

DevFeed: [Is there a CAP theorem for Durability?](<https://devfeed.tech/articles/is-there-a-cap-theorem-for-durability-12477.md>)

Original publisher: [Read original article](<http://brooker.co.za/blog/2015/09/26/cap-durability.html>)

Author: Marc Brooker

Published: 2015-09-26T00:00:00Z

Content type: article

Language: en

Sources: [Marc Brooker's Blog](<https://devfeed.tech/sources/marc-brooker-s-blog.md>), [Marc Brooker's Blog](<https://devfeed.tech/sources/marc-brooker-s-blog-2.md>)

Topics: [distributed-systems](<https://devfeed.tech/topics/distributed-systems.md>), [Persistence](<https://devfeed.tech/topics/persistence.md>), [Databases](<https://devfeed.tech/topics/databases.md>), [Availability](<https://devfeed.tech/topics/availability.md>)

Tags: [availability](<https://devfeed.tech/tags/availability.md>), [databases](<https://devfeed.tech/tags/databases.md>), [distributed-systems](<https://devfeed.tech/tags/distributed-systems.md>), [latency](<https://devfeed.tech/tags/latency.md>), [persistence](<https://devfeed.tech/tags/persistence.md>), [security](<https://devfeed.tech/tags/security.md>)

## AI overview

The article explores whether a CAP-like theorem could describe durability in distributed systems. It distinguishes persistence to stable storage, data loss, and loss of recently committed data, then defines durability as the ability to tolerate a specified number of node failures without losing data. It relates this definition to consensus, network partitions, availability, and fault tolerance.

## Source excerpt

Is there a CAP theorem for Durability? Expanding the taxonomy of distributed systems. The CAP theorem considers only two of the axes of tradeoffs in distributed systems design. There are many others, including operability, security, latency, integrity, efficiency, and durability. I was recently talking over a beer or two with a colleague about whether there is a CAP theorem for durability (DAP theorem?). These are my thoughts. What is durability? To have a meaningful conversation, we need to talk about what durability is. Its typically given a few meanings: Persistence of information to stable storage, to tolerate loss of in-memory (volatile) state. This is the D in ACID. Loss of the data stored in a database. This is typically measured using population statistics. Annualized failure rate (AFR), and Mean Time to Data Loss (MTTDL) are typical, easy to understand, (but flawed1) metrics. Loss of recently committed transactions or recently-written data. On single-node systems, these topics are deeply connected. Persistence to stable storage is required to keep data around across crashes. RAID and backups2 are widely used to protect against permanent loss of the single system. Traditionally, non-zero RPO is tolerated on node failure. Distributed systems can be different. Instead of having a single gold-plated node with its own great durability properties, distributed databases spread the risk out over multiple machines. That unlinks the topics of persistence to stable storage and loss of data, where systems can be tolerant to some number of node reboots without any stable storage. For the rest of this post I'll define durability as "the ability to tolerate t node failures without losing data". It's a flawed but hopefully useful definition. What has this all got to do with CAP? The limits on consistency are well-known. CAP is one boundary in one system model and set of definitions, another (possibly more useful) one is from the all-time classic Consensus in the Presence o