Java 帮助我选择一个关键/价值存储

Java 帮助我选择一个关键/价值存储,java,nosql,key-value,Java,Nosql,Key Value,我不想让别人帮我做研究,但也许有一个善良的灵魂能从他的头脑里知道答案: 我需要具有以下特征的密钥/值存储: 分布的 可以按升序迭代键 可以根据部分密钥(前缀)匹配查找密钥 值可以是最大为1 mb或2 mb的BLOB 可从Java访问 一些设置规则的方法,这样我就可以控制密钥在机器上的分布方式,也就是说,我希望有一个规则,即具有公共前缀的密钥保留在一台机器上 查询系统以找出哪台机器有钥匙的方法 对复制和冗余的一些支持 我不确定它是否符合你的所有要求,但你看过吗?我已经有一段时间没有看Hazelca

我不想让别人帮我做研究,但也许有一个善良的灵魂能从他的头脑里知道答案:

我需要具有以下特征的密钥/值存储:

  • 分布的
  • 可以按升序迭代键
  • 可以根据部分密钥(前缀)匹配查找密钥
  • 值可以是最大为1 mb或2 mb的BLOB
  • 可从Java访问
  • 一些设置规则的方法,这样我就可以控制密钥在机器上的分布方式,也就是说,我希望有一个规则,即具有公共前缀的密钥保留在一台机器上
  • 查询系统以找出哪台机器有钥匙的方法
  • 对复制和冗余的一些支持

  • 我不确定它是否符合你的所有要求,但你看过吗?我已经有一段时间没有看Hazelcast了,所以我不知道是否有办法知道哪些实例负责给定的密钥,或者为实例分配密钥,但它确实为整个分布式映射的安全并发操作提供了支持,还有其他一些好处。

    我有两个答案:

  • AmazonS3支持所有这些,但显然它运行在他们的服务器上,而不是您的服务器上。特别是它非常支持前缀查找
  • MongoDB支持所有这些。您可以使用regex或$where进行前缀匹配。小心使用索引以获得最佳性能

  • 分布式哈希表。听起来很有趣……实际上,排序迭代器要求使得分布式哈希表不可注册。它们不分类。