是否存在将内容持久保存到数据库而不是内存的Map实现?

时间:2012-09-12 15:57:32

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

  

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

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

我到了RAM的地步

我的选择是

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

    < / LI>
  2. 编写一个实现java.util.Map的类,但会将数据保存到数据库中

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

  4. 所以对DB支持Map的想法突然对我有意义,所以在开始编写之前,我想问一下这个问题是否有一个众所周知的模式/实现(也许甚至不是Map)

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

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

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


    更新

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

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

    UPDATE2:

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

1 个答案:

答案 0 :(得分:2)

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

另见SO问题:

key-value store suggestion

Java disk-based key-value storage