Key/Value distributed database for caching binary

2019-07-27 10:06发布

问题:

I am looking for distributed kv database for caching small binary objects, like images with TTL. Size limitation is not a problem, as I am planning to split each object anyway, to minimize latency. I need C# and Java drivers, and in very near future I will also need C++ driver. The databases like CouchDb and Redis seems to be document based. Mongo supports binary data and well documented, but it is persistent and I am not sure it is scalable in terms of throughput , Cassandra is also persistent and I am not sure about C++/C# drivers quality + need for constantly repair because of deletions.

Aerospike is commercial and also document based. Maybe Riak with memory or leveldb backend (anyone worked with its C++ client?)

回答1:

Aerospike would be a perfect solution for you because of below reasons:

Serves all your Use cases

  1. Key Value based.
  2. Open sourced from 3.0 version. Earlier upto 2 node Aerospike cluster was open sourced and 3 or more nodes cluster was paid.
  3. Can be used in Caching mode with no persistence.
  4. Supports LRU and TTL.
  5. Can save binary data.

Reasons for choosing Aerospike

  1. Throughput: Better than Mongo/Couchbase or any other NoSQL solution. See this http://www.aerospike.com/benchmark/. Have personally seen it work fine with more than 300k read TPS and 100k Write TPS concurrently.
  2. Automatic and efficient data sharding, data re-balancing and data distribution using RIPEMD160.
  3. Highly Available system in case of Failover and/or Network Partitions.


回答2:

Couchbase (not CouchDB) is a great option for you. Highly scalable, easy to understand, use and scale. It's a KV document database evolved from memcached that also offers secondary indexes through Map/Reduce and many new things coming soon. You can still use memcached protocol/libraries or speed it up with Couchbase SDK's.



回答3:

Have you looked at Pivotal GemFire Pivotal GemFire is a distributed data management platform providing dynamic scalability, high performance, and database-like persistence.

Pivotal GemFire also has client drivers in C++, C# and Java