NoSQL Databases: a Survey and Decision Guidance
Felix Gessert
53226

Hi Felix,

Greta article! I am product manager for Riak TS with Basho. Several remarks:

“Techniques typically used for these purposes are versioning, vector clocks, gossiping and read repair (e.g. in Dynamo) and convergent or commutative datatypes (e.g. in Riak).”

Both Cassandra and Riak use gossiping and read repair. Riak also uses vector clocks (actually more advanced version, called dotted version vectors — DVV) for usual KV operations, Cassandra does not, it uses timestamps (Last Write Wins = LWW). Additionally, as you mentioned, Riak has CRDTs (convergent or conflict-free replicated data types), which have pre-defined conflict resolution strategies, and they do not use vector clocks.

Table 1 — assumes Riak KV with a default ‘bitcask’ backend engine. However, newer product Riak TS uses LevelDb backend and adds some BigTable-inspired features, specifically:
* Scan queries (SELECT or list keys)
* Sorting 
* Hybrid hash-range sharding (using custom QUANTUM function in CREATE TABLE)

Note, that Riak does not provide in-place updates both for bitcask or for leveldb. Both are append-only storage.

About In-Database Analytics — Riak indeed provides MapReduce framework and customers have been using it more or less successfully for specific tasks. Heavy number crunching is not exactly a good use of build-in MR, we recommend using external tools, like adding Apache Spark (via Riak Spark Connector).

Some remarks for Table 2:
* Scans — time slice range queries for TS tables
* Disk latency — 1 disk seek for bitcask, ~ several for leveldb
* Write performance — no update-in-place
* Atomicity — single KV pair or TS record 
* Special data types: Counter, Set, Map, HyperLogLog, Flag, Register
* Queries — please add time-slice scan (with optional filtering, grouping, and sorting)

Decision tree — looks nice, but IMHO it is just one of many possible trees, and not the one most people use.

Again, very cool stuff, I wish I had it several years earlier :)

If you want to discuss offline, please ping me at LinkedIn. Happy to provide pointers to Docs or more info about Riak features.

Best,

Pavel

Show your support

Clapping shows how much you appreciated Pavel Hardak’s story.