| While both CouchDB and RethinkDB store JSON, the differences between them are more radical. I cannot post an as-extensive comparison as the one with MongoDB, but here are some aspects. 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 (?) |