RocksDB 中的仅会话内存表更新/合并

Session-only memtable updates / merges in RocksDB

这里是 RocksDB 新手。

在运行时,我只使用 RocksDB 读取 数据。有时,我需要合并来自其他来源的特定于会话的记录。

我不想将它们合并到主数据库中。 我希望它们仅在该特定会话的会话生命周期内存在。

当然,我可以使用常规的 std::vector 或其他东西并合并 RocksDB 和其他来源,但那样会重复数据。

我看到了一堆概念,例如 memtable 和 merge,听起来它们可能会被使用或利用。例如,如果我可以告诉 memtable 从不提交,而只是放弃更改,那应该可以。可行吗?

最简单的方法可能是将它们分成不同的 column families,并在关闭应用程序时删除您不想保留的那个。如果你需要每个条目的生命周期,你可能不得不考虑一些自定义的东西,比如 RAII-holder class,如果你使用的是 c++,它在构建时插入并在销毁时删除。我仍然会使用一个单独的列族来干净地分离数据,以防崩溃失败。