Ruby&的键值存储Java的

时间:2011-06-08 13:52:18

标签: nosql key-value-store

我需要一个键值存储的建议。这是我的标准:

  1. 不必持久但需要支持大量记录(记录很小,100-1000字节)
  2. 插入(put)只会偶尔发生,总是在大型数据集(批量)
  3. Get将是随机的,需要快速
  4. 客户端将使用Ruby,也许是Java
  5. 应该相对容易设置并尽可能少地进行维护

4 个答案:

答案 0 :(得分:6)

Redis听起来像是在这里使用的正确的东西。它全部在内存中,因此非常快(GETSET操作都是O(1)),它支持RubyJava个客户端。

答案 1 :(得分:5)

由于以下原因,

Aerospike会很完美:

  1. 基于Java和Ruby的客户端的密钥值。
  2. 吞吐量:优于Redis / Mongo / Couchbase或任何其他NoSQL解决方案。见http://www.aerospike.com/blog/use-1-aerospike-server-not-12-redis-shards/。亲自看到它可以正常工作,同时有超过300k读取TPS和100k写入TPS。
  3. 使用RIPEMD160自动高效地进行数据分片,数据重新平衡和数据分发。
  4. 故障转移和/或网络分区时的高可用性系统。
  5. 从3.0版本开源。
  6. 可以在没有持久性的缓存模式下使用。
  7. 支持LRU和TTL。
  8. 很少或没有维护。

答案 2 :(得分:0)

AVL-Tree会在插入,删除,搜索和其他大部分内容时给你O(log n)。

答案 3 :(得分:0)

1和3都尖叫数据库引擎。

如果您的记录数量并非疯狂且您只有一个客户端同时使用此内容,我个人会推荐使用sqlite,它适用于Java和Ruby(也会传递#5)。否则请使用真正的数据库系统,例如MySql(因为您不在Microsoft堆栈上)。