## TigerBeetle 用于持久化文件存储
本项目演示了如何在 TigerBeetle 数据库中存储任意二进制文件,利用其双向记账系统实现数据的持久性和可审计性。作者利用 TigerBeetle 的 `Account` 和 `Transfer` 记录来分别表示文件和文件内容。文件名存储在 Account ID 中,文件大小和长度存储在用户数据字段中。文件数据被分割成块,从系统账户转移到特定文件的账户,确保所有字节在双方都有记录。
检索是通过查询与文件 Account ID 相关的贷方 Transfer 来实现的,受益于 TigerBeetle 保证的时间戳排序。
使用 105MB 视频文件进行测试,显示写入速度约为 642 kB/s,而读取速度出人意料地更快,达到 2,228 kB/s。至关重要的是,数据完整性通过 SHA256 校验和进行验证,确认在存储和检索过程中没有数据丢失——即使在潜在的网络、机器或存储故障的情况下也是如此。完整的源代码可供实现。