【问题标题】:Key/Value distributed database for caching binary data用于缓存二进制数据的键/值分布式数据库
【发布时间】:2013-09-05 18:04:11
【问题描述】:

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

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

【问题讨论】:

  • Redis 并不是真正基于文档的,但它支持丰富的数据类型。
  • Aerospike 不是基于文档的。它支持用于存储二进制数据的 blob 数据类型。它有 Java/C#/C 驱动程序。

标签: nosql key-value-store aerospike


【解决方案1】:

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. 在发生故障转移和/或网络分区时的高可用性系统。

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 但是,在容量和网络方面,将二进制数据存储为文档不是很大的开销吗?
    • Couchbase 允许您存储任何类型的值,您可以存储二进制内容、字符串、...或 JSON 文档。唯一的限制是 20Mb 的大小。 Couchbase 是一个 Key Value 和一个 Document 数据库。
    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 2013-01-31
      • 1970-01-01
      • 2011-09-30
      • 2013-10-24
      • 1970-01-01
      • 1970-01-01
      • 2017-04-05
      • 2011-02-13
      • 2017-12-20
      相关资源
      最近更新 更多