Turso:用 Rust 重写 SQLite,让数据库跑在每一个边缘节点

当 SQLite 遇上云原生,会发生什么?Turso 给出了一个令人兴奋的答案:用 Rust 从零重写 SQLite 内核,加上嵌入式副本、边缘同步和向量搜索,打造一个能跑在任何地方的数据库。

从 libSQL 到 Turso:一场 SQLite 的进化

SQLite 是世界上部署最广泛的数据库,手机里、浏览器里、嵌入式设备里都有它的身影。但 SQLite 有两个致命短板:单写者限制缺乏网络同步能力

2022 年,Glauber Costa(前 ScyllaDB VP、前 Datadog Staff Engineer)和 Pekka Enberg(前 Linux 内核维护者)创立了 Turso,首先推出 libSQL ------ 一个 SQLite 的开源 fork,在保持完全兼容的前提下,增加了服务端模式、嵌入式副本和 WebAssembly 自定义函数。

libSQL 在 GitHub 上拿到了 16,600+ stars,验证了市场需求。但团队没有止步于此。2025 年,Turso 发布了全新的 Turso Database ------ 用 Rust 从头重写的 SQLite 兼容引擎,目前 GitHub 已获 18,300+ stars。

这次重写带来了三个关键突破:

  • 并发写入 :通过 MVCC 实现 BEGIN CONCURRENT,告别单写者瓶颈
  • 异步 I/O:基于 Linux io_uring,充分利用现代内核的异步能力
  • 双向同步:支持离线写入后双向合并,真正的 local-first 架构

核心技术架构

Turso 的架构设计围绕一个核心理念:把数据放到离用户最近的地方

scss 复制代码
┌─────────────┐     ┌─────────────┐     ┌─────────────┐
│  边缘副本     │     │  边缘副本     │     │  边缘副本     │
│  (本地SQLite) │     │  (本地SQLite) │     │  (浏览器WASM) │
└──────┬──────┘     └──────┬──────┘     └──────┬──────┘
       │                   │                   │
       └───────────┬───────┘───────────────────┘
                   │ 写入路由 + 增量同步
            ┌──────┴──────┐
            │   主数据库    │
            │  (指定区域)   │
            └─────────────┘

读取路径:查询直接命中本地嵌入式副本,延迟在微秒级别。基准测试显示,预编译语句的读取延迟约 191 纳秒,吞吐量可达每秒 520 万次查询。

写入路径 :默认路由到远端主库,延迟 20-100ms(取决于与主库的物理距离)。也支持配置 offline: true 实现离线写入,后续同步合并。

同步机制 :支持手动调用 .sync() 或设置 syncInterval 自动定期同步,保证 read-your-writes 语义。副本间的同步延迟通常在 1-50ms。

五个杀手级特性

1. 嵌入式副本(Embedded Replicas)

这是 Turso 最核心的差异化能力。传统数据库每次查询都要走网络,而 Turso 的嵌入式副本就是一个本地 SQLite 文件,读取完全在本地完成。

typescript 复制代码
import { createClient } from "@libsql/client";

const db = createClient({
  url: "file:local-replica.db",
  syncUrl: "libsql://my-db.turso.io",
  authToken: "...",
  syncInterval: 60, // 每60秒自动同步
});

// 读取 --- 本地执行,微秒级延迟
const users = await db.execute("SELECT * FROM users WHERE active = 1");

// 写入 --- 路由到远端主库
await db.execute("INSERT INTO users (name) VALUES (?)", ["Alice"]);

实测平均读取延迟约 624 微秒,比传统网络数据库快 50-100 倍。

2. 原生向量搜索

内置向量搜索能力,无需额外扩展,直接用 SQL 查询:

sql 复制代码
CREATE TABLE documents (
  id INTEGER PRIMARY KEY,
  content TEXT,
  embedding F32_BLOB(1536)
);

SELECT id, content,
  vector_distance_cos(embedding, vector('[0.1, 0.2, ...]'))
  AS distance
FROM vector_top_k('documents_idx', '[0.1, 0.2, ...]', 10);

对 AI Agent 场景特别友好------每个 Agent 可以拥有自己的数据库,内置 RAG 所需的向量检索能力。

3. Database-per-Tenant 多租户

Turso 原生支持为每个租户创建独立数据库,在 $4.99/月的 Developer 方案下就能创建无限数量的数据库。通过 Multi-db Schema 功能,父数据库的 schema 变更可以自动传播到所有子数据库。

4. 数据库分支(Database Branching)

类似 Git 分支的概念,基于 Copy-on-Write 实现,可以在秒级创建数据库的完整副本用于开发测试,不影响生产数据。

5. 跨平台运行

同一套引擎可以跑在:

  • Linux / macOS / Windows 服务端
  • 浏览器(通过 WebAssembly + OPFS 持久化)
  • iOS / Android 移动端(支持离线优先)

生态与 SDK 支持

Turso 提供了覆盖主流语言的 SDK:

语言 包名
TypeScript/JS @libsql/client / @tursodatabase/database
Python pyturso / libsql-experimental
Rust turso / libsql
Go tursogo / go-libsql
Swift libsql-swift
Kotlin libsql-android
PHP/Laravel turso-driver-laravel
Ruby/Rails 原生支持
.NET libsql-client-dotnet
Flutter libsql-dart

同时集成了 MCP(Model Context Protocol)服务,AI 编程助手(如 Claude、Cursor)可以直接操作数据库。

定价策略

方案 价格 数据库数 存储 月读取行数 月写入行数
Free $0 100 5GB 5亿 1000万
Developer $4.99/月 无限 9GB 25亿 2500万
Scaler $24.92/月 无限 24GB 1000亿 1亿
Pro $416.58/月 无限 50GB 2500亿 2.5亿

免费方案给到 100 个数据库和 5GB 存储,对个人项目和原型验证相当慷慨。Developer 方案支持无限数据库,适合做 database-per-user 的多租户场景。

竞品对比

维度 Turso Neon Cloudflare D1 PlanetScale
内核 SQLite (Rust重写) PostgreSQL SQLite Vitess/MySQL
嵌入式副本 原生支持
离线支持 支持
向量搜索 内置 需 pgvector
边缘部署 全球节点 有限 仅 CF 网络
免费存储 5GB 0.5GB 5GB N/A
并发写入 MVCC 原生支持 单写者 原生支持
最适合 边缘/移动/AI Agent Serverless Postgres CF 生态 MySQL 大规模场景

Turso 的独特优势在于嵌入式副本 + 离线支持 + 向量搜索的组合,这在竞品中是独一无二的。如果你的应用需要在客户端/边缘做低延迟读取,或者需要离线优先能力,Turso 几乎是唯一的选择。

但如果你需要完整的 PostgreSQL 生态兼容(丰富的扩展、存储过程、复杂的事务语义),Neon 会是更好的选择。Turso 的 SQLite 兼容意味着某些高级 SQL 特性不可用。

适用场景判断

强烈推荐使用 Turso 的场景:

  • AI Agent 应用:每个 Agent 独立数据库 + 内置向量搜索 + 分支/回滚
  • 多租户 SaaS:database-per-tenant 架构,数据天然隔离
  • 移动端/IoT 应用:离线优先,后台同步
  • 读多写少的边缘应用:嵌入式副本提供微秒级读取
  • 需要数据可移植性:用户可直接导出完整 SQLite 文件

不太适合的场景:

  • 重度 OLAP 分析查询
  • 需要复杂存储过程和触发器
  • 已深度绑定 PostgreSQL/MySQL 生态的项目
  • 写入吞吐量极高的场景(虽然并发写入在改善,但仍不如传统 RDBMS)

融资与团队

Turso 累计融资约 3300 万美元(种子轮 700 万 + A 轮 2600 万),投资方包括 Norwest Venture Partners 等。天使投资人阵容亮眼,包括 Vercel、GitHub、Netlify、InfluxDB、Redpanda 等公司的创始人。

团队分布在 4 大洲 12 个国家,核心工程能力扎实------CEO 有 ScyllaDB 和 Datadog 背景,CTO 是前 Linux 内核维护者。

写在最后

SQLite 正在经历一场文艺复兴。从 Litestream 到 LiteFS,从 libSQL 到 Turso,越来越多的项目在证明:SQLite 的简洁和可靠性,加上现代分布式能力,足以覆盖大量此前只能用传统客户端-服务端数据库处理的场景。

Turso 用 Rust 重写 SQLite 内核的决定很大胆,但从目前的社区反馈和技术方向来看,这条路走对了。如果你正在构建需要边缘计算、离线优先或 AI Agent 数据层的应用,Turso 值得认真评估。

项目地址:github.com/tursodataba... 官网:turso.tech libSQL:github.com/tursodataba...

相关推荐
2301_764150562 小时前
Golang colly爬虫框架如何用_Golang colly教程【进阶】
jvm·数据库·python
2301_803538952 小时前
SQL统计各分组中排名前三的记录_使用窗口函数RANK
jvm·数据库·python
2301_782659182 小时前
如何让按钮悬停时阴影位置保持固定(仅按钮位移)
jvm·数据库·python
weixin_580614002 小时前
如何用 performance.navigation 判断页面刷新并清理缓存
jvm·数据库·python
21439652 小时前
Golang strings.Builder如何用_Golang Builder拼接教程【对比】
jvm·数据库·python
2301_777599372 小时前
mysql如何配置主机缓存_mysql host_cache_size设置
jvm·数据库·python
花间相见3 小时前
【终端效率工具01】—— Yazi:Rust 编写的现代化终端文件管理器,告别繁琐操作
前端·ide·git·rust·极限编程
qq_206901393 小时前
为什么宝塔面板网站无法正常连接外部远程数据库_检查服务器安全组放行端口并开启IP授权
jvm·数据库·python
亚空间仓鼠3 小时前
关系型数据库MySQL(二):高级特性
数据库·sql·mysql