Search code examples
couchdbcloudantmvcc

How many document revisions are kept in CouchDB / Cloudant, and for how long?


In CouchDB and Cloudant, when documents are changed, the database holds on to previous versions. What gets kept, and for how long?


Solution

  • Cloudant and CouchDB keep the document's metadata forever (id, rev, deleted and conflict). Document contents are deleted during compaction (automatic in Cloudant, manual in CouchDB), with one exception: in the case of a conflict, we'll keep the document contents until the conflict is resolved.

    For each document, we keep the last X revisions, where X is the number returned by {username}.cloudant.com/{db}/_revs_limit, defaulting to 1000. Revisions older than the last 1000 get dropped. You can change _revs_limit by making a PUT request with a new value to that endpoint. For example:

    curl -X PUT -d "1500" https://username.cloudant.com/test/_revs_limit
    

    So, if a document is replicated to two nodes, edited 1001 times on node A, and then replicated again to node B, it will generate a conflict on node B (because we've lost the information necessary to join the old and new edit paths together).