Rust重写SQLite:Limbo项目实现100倍尾部延迟降低

2024-12-16

芬兰赫尔辛基大学和剑桥大学的研究人员通过使用异步I/O和io_uring技术,以及存储解耦,对SQLite进行了Rust重写,创建了名为Limbo的项目。该项目显著提升了SQLite的性能,在多租户无服务器运行环境下,尾部延迟降低了高达100倍。研究人员通过替换同步字节码指令为异步指令,实现了异步I/O,从而避免了阻塞,提高了并发性。Limbo的改进主要体现在高百分位延迟的改善上,这对于需要高可靠性的应用至关重要。

阅读更多
(avi.im)
开发 Limbo

使用 S3 构建分布式日志(不到 150 行 Go 代码)

2024-12-01

本文介绍了如何使用 S3 构建一个持久、分布式且高可用的日志。该日志将每条记录作为对象存储在 S3 中,并利用 S3 的条件写入特性确保每条记录拥有唯一的、递增的偏移量。文章详细讲解了日志的追加和读取操作的实现,以及如何通过校验和保证数据完整性。此外,还讨论了节点故障后的恢复机制,通过查找最后一个插入的对象来确定日志的当前长度。代码已开源,并提出了一些待解决的问题,例如优化 LastRecord 方法、添加缓存、批量写入和缓冲写入等。

阅读更多
(avi.im)
7
未分类 分布式日志

SQLite数据库的校验和问题

2024-11-09

SQLite数据库默认不执行校验和,这意味着磁盘损坏时数据库或应用程序无法识别。即使单个比特位翻转也可能导致严重问题,例如Alice账户余额被清零。虽然SQLite的WAL帧具有校验和,但检测到损坏帧时,它会默默忽略错误帧及其后续帧,甚至不报错。可以使用校验和VFS Shim,但前提是数据库的预留字节值为8。这意味着如果使用了任何其他预留字节的扩展,则无法使用校验和Shim。

阅读更多
(avi.im)
13
未分类