Question

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

Was it helpful?

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).

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top