Ankita's quick guide (still a WIP) to key features in data stores, with focus on indexing support. (If you find something to be inaccurate or know another data store that does well on most/all the parameters, let me know!)
Data Store (& Link) | Indexed | In-mem | Dist/Scalable data, index | Durable | Latency | Throughput | Consistency | API | Additional comments |
---|
RAMCloud | y | y | y, y | y [n] | ? | ? | Linearizable | keys - val |
| | |
|
| Transaction safe, ACID compliant | relational |
| | | | |
|
| BASE (Basically Available Soft-state Eventual Consistency) + Can choose consistency level | partitioned rows (similar to sql) + denormalization + materialized views | *: each node indexes data it holds locally |
MongoDB | y | cache |
| | |
|
|
| document oriented storage: JSON-style docs with dynamic schemas |
| | | | | | | |
|
|
| ACID for transactions; unclear otherwise. | relational | Commercial H-store |
G-Store | n |
| | | | | | | | | | | | | | | | | | |
| Strong in gen, consistent global indexes | relational + sql | Uses Spanner; Google ads used MySQL. This made their db scalable. |
PNUTS [paper] | kind-of* | n | y, - | y (2) |
| |
|
| Relaxed | Basic relational | *: Optional secondary table lazily maintained; keyed on index key |
DynamoDB | y | n (ssd) | y, ? | y (2) | single digit ms |
|
| Strong consistency on reads | tables, no fixed schemas. each item: diff num of attrs |
| | | | | | | |
|
| Timeline-consistent | document oriented NoSQL; has secondary index | Uses MySQL/InnoDB as storage engine. Also uses Lucene+Databus+Helix |
Postgres | ? (1) | n | y, ? | y (2) |
| |
|
| ACID compliant, MVCC | object-relational |
| | | | | | | | | | | |
|
|
| Key ops are linearizable; Warp (commercial extension) has ACID transactions | key-val; rich datatypes |
| | | |
|
|
| Strictly consistent reads and writes | versioned, non-relational; has global and local indexes | Modeled after BigTable |
Cloudera Impala | ? (1) | n | y, ? |
| | | |
|
|
|
| SQL interface | Massively parallel processing arch for perf w/ Hadoop Scalability |
Redis | n | y | y, - | optional |
| |
|
|
| key-val; keys can contain strings, hashes, lists, sets, sorted sets |
| | |
|
| Eventually consistent | JSON |
| | | | | | | | | | | | | | | | Footnotes:
(1): Probably yes since they claim to be relational / sql.
...