Currently I'm evaluating Aerospike for my project. I require simple key/value store with strong consistency (under any circumstances no value version conflicts must occur) and maximized durability (data loss is extremely harmful) for the data size that doesn't fit into RAM. Aerospike seems to be one of the most suitable options. The only my concern is if strong consistency is really supported.
According to Aerospike whitepaper https://www.aerospike.com/docs/architecture/assets/AerospikeACIDSupport.pdf CP mode is not supported:
To enable Aerospike to be used in more domains, we plan to add a configuration for operating the cluster in CP mode in addition to the AP mode that is supported now
In the same time Aeospike provides different consistency guaranties http://www.aerospike.com/docs/architecture/consistency.html but it is not clear if e.g. write.commit_level=all will make inconsistencies impossible since it is more about durability rather than consistency.
So is there a way to use Aerospike cluster without value conflicts under any circumstances (such as replica failures, cluster partitioning, network latencies etc.) in single DC/region deployment? How the configuration should look like in this case?
CP mode is something that we're actively working on right now. What do you mean when you say 'strong consistency'? Right now we have conflict resolution policies such that in a split brain either the the generation of a record or the TTL (time to live) can be used to decide which record 'wins' the conflict.