这个项目能做什么

FrankenSQLite 是一个用 Rust 编写、从头开始的独立 SQLite 重新实现,旨在解决 SQLite 的单写入者瓶颈和持久性问题。它引入页级多版本并发控制(MVCC)以允许并发写入,取代传统的文件级锁。该引擎采用安全 Rust 核心设计,将 unsafe 代码限制在 VFS 和可选的 C ABI 垫片中。 主要特性: - 并发写入者:默认采用带可串行化快照隔离(SSI)的页级 MVCC,允许访问不同页面的写入者重叠执行。同页冲突目前会中止,并通过 SQLITE_BUSY_SNAPSHOT 重试;安全写入合并阶梯机制目前处于搁置状态。 - 文件格式兼容:读取和写入标准 SQLite 3.x 数据库,支持 UTF-8 和 UTF-16 文本编码。一致性验证在 UTF-8 上最为深入。 - 安全 Rust 引擎:核心引擎、pager、解析器、VDBE 及相关 crate 禁止使用 unsafe 代码,只有 fsqlite-vfs(mmap/shm)和 fsqlite-c-api(FFI)例外。 - 分层架构:包含 28 个成员的 Cargo 工作区,提供类型、错误、VFS、pager、WAL、MVCC、B-tree、解析器、planner、VDBE、函数和扩展(FTS5、JSON1、R-tree、ICU 等)相关 crate。 - 持久性研究:包含 RaptorQ/ECS 构建块,用于潜在的自愈存储,但这仍属于设计加部分实现,尚未在兼容模式中启用。 - 事务可观测性:通过 PRAGMA 提供事务统计、活动事务、顾问警告和 JSON 时间线。 当前状态:运行时是混合式的,基于标准 SQLite 文件的兼容模式是当前实际启用路径。原生模式和 ECS 部分仍处于设计加部分实现阶段。CLI 是一个小型 shell,并非完整的 sqlite3 前端。FTS3/FTS4 等扩展仅处于辅助级别;dbstat、carray 和 dbpage 尚未实现。planner crate 已存在,但并非所有查询的主要热路径。