Riak KV is a distributed system architected to never lose a write, so conflicts between replicas are inevitable. Riak Distributed Data Types reduce the complexity of building distributed applications by providing built-in conflict resolution in the Riak Data Types themselves.
While Riak KV is built as a data-agnostic key/value store, Riak Data Types enable you to use Riak KV as a data-aware system and perform transactions on CRDT-inspired data types. The following Riak Distributed Data Types are implemented in Riak KV:
Riak KV automatically applies conflict resolution rules for these data types, simplifying application development without sacrificing the availability and partition tolerance provided by Riak KV.
When working in Riak, handling object conflicts yourself in the application can be complex. To simplify the process, Riak Distributed Data Types automatically handle conflict resolution. Riak Data Types enable applications to use CRDTs through a simple interface, without being exposed to the complex state-based logic underneath.
Riak Data Types enable you to perform operations, like counting the number of users, or seeing whether a user has signed up for a specific pricing plan. Counters, sets, and maps can be used as bucket-level data types or types that you interact with directly. Maps are the most versatile of the Riak Data Types, because all other data types can be embedded within them (including maps themselves). This enables the creation of complex, custom data types from a few basic building blocks. Using counters, sets, and maps within maps is similar to working with those types at the bucket level.
Riak Data Types have a deep integration with Riak Search. Riak’s counters, sets, and maps can be indexed and have their contents searched just like other Riak objects without having to create custom schemas.
With Riak Distributed Data Types, Riak KV automatically handles conflict resolution, simplifying application development. This means developers can spend less time thinking about the complexities of vector clocks and sibling resolution, and instead focus on the application business logic and get to market faster.
Get to market faster
Riak Distributed Data Types automatically handle conflict resolution, which means less code to write for your developers. Less code and less complexity mean faster time to market for your critical features.
Controlling development costs is important for your Big Data applications. Riak Distributed Data Types reduce development time to reduce the overall cost of feature development.
Increase performance and scale
When handling millions of data points, every millisecond counts. By resolving data conflicts at the server rather than the client, you increase the performance of your data operations.
“The new advanced Data Types are a game changer for us, because it makes it simple for us to manage our data model at a scale that supports over a billion devices all around the world.”
– Weston Jossey, Head of Operations, Tapjoy