【发布时间】:2012-09-12 15:57:31
【问题描述】:
可能重复:
Are they any decent on-disk implementations of Java's Map?
我有一段代码(不是我写的)将数百万个 CSV 行读取到 Map,然后对其进行处理。
我的内存快用完了
我的选择是
-
重写代码,尝试流式传输数据,但是由于某些计算可能需要整个数据集(例如,可能需要数据集中的第一行和最后一行的计算)
-
编写一个实现
java.util.Map但会将数据持久化到数据库中的类 -
只需重写代码并直接从数据库中插入/选择,但我宁愿先尝试#2
所以突然想到数据库支持 Map 的想法对我来说很有意义,所以在开始编写它之前,我想问一下这个问题是否有众所周知的模式/实现(甚至可能没有 Map)
现在,尽管我喜欢编写代码,但我不喜欢重新发明东西,我更喜欢重用开源代码。
我不太介意存储实现,SQL 或 NoSQL,但它需要允许 Map 自动持久化,并避免将其完全保留在内存中。
是否有这样一个已知的库/实现?这个问题熟悉吗?我是否以正确的方式攻击它?
更新:
基于 cmets,我将研究这些(较旧但几乎重复的)问题:
如果他们回答了我的问题并且仍然是最新的,则投票关闭这个
更新2:
- 这不是完全重复,我正在寻找数据库支持的持久性,其他问题更广泛(任何基于磁盘的实现)
- 重复并不总是坏事,请在投票结束前阅读 Jeff Atwood 的 this post
【问题讨论】:
-
哦,一个捆绑的哈希。真是个好主意!
-
如果您需要更多 RAM,也许您应该这样做。将其流式传输到数据库可能会慢 10-1000 倍。
-
@PaulTomblin - 真的吗?还是带有一丝讽刺意味? :)
-
没有讽刺意味。我能想到几个我可以使用它的地方。这在 Perl 中非常方便。
-
好吧,我相信这不是重复的,但我认为这个问题是相关的。
标签: java caching out-of-memory mongodb-java map