4 ms·
Can anyone compare/contrast RethinkDB to CouchDB and MongoDB?
by mey 13y ago
Can anyone compare/contrast RethinkDB to CouchDB and MongoDB?
- coffeemug 13y agoYou can check out the technical comparison (http://rethinkdb.com/docs/comparisons/mongodb/ http://rethinkdb.com/docs/comparisons/mongodb/), and a more biased comparison overview (http://rethinkdb.com/blog/mongodb-biased-comparison/ http://rethinkdb.com/blog/mongodb-biased-comparison/). Hope this helps!
- alexpopescu 13y agoWhile 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 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 (?)
- apendleton 13y agoAre there any plans for Couch-style incrementally-computed aggregates/views in RethinkDB?
- alexpopescu 13y agoConsidering RethinkDB's secondary indexes can be defined around pretty complex ReQL expressions [1] you could already get some of it already. [1] http://rethinkdb.com/docs/pragmatic-faq/#how-do-i-take-advantage-of-secondary-indexes http://rethinkdb.com/docs/pragmatic-faq/#how-do-i-take-advan...
- apendleton 13y agoYeah, I thought about that, but it seems like you can only use them to get the "map" part of map/reduce... no aggregation. Unless I'm missing something.
- alexpopescu 13y ago> Yeah, I thought about that, but it seems like you can only use them to get the "map" part of map/reduce... no aggregation. Unless I'm missing something. I think that's correct.
- coffeemug 13y agoYes. RethinkDB is really well set up to do this due to the underlying parallelized map/reduce infrastructure. This feature is a matter of scheduling priorities. I don't have an ETA yet, but it will almost certainly get done in the medium-term.
- apendleton 13y agoAwesome. If there's a Github issue about it I'd be interested to follow it.
- coffeemug 13y ago