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

发布于 2024-12-25 04:22:39 字数 324 浏览 3 评论 0原文

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

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

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

We are working on a project, that will be distributed using single jar file. We have a need for some key-value store with following properties:

  1. Embeddable into our jar file, so no additional installation.
  2. Can hold up to tens of millions pairs
  3. Memory efficient. That means less than 100M for 50M pairs
  4. Both keys and values are of simple types: long, int, small byte[]
  5. Free license for commercial use is a bonus
  6. We do not need concurrency, ACID or such advanced stuff.
  7. Amortized lookup time below 100 microseconds.

Any suggestions other than BerkelyDB or JDBM2/3?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

夢归不見 2025-01-01 04:22:39

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

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

GNU Trove offers a number of maps (e.g. TIntIntHashMap) that are more memory-efficient than standard Java maps because they use primitive types. I doubt you can get significantly more memory-efficient than this unless you know something about what you are storing. Trove is more or less LGPL, so it's probably safe for you to use. I don't know if it specifically meets your exact specifications, but I think it's worth trying when you can fit things in RAM.

When you might need to swap to disk, Ehcache is a good choice. You can specify that after a certain number of entries it will store values on disk (newly in version 2.5 you can specify after a certain amount of RAM is used if you don't know how the exact number of entries).

开始看清了 2025-01-01 04:22:39

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

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

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

Look at noSQL implementations, CouchDB, Cassandra and more are pretty good.

Do google search to compare, you will find what you want.

My favourite is mongoDb and unfortunately its not Java based

regards

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文