【问题标题】:What is a efficient way of storing snapshots of an in-memory key-value store in Java?在 Java 中存储内存中键值存储快照的有效方法是什么?
【发布时间】:2017-06-10 23:52:49
【问题描述】:

我正在尝试设计一个内存键值存储,将字符串映射到可变长度的字符串。我还想让它能够在任何特定时刻拍摄其键值数据集的快照。此外,对键值存储的修改不应影响过去的快照。我目前正在为此使用 HashMap,对于快照,我维护时间戳到各个 HashMap 条目集的深层副本的映射(使用简单的字符串压缩)。还有其他更有效的方法可以在内存中执行此操作吗?

我想知道,由于我正在处理字符串,使用尝试来代替可能更节省内存吗?

【问题讨论】:

  • 另一种可能性是事件溯源方法 - 将所有 更改 的日志存储到 hashmap。如果快照之间的更改数量占整体大小的一小部分,这可能会更有效。

标签: hashmap snapshot key-value-store


【解决方案1】:

有趣。一项小研究表明,Ctrie 可能是您正在寻找的。维基:https://en.wikipedia.org/wiki/Ctrie

ctrie:具有高效非阻塞快照的并发尝试

看起来有多种语言的代码 java haskell python C++

找到相关: Creating a ConcurrentHashMap that supports "snapshots"

并搜索 Stackoverflow:https://stackoverflow.com/search?q=ctrie

【讨论】:

    猜你喜欢
    • 2013-10-17
    • 2018-02-10
    • 1970-01-01
    • 2018-11-25
    • 2010-11-20
    • 1970-01-01
    • 2012-08-04
    • 2019-03-05
    • 2019-05-22
    相关资源
    最近更新 更多