Riak What is Riak? Riak is an open source distributed, key-value database. Riak is architected for Availability, Fault-Tolerance, Operational Simplicity, and Scalability.
Dynamo Dynamo: Amazon’s Highly Available Key-value Store This paper presents the design and implementation of Dynamo, a highly available key-value storage system that some of Amazons core services use to provide an always-on experience.
CAP Theorem • Consistency • Availability • Partition-tolerance Eventual Consistency A value will eventually see all its updates, once all partition repairs are complete.
Extras Not only a Key-Value store. We also have: • MapReduce (Erlang & JS) • Links & Link-walking • Secondary Indexes • Fulltext Search (& More Soon) • CRDTs
Extras Not only a Key-Value store. We also have: • MapReduce (Erlang & JS) • Links & Link-walking • Secondary Indexes • Fulltext Search (& More Soon) • CRDTs
Riak Search - Mk II (Coming Soon) Yokozuna Integrate Solr itself with a Riak Cluster: use Riak for distribution and Solr for searching. https://github.com/basho/yokozuna
An Approach One Approach to Eventual Consistency: • Use allow_mult=true (not the default) • Teach your application how to resolve conflicts • Fetch all siblings • Replace siblings with merged value
Another Approach • Each “actor” maintains their own per-actor data • Upon fetch, merged into a single object In General: • Store the data by “actor” • Teach your application how to resolve that structure into an object
Another Approach • Each “actor” maintains their own per-actor data • Upon fetch, merged into a single object In General: • Store the data by “actor” • Teach your application how to resolve that structure into an object • CRDTs: Convergent Replicated Data Types