7

可能重复:
它们是 Java Map 的任何体面的磁盘实现吗?

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

我到了我只是用完RAM的地步

我的选择是

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

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

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

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

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

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

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


更新:

根据评论,我将研究这些(较旧但几乎重复的)问题:

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

更新2:

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

1 回答 1

2

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

另请参阅 SO 问题:

键值存储建议

Java基于磁盘的键值存储

于 2012-09-12T16:07:40.597 回答