在 Java 中存储内存中键值存储快照的有效方法是什么?
What is a efficient way of storing snapshots of an in-memory key-value store in Java?
我正在尝试设计一个内存中的键值存储,将字符串映射到可变长度的字符串。我还想让它能够在任何特定时刻及时拍摄其键值数据集的快照。此外,对键值存储的修改不应影响过去的快照。我目前为此使用 HashMap,对于快照,我维护一个时间戳映射到相应 HashMap 条目集的深度副本(使用简单的字符串压缩)。在内存中执行此操作还有其他更有效的方法吗?
我想知道,因为我正在处理字符串,所以使用 tries 是否可能更节省内存?
有意思。一项小小的研究表明,Ctrie 可能就是您要找的东西。维基:https://en.wikipedia.org/wiki/Ctrie
ctrie:具有高效非阻塞快照的并发尝试
看起来有多种语言的代码
java haskell python C++
找到相关的:
Creating a ConcurrentHashMap that supports "snapshots"
并搜索 Whosebug:https://whosebug.com/search?q=ctrie
我正在尝试设计一个内存中的键值存储,将字符串映射到可变长度的字符串。我还想让它能够在任何特定时刻及时拍摄其键值数据集的快照。此外,对键值存储的修改不应影响过去的快照。我目前为此使用 HashMap,对于快照,我维护一个时间戳映射到相应 HashMap 条目集的深度副本(使用简单的字符串压缩)。在内存中执行此操作还有其他更有效的方法吗?
我想知道,因为我正在处理字符串,所以使用 tries 是否可能更节省内存?
有意思。一项小小的研究表明,Ctrie 可能就是您要找的东西。维基:https://en.wikipedia.org/wiki/Ctrie
ctrie:具有高效非阻塞快照的并发尝试
看起来有多种语言的代码 java haskell python C++
找到相关的: Creating a ConcurrentHashMap that supports "snapshots"
并搜索 Whosebug:https://whosebug.com/search?q=ctrie