I have used aerospike as a distributed cache solution.
There is one question that keeps questioning my mind, Does the Innodb buffer size of 20GB RAM give the same performance as 20GB RAM if I need just one server?
Can someone help here?
"Let’s assume that everything is stored in RAM on both systems. Even so, there is more to retrieving data than just the storage medium it is stored in. Most of this has to do with how the data is partitioned, how the indexes are built, how connections are handled, the type of data structures and locks used internally.
I answered a similar question a few years ago on Stack Overflow
Aerospike Design | Request Flow Internals | Resources
This will generally explain why Aerospike’s architecture makes it better for caching, and in general as a strongly consistent single-record transaction database. Since then, there have been a lot of performance improvements, such as transaction queues being removed, and a larger number of service threads doing the work without the handoff to the transaction queue and its threads. The clients have improved, as well.
In the end, when in doubt, benchmark.
Just a note, if you’re using Aerospike as a cache (in-memory namespace, no persistence), rather than a database, this data is volatile. You might as well set the replication-factor
to 1, which will avoid having replica writes. You should be able to go considerably faster with that kind of deployment."