With regard to the CAP Theorem, Riak is an eventually-consistent database with AP semantics. But, this may soon change.
This talk will present on-going research and development to add true strongly-consistent/CP semantics to Riak. When discussing Dynamo-inspired datastores (Riak, Cassandra, Voldemort), people often use the term "strong consistency" to describe accesses where R + W > N. But, this is not true strong consistency. Concurrent requests still generate non-deterministic results, while node failures and network partitions can lead to partial write failures that provide no guarantees on value consistency.
This work aims to enable true sibling-free access to Riak that is both immediately consistent as well as tolerant to node failures and network partitions. This work enables use cases such as atomic counters and the use of non-monotonic/non-convergent data types with Riak. Finally, unlike previous work in this area (riakual/riak_zab), the work does not require two-phase commit for every operation, but instead relies upon optimistic commits and read-time consistency resolution in the case of partial write failures. In the common case, the same number of round-trip messages are needed for both the existing AP semantics and new CP semantics.
This talk will present an in-depth, but easy-to-understand discussion on this new approach, and is the first time this topic has been presented outside of Basho.