用 Rust 编写的进程内 SQL 数据库,兼容 SQLite,并提供实验性的 Postgres 接口。
tursodatabase/libsql
开源、欢迎社区贡献的 SQLite 分支,增加嵌入式副本、远程服务等扩展能力。
- Star
- 17,280
- Fork
- 547
- 未关闭 Issue
- 466
- 最近提交
- 5天前
这是什么?
libSQL 是由 Turso 维护的 SQLite 分支,保持 SQLite 的 API 与文件格式兼容,现有的 SQLite 数据库和代码可以直接使用。同时,它面向 SQLite 最初设计时未覆盖的场景做了扩展。
主要新增功能包括嵌入式副本(在应用内部保存一份可同步的数据库副本)和 libSQL server(以类似 PostgreSQL、MySQL 的方式提供远程 SQLite 访问)。核心部分还包含可修改列类型和约束的 ALTER TABLE 扩展、WebAssembly 自定义函数、随机化 ROWID,以及虚拟预写日志接口。
项目接受外部贡献,这是它与上游 SQLite 的主要区别。官方提供 TypeScript/JavaScript、Rust、Go 等语言的驱动,并附带兼容 SQLite 的命令行工具。项目说明中也提到,新功能目前主要在 Turso 的独立 Rust 重写版本中开发。
核心功能
- 01嵌入式副本,可在应用内保存一份复制的数据库
- 02libSQL server 提供远程 SQLite 访问
- 03ALTER TABLE 扩展,支持修改列类型和约束
- 04WebAssembly 自定义函数
- 05官方提供 TypeScript/JavaScript、Rust、Go 驱动
适用场景
- 需要通过网络远程访问的 SQLite 兼容存储
- 在边缘或客户端应用中保留可同步的本地数据库副本
- 在基于 SQLite 的应用中使用 WebAssembly 自定义函数
快速上手
- 1
构建兼容 SQLite 的 C 库和工具
cargo xtask build - 2
在 libsql-sqlite3 目录中启动 SQL 命令行
cd libsql-sqlite3 && ./libsql
使用前须知
- 继承了 SQLite 的单写入者模型,因此不支持并发写入。
- README 建议新项目改用 Turso,因为新功能正在该项目中开发。
标签
常见问题
- libsql 是什么?
- 开源、欢迎社区贡献的 SQLite 分支,增加嵌入式副本、远程服务等扩展能力。 libSQL 是由 Turso 维护的 SQLite 分支,保持 SQLite 的 API 与文件格式兼容,现有的 SQLite 数据库和代码可以直接使用。同时,它面向 SQLite 最初设计时未覆盖的场景做了扩展。
- libsql 可以免费使用吗?用的什么许可证?
- libsql 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
- libsql 还在维护吗?
- 活跃维护中。libsql 最近一次提交是在 2026年10月17日。
- libsql 适合用来做什么?
- 需要通过网络远程访问的 SQLite 兼容存储 在边缘或客户端应用中保留可同步的本地数据库副本 在基于 SQLite 的应用中使用 WebAssembly 自定义函数
- libsql 怎么安装和运行?
- 构建兼容 SQLite 的 C 库和工具: cargo xtask build 在 libsql-sqlite3 目录中启动 SQL 命令行: cd libsql-sqlite3 && ./libsql
- 在哪里获取 libsql?
- 源代码和安装说明在 GitHub 上:https://github.com/tursodatabase/libsql
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
用 Rust 编写的开源图数据库,在对象存储上统一存储图、向量与全文数据,支持 Rust、TypeScript、Go、Python 调用。
DuckDB 是一个嵌入式的分析型 SQL 数据库,直接运行在应用进程内,无需单独部署服务器。
纯 Go 编写的可嵌入式持久化键值数据库,支持 ACID 事务,面向 SSD 优化。
面向 Rust 的安全、可扩展 ORM 与查询构建器,支持 PostgreSQL、MySQL、SQLite 和 MariaDB。
面向 Node.js 等 JS 平台的 TypeScript/JavaScript ORM,同时支持 Active Record 与 Data Mapper 模式。