‘This whitepaper looks at why companies choose Riak over a relational database. We focus specifically on availability, scalability, and the key/value data model. Then we analyze the decision points that should be considered when choosing a non-relational solution and review data modeling, querying, and consistency guarantees. Finally, we end with simple patterns for building common applications in Riak using its key/value design, dealing with data conflicts that emerge in an eventually consistent system, and discuss multi-datacenter replication.
Why Move From Relational to Riak?
Strongly consistent operations provide applications with guarantees that read operations will reflect the last successful update to your database. They are an important part of relational database systems, enabling operations (like transactions) that are essential for some types of applications. Strong consistency is relatively straightforward when there is one large single relational database server.
Once your dataset grows beyond the capacity of a single machine, it becomes necessary to scale the database and operate in a distributed fashion.
Relational databases typically address the challenge of availability with a master/replica architecture, where the topology of a cluster is comprised of a single master and multiple replicas. Under this configuration, the master is responsible for accepting all write operations and coordinating with replicas to apply the updates in a consistent manner.
Read requests can either be proxied through the master or sent directly to the replicas.
But what happens when your relational master server fails? The database will favor consistency and reject write operations until the failure is resolved. This can lead to a window of write unavailability, which is unacceptable in many application designs. Most master/replica architectures recognize that a master is a single point of failure and will perform automatic master failover (a replica is elected as a new master when failure of the master is detected).
In contrast, Riak is a masterless system designed for high availability, even in the event of hardware failures or network partitions. Any server (termed a “node” in Riak) can serve any incoming request and all data is replicated across multiple nodes. If a node experiences an outage, other nodes will continue to service read and write requests.’
Basho Technologies is the creator and developer of Riak, a distributed database (sometimes categorized as a NOSQL database) that provides extreme high-availability, fault-tolerance, and operational simplicity, and Riak CS, a cloud-based object storage system that sits on top of Riak.
Riak has rapidly gained adoption throughout the Fortune 100 and has become foundational to many of the world’s fastest-growing Web-based, mobile and social networking applications, as well as cloud service providers offering public, private and hybrid solutions.