0

在文档中没有找到任何关于主题的内容。我想知道当我不明确启动/提交事务时,即在“隐式事务”模式下,TC 的可靠性和并发性如何。

每个事务我只需要写一条记录,即不需要批量写入。但我希望在 writer 函数返回之前将该记录可靠地写入磁盘。不过,如果可能的话,我想避免使用 WAL 文件。

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

编辑。明确地说:

  1. 文档说“即使在灾难性情况下,数据库文件也不会损坏”。但我不确定“没有损坏”是否意味着数据是 ACIDly 写入的。

  2. 所有 DB 类型的函数 ...dbopen() 采用标志 HDBOTSYNC,“这意味着每个事务都将更新的内容与设备同步”。如果我不明确开始交易,这个标志还会起作用吗?

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

4

1 回答 1

0

在论坛上得到答案:

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

  2. 建议查看https://github.com/erthink/libmdbx(包括https://github.com/erthink/libfpta)。

于 2020-03-26T20:18:16.113 回答