每日文摘
深挖 · Turso:用 Rust 从零重写 SQLite 的嵌入式数据库,还想做数据库界的 LLVM

<本文由用户点名深挖:想明确 Turso 的功能与适用场景,作为后续技术方案调研的知识储备。结论先行:它是 SQLite 的 Rust 从零重写(不是 fork、不是云 CLI),用「一个数据库内核、多个 SQL 前端」的 LLVM 思路做嵌入式数据库,AI agent 场景是当前第一卖点——但引擎仍 pre-1.0,官方基准全部自测,选型时要带上这两条滤镜看它。>
是什么
Turso 是一个用 Rust 从零重写的 SQLite 兼容进程内(in-process)SQL 数据库,MIT 协议,24.3k star(GitHub API 2026-09-14 实测,当天仍有提交合并)。官方一句话描述:“A SQL database in Rust: SQLite-compatible, now also speaking Postgres (experimental). The LLVM of databases.”
先做身份纠偏,这是读一切 Turso 资料的前提——网上「Turso」这个词至少指过三代东西:
- 这个 repo 不是云服务的 CLI。Turso Cloud 的 CLI 在另一个 Go 仓库 turso-cli;本仓库自带的命令行叫
tursodb,是数据库的交互式 shell。 - 产品矩阵要分清四件东西:Turso Database(本 repo,开源引擎)、libSQL(tursodatabase/libsql,17.2k star,SQLite 的 fork——注意 fork 与重写是两条路线,libSQL 现处维护模式,官方明说 “new features are being developed in Turso”,新项目建议直接用 Turso Database,见 官方文档)、Turso Cloud(闭源托管平台)、Turso Sync(本地优先同步 SDK)。
- 演变时间线能解释为什么资料口径混乱:2021 年公司以 ChiselStrike 之名做 TypeScript 后端平台,约 2022 年末 fork SQLite 得到 libSQL,2023 年做边缘数据库,2024-12 宣布代号 Limbo 的全量重写,2025-07 改名 Turso 发首个 alpha,2026-07 宣布在同一个内核上做 Postgres 前端。你搜到的老文章评的可能是其中任何一代。
为什么要重写而不是继续 fork?官方的转向宣言说得很直白:SQLite 是 C 写的(官方原话 “an unsafe language”),测试套件私有,fork 两年也没能通过社区贡献推动内核演进——那就自己写一个。兼容性承诺压了三层:SQL 方言、文件格式(现有 .db 文件直接打开)、C API;当前跟踪 SQLite 3.50.4,未到 100%,已知差距全部记录在 COMPAT.md(例如文本必须合法 UTF-8,SQLite 则保留原始字节)。
核心机制:一个内核,多个前端
Turso 的架构叙事是「数据库界的 LLVM」:与 SQLite 一样把 SQL 编译成字节码在 VDBE 虚拟机上执行,但目标是 “one modern and reliable core, and many frontends compiled down onto it”——SQLite 是第一个前端,2026-07 起实验性增加 Postgres 前端(把 Postgres 方言解析成共同 AST 再编译到同一字节码,共享存储/并发/查询编译器/VM),官方明言只求 “compatible enough”,不承诺 100% 兼容(公告、The Register 报道)。这个 VM 的通用性有个赏心悦目的演示:他们在 VDBE 字节码上跑起来了未修改的 Doom。
对 SQLite 长期短板的修补是真正的功能卖点,但每条都要看成熟度分层:
- 异步 I/O:接口层面把
sqlite3_step异步化,Linux 上用 io_uring;支持 Linux/macOS/Windows/浏览器 WASM(README)。 - 并发写:默认仍是单写者;
PRAGMA journal_mode='mvcc'+BEGIN CONCURRENT开多连接并发写,同行冲突报错由应用层重试(官方文档)。注意 CDC 与 MVCC 互斥(同一连接二选一)。 - CDC:
PRAGMA capture_data_changes_conn('full')把变更写进turso_cdc表,消费模型是 SQL 轮询,没有推送流(官方文档)。 - 内建向量检索:BLOB 存储 + cosine/l2/dot/jaccard 距离函数,无扩展;但默认是暴力线性扫描(精确检索),ANN 索引还在路线图上——讽刺的是被它取代的 libSQL 反而有 DiskANN(向量文档)。
- 多模类型:date/UUID/jsonb/数组,实验性
CREATE TYPE(含 ENCODE/DECODE、STRUCT、可辨识联合)(类型文档)。 - 内置 MCP server:
tursodb your.db --mcp一条命令把数据库暴露给 AI agent(9 个工具,官方给了 Claude Code/Cursor 配置示例)——agent 场景是一等公民。
最值得尊敬的部分是可靠性工程:确定性模拟测试(学 TigerBeetle/FoundationDB)+ Antithesis 故障注入 + 与 SQLite 的差分字节码模糊测试 + Quint 形式化规约——后者在 SQLite 本体里找出了 10+ 个 bug。不过官方自己也设了护栏:README FAQ 明确 pre-1.0 建议 “keep independent backups”,2026-03 的一周年复盘承认还缺 multiprocess 支持与 VACUUM。
怎么跑起来
- 内嵌即自托管:进程内引擎,本地文件即数据库,无服务器、无账号、无 token。安装一条 curl 脚本装
tursodb(macOS/Linux;Linux 官方构建只有 gnu 变体,musl/Alpine 需自行编译);SDK 官方六路——Rustcargo add turso、JS@tursodatabase/database(含 WASM)、Pythonpyturso、Go、Java JDBC、.NET;本地用法就是connect("local.db")(Quickstart、Local development)。 - 内网服务器自托管有两条路:① Docker 跑成熟的 libSQL sqld(
ghcr.io/tursodatabase/libsql-server,支持 primary/replica/basic auth,但功能已冻结);②tursodb server.db --sync-server 0.0.0.0:8080——与 Turso Cloud 同协议的本地同步服务器,官方明说 “no Turso Cloud account required”,但文档定位是 development and testing,未承诺生产级。 - 云的边界要看清:2025-01 官宣新多租户服务器闭源(“client-side is open source, server-side is proprietary”),旧整平台自托管文档已 404 不可达(分水岭公告)。经常被讹传的「AGPL 许可证争议」查无实证——引擎、libSQL、CLI 全部 MIT;真实争议是闭源云带来的 open-core 担忧(HN 员工口径)。
- 成本:定价页实测,免费层 100 库 / 5GB / 月 5 亿行读 / 1000 万行写;Developer 档 $4.99/月起、无限数据库(这是它 database-per-user 打法的基础);闲置库只收存储费。
数据说话
好消息和冷水都要如实端上。
官方基准全部自测,且条件苛刻。 最著名的「并发写 4x SQLite」出自官方博文,前提是 8 线程 + 事务内含 1ms 计算;同一篇文章诚实披露了反例:单线程、零计算时 SQLite 反而更快。基线是 SQLite 全同步模式批量插入约 15 万行/秒。「连接建立快 575x」的数字只在万表场景成立(单表场景仅 3.25x)。Turso Sync 对旧 Embedded Replicas 的 8.9x/312x 则是自家新旧方案对比。这些都没披露硬件与版本,且不存在任何 Turso vs Postgres 的官方基准——repo 里的 PERF.md 只有 ClickBench/TPC-H 跑分脚本,没有公布结果。
社区质疑集中四点(HN 主串 143 分/102 评、kerkour 深评串 192 分/145 评):闭源云与 open-core(有用户实测 libSQL 的 offline sync 在开源 sqld 上跑不起来,被指对 SQLite 搞 EEE);libSQL 被边缘化;新引擎成熟度(缺 savepoints/window 函数/ATTACH,MVCC 实验性,有人审 PR 发现数据损坏 bug 修复缺测试);VC 背景的可持续性(rugpull 担忧、「别拿生产环境当新数据库的 beta 测试场」)。事故记录也有:2025-01 云数据丢失(官方称功能在 beta)、2023-12 泄露他人数据库(旧时代)。
正面证据同样要摆出来:开发速度被 HN 用户形容为 “Commit history is nuts!";生产案例密度最高的正是 database-per-agent 场景——CTO.new 数万个库、5 万+用户、从 Supabase 迁出后数据库成本降约 95%;Poke 3 个月约 1 亿条消息;Adaptive.ai 超过 200 万个库。独立深评(kerkour.com)的定性比较中肯:它修对了 SQLite 的长期痛点(内建加密、并发写、async),定位上与 DuckDB 互补——“DuckDB for analytical data, and Turso for transactional data”。
值不值得跟
作为后续方案调研的选型知识,把「什么时候该想到它、什么时候别用」记成两张清单:
- 需要 SQLite 但被它的短板卡住——无并发写、无内建加密、无原生向量;
- 海量小库架构(database-per-user / per-agent,数千到数百万个库):这是当前第一卖点,「无限数据库 + 闲置零成本」是独有打法;
- 本地优先/离线优先应用想要现成同步层,不想自搭 PowerSync/Electric(Sample Vault 案例就是这个画像);
- AI agent 的数据层:引擎内置 MCP server,官方有完整的 database-per-agent 架构指南;
- 读多写少、中小数据量的降本场景(官方口径:50GB、1 万 QPM,托管 PG 约 $200/月 vs Turso 约 $25/月)。
别用或慎用的场景:
- 重 JOIN、存储过程/复杂触发器、PostGIS/PG 专有类型——这是官方自己在迁移指南里列的「留在 PostgreSQL」清单,官方承认 PG 优化器对多表 JOIN 更强;
- 高并发写是硬需求:云上并发写 2026-08 才 early preview,引擎整体 pre-1.0;
- 重分析/OLAP:用 DuckDB,社区与官方都不主张 Turso 干这个;
- 对成熟度极敏感的生产系统:Turso Cloud 自己 2026-03 都还没换上自研引擎,README 建议 1.0 前保留独立备份;
- 纯本地单机、无同步无多库需求:直接用 SQLite 就够——Turso 的增值全在 Sync/Cloud/平台层。
最后一层对冲值得记住:这家公司(两位创始人均出自 Linux kernel 与 ScyllaDB,About)历史上动作激进——BaaS、边缘数据库、fork、全量重写、闭源云、Postgres 前端,叙事换了五轮,平台层承诺可能再变。但引擎层 MIT + SQLite 文件格式兼容意味着你的数据永远是标准的 .db 文件,随时可以退回 SQLite 生态——退出成本极低,这是评估这类激进项目时最实在的安全垫。
参考阅读
- tursodatabase/turso README — 真源:定位、特性表、FAQ、SDK 一览
- docs.turso.tech — 官方文档站:Quickstart/并发写/CDC/向量/本地同步服务器
- We will rewrite SQLite. And we are going all-in — 2025-01 转向宣言,fork 路线为何失败
- Upcoming changes to the Turso Platform and Roadmap — 云闭源/砍功能的分水岭公告
- Beyond the Single-Writer Limitation — 4x 基准及其诚实边界
- Deep dive into Turso — kerkour.com — 最有料的独立深评:定位正确性与 VC 风险
- HN: Turso is an in-process SQL database — 社区质疑主串
- We’re building Postgres in Rust — LLVM-of-databases 路线图