可嵌入的基于磁盘的键值存储

时间:2012-01-06 14:55:14

标签: java data-structures key-value-store

我们正在开发一个项目,该项目将使用单个jar文件进行分发。我们需要一些具有以下属性的键值存储:

  1. 可嵌入我们的jar文件中,因此无需额外安装。
  2. 可容纳数千万双
  3. 内存效率高。这意味着50M对不到100M
  4. 键和值都是简单类型:long,int,small byte []
  5. 商业用途的免费许可是一种奖励
  6. 我们不需要并发,ACID或其他高级内容。
  7. 摊销查询时间低于100微秒。
  8. BerkelyDB或JDBM2 / 3以外的任何建议?

2 个答案:

答案 0 :(得分:3)

GNU Trove提供了许多映射(例如TIntIntHashMap),它们比标准Java映射更具内存效率,因为它们使用原始类型。我怀疑你可以获得比这更大的内存效率,除非你知道你正在存储什么。 Trove是more or less LGPL,因此您使用它可能是安全的。我不知道它是否特别符合您的确切规格,但我认为当您可以将内容装入RAM时,这是值得尝试的。

当您可能需要交换到磁盘时,Ehcache是一个不错的选择。您可以指定在一定数量的条目之后它将在磁盘上存储值(如果您不知道确切的条目数,则可以在使用一定量的RAM之后指定版本2.5中的新版本。)

答案 1 :(得分:0)

看看noSQL实现,CouchDB,Cassandra等等都非常好。

谷歌搜索比较,你会找到你想要的。

我最喜欢的是mongoDb,不幸的是它不是基于Java的

问候