HC-tree 是一个支持复制的高并发 SQLite 后端

HC-tree 项目概述

HC-tree 是一个旨在为 SQLite 构建新后端的项目,专门优化高并发和领导者-跟随者式复制。虽然目前仍处于实验阶段,但 HC-tree 可以作为 SQLite 的替代品使用,尽管存在一些限制。

背景与动机

SQLite 有时被用作客户端/服务器数据库系统的核心。虽然在这种情况下它表现可靠,但其用于在数据库文件中存储 B 树结构的后端模块并未针对这种情况设计,因此在多个方面存在改进空间。特别是,SQLite 不完全支持多个同时写入者。即使使用其 begin-concurrent 扩展,SQLite 也可能遇到锁冲突,因此需要序列化所有提交操作。

HC-tree 的核心优势

HC-tree 则设计为支持数十个并发写入者,这得益于其乐观的行级锁定机制。与 SQLite 的 begin-concurrent 扩展相比,HC-tree 提供类似的基于 MVCC 的乐观并发,但它验证事务的依据是访问的键和键的逻辑范围,而不是页面集合。

性能目标

HC-tree 的目标是在单线程情况下至少与 SQLite 一样快,以便并发写入能够真正带来性能优势。根据官方基准测试,HC-tree 在多种不同并发场景下明显优于标准 SQLite,并且在单写入者情况下表现相当。

复制支持改进

HC-tree 的另一个目标是改进 SQLite 对复制的支持,超越标准 sessions 扩展 所允许的范围。为此,HC-tree 将把 sessions 扩展提升为后端的一部分,并添加对管理领导者-跟随者事务的支持,这意味着从领导者数据库到跟随者的变更可以更快地应用,因为不需要验证。

未来改进

HC-tree 还计划在未来用 48 位页面编号替换 32 位页面编号,以突破 SQLite 的 16TiB 限制。

当前限制

HC-tree 仍在开发中,虽然可以用于实验和评估其是否适合作为现有基于 SQLite 的解决方案的替代品,但它仍有一些限制,包括不支持 BEGIN EXCLUSIVE、对于不完全适合主内存的事务效率降低等。更多详细信息可以在项目的官方页面上查看。

阅读 56
0 条评论