没有明确交易的东京内阁行为

Tokyo Cabinet behaviour without explicit transactions

尚未在文档中找到有关主题的任何内容。我想知道当我没有明确地 start/commit 事务时,即在 "implicit transaction" 模式下,TC 的可靠性和并发性如何。

我每笔交易只需要写一条记录,即没有批量写入。但我希望在写入函数 returns 之前将该记录可靠地写入磁盘。不过,如果可能的话,我还是想避免使用 WAL 文件。

对Hash DB, B+ Tree DB, Fixed-Length DB感兴趣

编辑。明确地说:

  1. 文档说 "database file is not corrupted even under catastrophic situation"。但我不确定 "no corruption" 是否意味着数据是 ACIDly 写入的。

  2. 所有数据库类型的函数 ...dbopen() 都采用标志 HDBOTSYNC,"which means every transaction synchronizes updated contents with the device"。如果我不明确开始交易,这个标志仍然有效吗?

// 顺便说一句,是否有 TC 的有价值的替代品?我的意思是具有相同功能和速度的嵌入式 C/C++ 库。 KyotoCabinet 没办法:它是 GPL; https://fallabs.com/license/ 是 404,我关于那个 404 的电子邮件没有得到回复;更不用说他们从 KC 中删除了 Fixed-Length DB。

在论坛上得到了答案:

  1. 为确保数据写入完整且一致,必须同时使用显式事务和 HDBOTSYNC。

  2. 建议看一下https://github.com/erthink/libmdbx (including https://github.com/erthink/libfpta)。