Nosql Ruby&;的键值存储;JAVA

Nosql Ruby&;的键值存储;JAVA,nosql,key-value-store,Nosql,Key Value Store,我需要一个键值存储的建议。以下是我的标准: 不必是持久的,但需要支持大量记录(记录很小,100-1000字节) 插入(put)只会偶尔发生,总是在大型数据集中(批量) Get将是随机的,需要快速执行 客户端将使用Ruby,也许还有Java 它应该相对容易设置,并且需要尽可能少的维护 AVL树将为您提供插入、删除、搜索和大多数其他内容的O(日志n)。1和3都需要数据库引擎 如果您的记录数量不算多,而且您只有一个客户端同时使用这个东西,那么我个人推荐使用sqlite,它可以与Java和Ruby一起使

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

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

  • AVL树将为您提供插入、删除、搜索和大多数其他内容的O(日志n)。

    1和3都需要数据库引擎

    如果您的记录数量不算多,而且您只有一个客户端同时使用这个东西,那么我个人推荐使用sqlite,它可以与Java和Ruby一起使用(也可以通过#5)。否则,请使用真正的数据库系统,如MySql(因为您不在Microsoft堆栈上)。

    听起来在这里使用是正确的。它都在内存中,所以速度非常快(and操作都是O(1)),同时支持and和客户机

    将是一个完美的选择,原因如下:

  • Java和Ruby中提供的基于键值的客户端
  • 吞吐量:优于Redis/Mongo/Couchbase或任何其他NoSQL解决方案。看这个。我个人认为,它可以同时处理超过300k的读TPS和100k的写TPS
  • 使用RIPEMD160自动高效地进行数据分片、数据重新平衡和数据分发
  • 故障切换和/或网络分区情况下的高可用系统
  • 从3.0版本开源
  • 可以在无持久性的缓存模式下使用
  • 支持LRU和TTL
  • 很少或没有维护

  • 1和3都得到了流行的nosql解决方案的良好支持,但不确定为什么RDBMS会更合适。此外,记录的数量相当大(数百万条),而且还会有并发读取。我很确定有很多可靠且经验证的解决方案,我自己并不是真的想重新发明轮子。我想我误解了你的要求。抱歉。有没有关于它如何处理批量插入的经验(例如,我是否能够在插入数百万条记录时查询它)?您肯定能够在插入时进行查询-所有内容都在内存中,因此没有磁盘抖动。它还具有pipeline()特性,这意味着您无需等待每个单独的结果返回,就可以流式地进行批量插入,只需使用一些真实的数据播放Redis即可。性能真的很好,到目前为止,我们唯一的问题是偶尔崩溃,这似乎是在内存耗尽时发生的。我们可能需要在Redis和box设置中播放一些内容。我们现在成功地使用了Redis。崩溃是由于32位版本的内存限制为3GB,移动到64位解决了这个问题。