CouchDB
Document store, MVCC, CouchDB replication model.
Theory
CouchDB is a document-oriented NoSQL database from Apache. Documents are JSON objects stored with a unique _id and a _rev (revision) field. CouchDB's defining characteristic is its HTTP/REST API — every document, database, and query is accessible via a standard HTTP endpoint. No special client protocol: curl is a valid CouchDB client.
MVCC (Multi-Version Concurrency Control): CouchDB never overwrites documents. Each update creates a new revision (_rev changes from 1-abc to 2-def). Conflicts arise when two nodes update the same document concurrently — CouchDB records both revisions and allows the application to resolve the conflict. This is unlike optimistic locking: both writes succeed, conflict resolution happens after the fact.
Views are CouchDB's query mechanism. You define Map/Reduce functions in JavaScript: map emits key-value pairs from documents, reduce aggregates them. Views are built incrementally — CouchDB processes new/changed documents and updates the B-tree index without full recomputation. Querying a view: GET /db/_design/myapp/_view/by_date?startkey="2024"&endkey="2025".
Mango queries (CouchDB 2.0+): selector-based queries similar to MongoDB: {"selector": {"status": "active", "amount": {"$gt": 100}}}. Mango queries require an index (CREATE INDEX) for performance — without one, they do a full scan. For most application queries, Mango is simpler than Map/Reduce views; use views for complex aggregations.
Replication: CouchDB's killer feature. A replicate API call (POST /_replicate) syncs two CouchDB databases — local-to-local, local-to-remote, or remote-to-remote. Replication is bidirectional and continuous. PouchDB (JavaScript) embeds CouchDB-compatible storage in browsers and mobile apps, syncing automatically when online. This makes CouchDB the natural choice for offline-first applications.
Fauxton is the built-in web UI (at /_utils). It provides a database browser, document editor, view/index management, and replication configuration. It's useful for development and debugging but not for production monitoring (use Prometheus + CouchDB Exporter for that).
Comparison with MongoDB: CouchDB uses HTTP (accessible from everywhere, slower than binary protocol), MongoDB uses its own wire protocol (requires a MongoDB driver, faster). CouchDB replication and offline-first story is stronger; MongoDB's query capabilities (aggregation pipeline, geospatial, full-text) are broader. CouchDB is a better fit for sync/offline use cases; MongoDB for general-purpose document storage with complex query needs.
Architecture Diagram
Users / clients
|
CouchDB
|
Core services
|
Data + observabilityExamples
# CouchDB
# Document store, MVCC, CouchDB replication model.
# Validate in staging before production rollout.
Key Concepts
Interview Questions
What problem does CouchDB solve?
It addresses the core use case described in production architecture — map features to reliability, scale, or velocity outcomes.
Key components of CouchDB?
Identify inputs, outputs, control plane, data plane, and failure domains — interviewers want structured decomposition.
Common production pitfalls?
Misconfiguration, missing observability, no rollback path, and scaling bottlenecks under peak load.
How do you test changes safely?
Staging parity, canary/gradual rollout, automated health checks, and documented rollback.
Metrics to prove success?
Error rate, latency percentiles, throughput, cost, and toil reduction — pick one primary SLO.
Beginner vs advanced concern?
Beginners focus on setup; advanced teams focus on blast radius, security boundaries, and operability at 10× scale.
Best Practices
- Treat CouchDB config as code with review and CI validation.
- Define SLOs and dashboards before production cutover.
- Document rollback and ownership for on-call.
- Use least privilege for credentials.
Common Mistakes
- Adopting CouchDB without measurable success criteria.
- No staging environment mirroring production constraints.
- Missing rollback path during incidents.
- Undocumented on-call expectations.
Cheat Sheet
Practical Exercises
Stand up CouchDB locally or in free tier; document commands and failure recovery.
Introduce misconfiguration; practice detection and rollback under time limit.