2

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

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

除了 BerkelyDB 或 JDBM2/3 之外还有什么建议吗?

4

2 回答 2

3

GNU Trove提供了许多比标准 Java 映射更节省内存的映射(例如TIntIntHashMap),因为它们使用原始类型。我怀疑除非您对所存储的内容有所了解,否则您能否获得比这更高的内存效率。Trove或多或少是LGPL,因此您使用它可能是安全的。我不知道它是否特别符合您的确切规格,但我认为当您可以将东西放入 RAM 时值得尝试。

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

于 2012-01-06T15:04:38.250 回答
0

看看 noSQL 的实现,CouchDB、Cassandra 等等都不错。

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

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

问候

于 2012-01-06T15:04:34.833 回答