【问题标题】:Is there a Map implementation that persists the content to database rather than memory? [duplicate]是否有将内容保存到数据库而不是内存的 Map 实现? [复制]
【发布时间】:2012-09-12 15:57:31
【问题描述】:

可能重复:
Are they any decent on-disk implementations of Java's Map?

我有一段代码(不是我写的)将数百万个 CSV 行读取到 Map,然后对其进行处理。

我的内存快用完了

我的选择是

  1. 重写代码,尝试流式传输数据,但是由于某些计算可能需要整个数据集(例如,可能需要数据集中的第一行和最后一行的计算)

  2. 编写一个实现java.util.Map但会将数据持久化到数据库中的类

  3. 只需重写代码并直接从数据库中插入/选择,但我宁愿先尝试#2

所以突然想到数据库支持 Map 的想法对我来说很有意义,所以在开始编写它之前,我想问一下这个问题是否有众所周知的模式/实现(甚至可能没有 Map)

现在,尽管我喜欢编写代码,但我不喜欢重新发明东西,我更喜欢重用开源代码。

我不太介意存储实现,SQL 或 NoSQL,但它需要允许 Map 自动持久化,并避免将其完全保留在内存中。

是否有这样一个已知的库/实现?这个问题熟悉吗?我是否以正确的方式攻击它?


更新:

基于 cmets,我将研究这些(较旧但几乎重复的)问题:

如果他们回答了我的问题并且仍然是最新的,则投票关闭这个

更新2:

  1. 这不是完全重复,我正在寻找数据库支持的持久性,其他问题更广泛(任何基于磁盘的实现)
  2. 重复并不总是坏事,请在投票结束前阅读 Jeff Atwood 的 this post

【问题讨论】:

  • 哦,一个捆绑的哈希。真是个好主意!
  • 如果您需要更多 RAM,也许您应该这样做。将其流式传输到数据库可能会慢 10-1000 倍。
  • @PaulTomblin - 真的吗?还是带有一丝讽刺意味? :)
  • 没有讽刺意味。我能想到几个我可以使用它的地方。这在 Perl 中非常方便。
  • 好吧,我相信这不是重复的,但我认为这个问题是相关的。

标签: java caching out-of-memory mongodb-java map


【解决方案1】:

许多键值存储提供 Map 接口。例如https://github.com/jankotek/JDBM3

另见 SO 问题:

key-value store suggestion

Java disk-based key-value storage

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2016-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多