Riak KV is an open source Erlang application that is distributed using the riak_core Erlang library.
Riak KV provides a key/value datastore, optimised for very reliable storage of relatively large objects, with low variance in response times under both high load and failure conditions. Riak is designed to be highly available, even when clusters are built with low-cost components that lack internal resilience.
As well as an Object API, Riak also supports a Query API: allowing for range queries on secondary indexes, with additional query capability from the application of filter expressions to projected attributes appended to the index sort keys.
Riak KV is designed to be deployed in both single-cluster and multi-cluster environments. There is support not just for real-time replication between clusters, but also for continuous and efficient reconciliation to verify that data is in-sync and on common versions; even between clusters that have many billions of objects.
Riak is built on top of the Erlang/OTP platform. Supported versions for this release are:
For later OTP versions, an alternative openriak-<release> branch will be required. See the roadmap discussion for further details.
You should have Erlang/OTP 26 to compile and run this version Riak KV. The Riak application is the parent application for Riak KV, providing a set of scripts to build, package, deploy and run a Riak KV store.
Overview documentation on is available in this repository. The documentation is split into the following pages:
- Initial Design Decisions;
- Install and Start Guide;
- Building and then Scaling a Cluster;
- Replication Guide;
- Object API;
- Query API;
- Other API;
- Operations and Troubleshooting Guide;
- Riak Theory Guide.
An online HTML version of this overview is available.
For discussions on Riak development see https://github.com/orgs/OpenRiak/discussions. For direct contact with the OpenRiak development community please use the open-riak channel on the Slack channel for the Erlang Ecosystem Foundation.
./rebar3 do xref, dialyzer, eunit
./rebar3 as test eqc --testing_budget 600For a more complete set of tests, update riak_kv in the full Riak application and run any appropriate Riak riak_test groups