Here are my notes on Angel Pizarro’s “CouchDB: Sectional Sofa Edition” presentation.
- ACID & MVCC guarantees on a per-document basis
- MVCC: Multi-Version concurrency control
- instead of locks, CouchDB just serves up old data
- MapReduce model for indexing and views
- Back-ups and replication are simple:
- backup: copy the database files
- replication: a special POST request
- CouchDB assumes:
- each document is completely independent and should be self-sufficient
- operations across documents are not ACID; multi-document (multi-row) transactional semantics must be handled by the app
- you can live with slightly stale data being served to clients
- CouchDB uses B+ Tree with append only
- CouchDB: eventual consistency and horizontally scalable
As there is no video or audio accompanying the slides, I am still a bit confused about the last part of the presentation on “Distributed CouchDB Datastores” (slide 60), as I cannot say what is and what is not supported by CouchDB.