1

我正在寻找用于缓存小型二进制对象的分布式 kv 数据库,例如带有 TTL 的图像。大小限制不是问题,因为我打算无论如何都拆分每个对象,以最大限度地减少延迟。我需要 C# 和 Java 驱动程序,在不久的将来我还需要 C++ 驱动程序。CouchDb 和 Redis 等数据库似乎是基于文档的。Mongo 支持二进制数据并且有据可查,但它是持久的,我不确定它在吞吐量方面是否可扩展,Cassandra 也是持久的,我不确定 C++/C# 驱动程序的质量 + 由于删除而需要不断修复。

Aerospike 是商业化的,也是基于文档的。也许是带有内存或 leveldb 后端的 Riak(有人使用它的 C++ 客户端吗?)

4

3 回答 3

4

Aerospike将是您的完美解决方案,原因如下:

服务于您的所有用例

  1. 基于键值。
  2. 从 3.0 版本开源。早期最多 2 个节点的 Aerospike 集群是开源的,3 个或更多节点的集群是付费的。
  3. 可以在没有持久性的缓存模式下使用。
  4. 支持 LRU 和 TTL。
  5. 可以保存二进制数据。

选择 Aerospike 的理由

  1. 吞吐量:优于 Mongo/Couchbase 或任何其他 NoSQL 解决方案。请参阅此http://www.aerospike.com/benchmark/。亲眼看到它在超过 300k 读取 TPS 和 100k 写入 TPS 的情况下运行良好。
  2. 使用 RIPEMD160 自动高效地进行数据分片、数据重新平衡和数据分发。
  3. 发生故障转移和/或网络分区时的高可用性系统。
于 2015-05-07T09:07:49.657 回答
2

Couchbase(不是 CouchDB)对您来说是一个不错的选择。高度可扩展,易于理解、使用和扩展。它是一个从 memcached 演变而来的 KV 文档数据库,它还通过 Map/Reduce 提供二级索引以及许多即将推出的新功能。您仍然可以使用 memcached 协议/库或使用 Couchbase SDK 加速它。

于 2013-09-05T20:49:46.247 回答
0

你看过Pivotal GemFire Pivotal GemFire 是一个分布式数据管理平台,提供动态可扩展性、高性能和类似数据库的持久性。

Pivotal GemFire 还具有 C++、C# 和 Java 客户端驱动程序

于 2013-09-06T11:28:19.590 回答