Aerospike is a distributed DBMS that provides strong consistency for single-record transactions. All read and write operations can be executed in linearizable mode. In addition, Aerospike natively supports configuration settings that can be used to relax consistency in favor of higher performance and availability, as needed.
Aerospike supports strong, immediate consistency to prevent conflicting writes and ensure that reads see the most recently committed data values. Aerospike processes all writes for a given record sequentially so that writes won’t be re-ordered or skipped. Independent tests of the Jepsen workload revealed no errors when operating with Aerospike’s recommended configuration settings. And Aerospike benchmarks revealed no measurable performance impact with strong consistency. To date, no other NoSQL system has delivered comparable levels of consistency and runtime performance for operational workloads at scale.
To ensure strong consistency, Aerospike uses an internal roster and the “heartbeats” of individual nodes to assess the cluster’s current state. The roster contains a full list of nodes that comprise a healthy cluster and identifies the data owned by each node, noting if the data is considered a master or replica copy. This roster, which is stored on every node in the cluster, enables Aerospike to determine what operations are valid during various failure scenarios, such as a network failure that causes some nodes to be unable to communicate with others. (This is sometimes called a “split brain” scenario.) To preserve appropriate ordering of events across the cluster, Aerospike implemented a logical Lamport clock that combines timestamps with additional information, including a counter that increments when certain events occur. This approach is superior to a simple timestamp-based architecture, which can suffer from clock synchronization problems that lead to inadvertent data inconsistencies.