Please keep in mind that this is not an authoritative comparison and it may contain mistakes. Plus as for many such systems, the aspects covered are in reality not that easy to be described in just a few words.
Platforms:
- RethinkDB: Linux, OS X
- CouchDB: where Erlang VM is supported
Data model: - both JSON
Data access:
- RethinkDB: Unified chainable dynamic query language
- CouchDB: key-value, incremental map/reduce
Javascript integration:
- RethinkDB: V8 engine; JS expressions are allowed pretty much anywhere in the RQL
- CouchDB: Spindermonkey (?); incremental map/reduce, views are JS-based
Access languages:
- RethinkDB: Protocol Buffers
- CouchDB: HTTP
Indexing:
- RethinkDB: Multiple types of indexes (primary key, compound, secondary, arbitrarily computed)
- CouchDB: incremental indexes based on view functions
Sharding:
- RethinkDB: Guided range-based sharding (supervised/guided/advised/trained)
- CouchDB: -
Replication:
- RethinkDB - sync and async replication
- CouchDB - bi-directional replication can be set between multiple CouchDB servers
Multi-datancenter:
- RethinkDB - Multiple DC support with per-datacenter replication and write acknowledgements
- CouchDB - (?)
MapReduce:
- RethinkDB: Multiple MapReduce functions executing ReQL or Javascript operations
- CouchDB: views are map/reduce but they need to be pre-defined
Consistency model:
- RethinkDB: Immediate/strong consistency with support for out of date reads
- CouchDB: http://guide.couchdb.org/draft/consistency.html
Atomicity:
- both document level
Durability:
- both durable
Storage engine:
- RethinkDB: Log-structured B-tree serialization with incremental, fully concurrent garbage compactor
- CouchDB: B-tree
Query distribution engine:
- RethinkDB: Transparent routing, distributed and parallelized
- CouchDB: none
Caching engine:
- RethinkDB: Custom per-table configurable B-tree aware caching
- CouchDB: none (?)