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一起使
put
)只会偶尔发生,总是在大型数据集中(批量)Get
将是随机的,需要快速执行AVL树将为您提供插入、删除、搜索和大多数其他内容的O(日志n)。1和3都需要数据库引擎 如果您的记录数量不算多,而且您只有一个客户端同时使用这个东西,那么我个人推荐使用sqlite,它可以与Java和Ruby一起使用(也可以通过#5)。否则,请使用真正的数据库系统,如MySql(因为您不在Microsoft堆栈上)。听起来在这里使用是正确的。它都在内存中,所以速度非常快(and操作都是O(1)),同时支持and和客户机 将是一个完美的选择,原因如下:
1和3都得到了流行的nosql解决方案的良好支持,但不确定为什么RDBMS会更合适。此外,记录的数量相当大(数百万条),而且还会有并发读取。我很确定有很多可靠且经验证的解决方案,我自己并不是真的想重新发明轮子。我想我误解了你的要求。抱歉。有没有关于它如何处理批量插入的经验(例如,我是否能够在插入数百万条记录时查询它)?您肯定能够在插入时进行查询-所有内容都在内存中,因此没有磁盘抖动。它还具有pipeline()特性,这意味着您无需等待每个单独的结果返回,就可以流式地进行批量插入,只需使用一些真实的数据播放Redis即可。性能真的很好,到目前为止,我们唯一的问题是偶尔崩溃,这似乎是在内存耗尽时发生的。我们可能需要在Redis和box设置中播放一些内容。我们现在成功地使用了Redis。崩溃是由于32位版本的内存限制为3GB,移动到64位解决了这个问题。