Feature matrix of NoSQL databases, listed in Appendix of Seven Databases in Seven Weeks:
MongoDB | CouchDB | Riak | Redis | PostgreSQL | Neo4j | HBase | |
---|---|---|---|---|---|---|---|
Genre | Document | Document | Key-value | Key-value | Relational | Graph | Columnar |
Version | 2.0 | 1.1 | 1.0 | 2.4 | 9.1 | 1.7 | 0.90.3 |
Datatypes | Typed | Typed | Blob | Semi-typed | Predefined and typed | Untyped | Predefined and typed |
Data Relations | None | None | Ad hoc (Links) | None | Predefined | Ad hoc (Edges) | None |
Standard Object | JSON | JSON | Text | String | Table | Hash | Columns |
Written in Language | C++ | Erlang | Erlang | C/C++ | C | Java | Java |
Interface Protocol | Custom over TCP | HTTP | HTTP, protobuf | Simple text over TCP | Custom over TCP | HTTP | Thrift, HTTP |
HTTP/REST | Simple | Yes | Yes | No | No | Yes | Yes |
Ad Hoc Query | Commands, mapreduce | Temporary views | Weak support, Lucene | Commands | SQL | Graph walking, Cypher, search | Weak |
Mapreduce | JavaScript | JavaScript | JavaScript, Erlang | No | No | No (in the distributed sense) | Hadoop |
Scalable | Datacenter | Datacenter (via BigCouch) | Datacenter | Cluster (via master-slave) | Cluster (via add-ons) | Cluster (via HA) | Datacenter |
Durability | Write-ahead journaling, Safe mode | Crash-only | Durable write quorum | Append-only log | ACID | ACID | Write-ahead logging |
MongoDB | CouchDB | Riak | Redis | PostgreSQL | Neo4j | HBase | |
Secondary Indexes | Yes | Yes | Yes | No | Yes | Yes (via Lucene) | No |
Versioning | No | Yes | Yes | No | No | No | Yes |
Bulk Load | mongoimport | Bulk Doc API | No | No | COPY command | No | No |
Very Large Files | GridFS | Attachments | Lewak (deprecated) | No | BLOBs | No | No |
Requires Compaction | No | File rewrite | No | Snapshot | No | No | No |
Replication | Master-slave (via replica sets) | Master-master | Peer-based, master-master | Master-slave | Master-slave | Master-slave (in Enterprise Edition) | Master-slave |
Sharding | Yes | Yes (with filters in BigCouch) | Yes | Add-ons (e.g., client) | Add-ons (e.g., PL/Proxy) | No | Yes via HDFS |
Concurrency | Write lock | Lock-free MVCC | Vector-clocks | None | Table/row writer lock | Write lock | Consistent per row |
Transactions | No | No | No | Multi operation queues | ACID | ACID | Yes (when enabled) |
Triggers | No | Update validation or Changes API | Pre/post-commits | No | Yes | Transaction event handlers | No |
Security | Users | Users | None | Passwords | Users/groups | None | Kerberos via Hadoop security |
Multitenancy | Yes | Yes | No | No | Yes | No | No |
Main Differentiator | Easily query Big Data | Durable and embeddable clusters | Highly available | Very, very fast | Best of OSS RDBMS model | Flexible graph | Very large-scale, Hadoop infrasturcture |
Weaknesses | Embed-ability | Query-ability | Query-ability | Complex data | Distributed availability | BLOBs or terabyte scale | Flexible growth, query-ability |