我们正在开发一个项目,该项目将使用单个 jar 文件进行分发。我们需要一些具有以下属性的键值对存储:
- 可嵌入到我们的 jar 文件中,因此无需额外安装。
- 可容纳数千万双
- 内存高效。这意味着 50M 对少于 100M
- 键和值都是简单类型:long、int、small byte[]
- 用于商业用途的免费许可是一种奖励
- 我们不需要并发、ACID 或此类高级的东西。
- 摊销查找时间低于 100 微秒。
除了 BerkelyDB 或 JDBM2/3 之外还有什么建议吗?
我们正在开发一个项目,该项目将使用单个 jar 文件进行分发。我们需要一些具有以下属性的键值对存储:
除了 BerkelyDB 或 JDBM2/3 之外还有什么建议吗?
GNU Trove提供了许多比标准 Java 映射更节省内存的映射(例如TIntIntHashMap),因为它们使用原始类型。我怀疑除非您对所存储的内容有所了解,否则您能否获得比这更高的内存效率。Trove或多或少是LGPL,因此您使用它可能是安全的。我不知道它是否特别符合您的确切规格,但我认为当您可以将东西放入 RAM 时值得尝试。
当您可能需要交换到磁盘时,Ehcache是一个不错的选择。您可以指定在一定数量的条目后它将值存储在磁盘上(在 2.5 版中,如果您不知道确切的条目数,您可以在使用一定数量的 RAM 后指定)。
看看 noSQL 的实现,CouchDB、Cassandra 等等都不错。
做谷歌搜索比较,你会找到你想要的。
我最喜欢的是 mongoDb,不幸的是它不是基于 Java 的
问候