没有明确交易的东京内阁行为
Tokyo Cabinet behaviour without explicit transactions
尚未在文档中找到有关主题的任何内容。我想知道当我没有明确地 start/commit 事务时,即在 "implicit transaction" 模式下,TC 的可靠性和并发性如何。
我每笔交易只需要写一条记录,即没有批量写入。但我希望在写入函数 returns 之前将该记录可靠地写入磁盘。不过,如果可能的话,我还是想避免使用 WAL 文件。
对Hash DB, B+ Tree DB, Fixed-Length DB感兴趣
编辑。明确地说:
文档说 "database file is not corrupted even under catastrophic situation"。但我不确定 "no corruption" 是否意味着数据是 ACIDly 写入的。
所有数据库类型的函数 ...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。
在论坛上得到了答案:
为确保数据写入完整且一致,必须同时使用显式事务和 HDBOTSYNC。
建议看一下https://github.com/erthink/libmdbx (including https://github.com/erthink/libfpta)。
尚未在文档中找到有关主题的任何内容。我想知道当我没有明确地 start/commit 事务时,即在 "implicit transaction" 模式下,TC 的可靠性和并发性如何。
我每笔交易只需要写一条记录,即没有批量写入。但我希望在写入函数 returns 之前将该记录可靠地写入磁盘。不过,如果可能的话,我还是想避免使用 WAL 文件。
对Hash DB, B+ Tree DB, Fixed-Length DB感兴趣
编辑。明确地说:
文档说 "database file is not corrupted even under catastrophic situation"。但我不确定 "no corruption" 是否意味着数据是 ACIDly 写入的。
所有数据库类型的函数 ...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。
在论坛上得到了答案:
为确保数据写入完整且一致,必须同时使用显式事务和 HDBOTSYNC。
建议看一下https://github.com/erthink/libmdbx (including https://github.com/erthink/libfpta)。