Data stores reference for Indexing
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 |
|---|---|---|---|---|---|---|---|---|---|
y | y | y, y | y [n] | ? | ? | Linearizable | keys - val |
| |
y | n | y, ? (replication) | y |
|
| Transaction safe, ACID compliant | relational |
| |
y | n | y, ? (replication & partitioning) | y |
|
|
| SQL and NoSQL |
| |
y | cache | y, y* | y |
|
| 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 | |
y | cache |
| y |
|
|
| document oriented storage: JSON-style docs with dynamic schemas |
| |
? (1) | y | y, ? |
|
|
|
| row-based-relational |
| |
? (1) | y | y, ? |
|
|
| ACID for transactions; unclear otherwise. | relational | Commercial H-store | |
n |
|
|
|
|
|
|
|
| |
n |
|
|
|
|
|
| key-val |
| |
n |
|
|
|
|
| Externally-consistent |
|
| |
y | n | y, ? | y | > mysql |
| Strong in gen, consistent global indexes | relational + sql | Uses Spanner; Google ads used MySQL. This made their db scalable. | |
kind-of* | n | y, - | y (2) |
|
| Relaxed | Basic relational | *: Optional secondary table lazily maintained; keyed on index key | |
y | n (ssd) | y, ? | y (2) | single digit ms |
| Strong consistency on reads | tables, no fixed schemas. each item: diff num of attrs |
| |
n |
|
|
|
|
| Strong | multi dimensional map which supports basic operations |
| |
y | n | y, ? | y |
|
| Timeline-consistent | document oriented NoSQL; has secondary index | Uses MySQL/InnoDB as storage engine. Also uses Lucene+Databus+Helix | |
? (1) | n | y, ? | y (2) |
|
| ACID compliant, MVCC | object-relational |
| |
n |
|
|
|
|
| Causal+ | key-val |
| |
n |
|
|
|
|
| Causal | column-store |
| |
y | n | y, ? |
|
|
| Key ops are linearizable; Warp (commercial extension) has ACID transactions | key-val; rich datatypes |
| |
n |
| y, - |
|
|
| Strictly consistent reads and writes | versioned, non-relational; has global and local indexes | Modeled after BigTable | |
? (1) | n | y, ? |
|
|
|
| SQL interface | Massively parallel processing arch for perf w/ Hadoop Scalability | |
n | y | y, - | optional |
|
|
| key-val; keys can contain strings, hashes, lists, sets, sorted sets |
| |
y |
| y, ? | y |
|
| Eventually consistent | JSON |
| |
y |
|
|
|
|
|
|
| Commercial couchdb on steroids | |
n | cache | y | y |
|
|
| hash table |
| |
|
|
|
|
|
|
| relational? |
|
Footnotes:
(1): Probably yes since they claim to be relational / sql.
(2): Probably yes since it is not in-memory.
Sources:
Websites/papers linked in the first column and official blog/wikis.