tursodatabase/turso

GitHub: tursodatabase/turso

一个用 Rust 从头重写的 SQLite 兼容进程内数据库,提供原生异步 I/O、向量搜索和 AI 集成能力。

Stars: 17732 | Forks: 779

Turso Database

Turso Database

一个进程内 SQL 数据库,兼容 SQLite。

Crate NPM PyPI Maven Central

Chat with the Core Developers on Discord

Chat with other users of Turso (and Turso Cloud) on Discord

## 关于 Turso Database 是一个用 Rust 编写的进程内 SQL 数据库,兼容 SQLite。 ## 功能与路线图 * **SQLite 兼容性**:支持 SQL 方言、文件格式和 C API [详见[文档](COMPAT.md)] * **变更数据捕获 (CDC)**:用于实时跟踪数据库变更。 * **多语言支持**: * [Go](bindings/go) * [JavaScript](bindings/javascript) * [Java](bindings/java) * [Python](bindings/python) * [Rust](bindings/rust) * [WebAssembly](bindings/javascript) * **异步 I/O**:在 Linux 上支持 `io_uring` * **跨平台**:支持 Linux、macOS、Windows 和浏览器(通过 WebAssembly) * **向量支持**:包括精确搜索和向量操作 * **改进的模式管理**:包括扩展的 `ALTER` 支持和更快的模式变更。 该数据库具有以下实验性功能: * **`BEGIN CONCURRENT`**:通过多版本并发控制 (MVCC) 提高写入吞吐量。 * **静态加密**:用于本地数据保护。 * **增量计算**:使用 DBSP 进行增量视图维护和查询订阅。 * **全文搜索**:由强大的 [tantivy](https://github.com/quickwit-oss/tantivy) 库驱动 以下功能是我们当前路线图上的内容: * **向量索引**:用于快速近似向量搜索,类似于 [libSQL 向量搜索](https://turso.tech/vector)。 ## 入门指南 请参阅 [Turso Database 手册](docs/manual.md) 获取更多信息。
💻 命令行
你可以使用以下命令安装最新的 `turso` 版本: ``` curl --proto '=https' --tlsv1.2 -LsSf \ https://github.com/tursodatabase/turso/releases/latest/download/turso_cli-installer.sh | sh ``` 然后启动交互式 shell: ``` $ tursodb ``` 这将启动 Turso 交互式 shell,你可以在其中执行 SQL 语句: ``` Turso Enter ".help" for usage hints. Connected to a transient in-memory database. Use ".open FILENAME" to reopen on a persistent database turso> CREATE TABLE users (id INT, username TEXT); turso> INSERT INTO users VALUES (1, 'alice'); turso> INSERT INTO users VALUES (2, 'bob'); turso> SELECT * FROM users; 1|alice 2|bob ``` 你也可以使用以下命令构建并运行最新的开发版本: ``` cargo run ``` 如果你喜欢 docker,我们也为你准备好了。只需在根文件夹中运行: ``` make docker-cli-build && \ make docker-cli-run ```
🦀 Rust
``` cargo add turso ``` 示例用法: ``` let db = Builder::new_local("sqlite.db").build().await?; let conn = db.connect()?; let res = conn.query("SELECT * FROM users", ()).await?; ```
✨ JavaScript
``` npm i @tursodatabase/database ``` 示例用法: ``` import { connect } from '@tursodatabase/database'; const db = await connect('sqlite.db'); const stmt = db.prepare('SELECT * FROM users'); const users = stmt.all(); console.log(users); ```
🐍 Python
``` uv pip install pyturso ``` 示例用法: ``` import turso con = turso.connect("sqlite.db") cur = con.cursor() res = cur.execute("SELECT * FROM users") print(res.fetchone()) ```
🦫 Go
``` go get turso.tech/database/tursogo go install turso.tech/database/tursogo ``` 示例用法: ``` import ( "database/sql" _ "turso.tech/database/tursogo" ) conn, _ = sql.Open("turso", "sqlite.db") defer conn.Close() stmt, _ := conn.Prepare("select * from users") defer stmt.Close() rows, _ = stmt.Query() for rows.Next() { var id int var username string _ := rows.Scan(&id, &username) fmt.Printf("User: ID: %d, Username: %s\n", id, username) } ```
☕️ Java
我们将 Turso Database 集成到了 JDBC 中。有关如何在 Java 中使用 Turso Database 的详细说明,请参阅 [bindings/java 下的 README.md](bindings/java/README.md)。
🤖 MCP Server 模式
Turso CLI 包含一个内置的 [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) 服务器,允许 AI 助手与你的数据库进行交互。 使用以下命令启动 MCP 服务器: ``` tursodb your_database.db --mcp ``` ### 配置 将 Turso 添加到你的 MCP 客户端配置中: ``` { "mcpServers": { "turso": { "command": "/path/to/.turso/tursodb", "args": ["/path/to/your/database.db", "--mcp"] } } } ``` ### 可用工具 MCP 服务器提供了九个用于数据库交互的工具: 1. **`open_database`** - 打开一个新数据库 2. **`current_database`** - 描述当前数据库 3. **`list_tables`** - 列出数据库中的所有表 4. **`describe_table`** - 描述特定表的结构 5. **`execute_query`** - 执行只读 SELECT 查询 6. **`insert_data`** - 向表中插入新数据 7. **`update_data`** - 更新表中的现有数据 8. **`delete_data`** - 从表中删除数据 9. **`schema_change`** - 执行模式修改语句 (CREATE TABLE, ALTER TABLE, DROP TABLE) 连接后,你可以向 AI 助手提问: - "Show me all tables in the database" - "What's the schema for the users table?" - "Find all posts with more than 100 upvotes" - "Insert a new user with name 'Alice' and email 'alice@example.com'" ### MCP 客户端
Claude Code 如果你正在使用 [Claude Code](https://claude.ai/code),你可以使用内置的 MCP 管理命令轻松连接到你的 Turso MCP 服务器: #### 快速设置 1. **添加 MCP 服务器** 到 Claude Code: claude mcp add my-database -- tursodb ./path/to/your/database.db --mcp 2. **重启 Claude Code** 以激活连接 3. **开始查询** 你的数据库,通过自然语言即可! #### 命令分解 ``` claude mcp add my-database -- tursodb ./path/to/your/database.db --mcp # 名称 # 分隔符 # 数据库路径 # MCP flag ``` - **`my-database`** - 为你的 MCP 服务器选择任意名称 - **`--`** - Claude 选项与你的命令之间的必需分隔符 - **`tursodb`** - Turso database CLI - **`./path/to/your/database.db`** - SQLite 数据库文件的路径 - **`--mcp`** - 启用 MCP 服务器模式 #### 示例用法 ``` # 对于本地项目数据库 cd /your/project claude mcp add my-project-db -- tursodb ./data/app.db --mcp # 对于绝对路径 claude mcp add analytics-db -- tursodb /Users/you/databases/analytics.db --mcp # 对于特定项目(本地范围) claude mcp add project-db --local -- tursodb ./database.db --mcp ``` #### 管理 MCP 服务器 ``` # 列出所有已配置的 MCP 服务器 claude mcp list # 获取特定服务器的详细信息 claude mcp get my-database # 移除 MCP 服务器 claude mcp remove my-database ```
Claude Desktop 对于 Claude Desktop,将配置添加到你的 `claude_desktop_config.json` 文件中: ``` { "mcpServers": { "turso": { "command": "/path/to/.turso/tursodb", "args": ["./path/to/your/database.db.db", "--mcp"] } } } ```
Cursor 对于 Cursor,在你的设置中配置 MCP: 1. 打开 Cursor 设置 2. 导航到 Extensions → MCP 3. 添加一个新服务器: - **Name**: `turso` - **Command**: `/path/to/.turso/tursodb` - **Args**: `["./path/to/your/database.db.db", "--mcp"]` 或者,你可以直接将其添加到你的 Cursor 配置文件中。
### 直接 JSON-RPC 使用 MCP 服务器作为单个进程运行,通过 stdin/stdout 处理多个 JSON-RPC 请求。以下是直接与其交互的方法: #### 内存数据库示例 ``` cat << 'EOF' | tursodb --mcp {"jsonrpc": "2.0", "id": 1, "method": "initialize", "params": {"protocolVersion": "2024-11-05", "capabilities": {}, "clientInfo": {"name": "client", "version": "1.0"}}} {"jsonrpc": "2.0", "id": 2, "method": "tools/call", "params": {"name": "schema_change", "arguments": {"query": "CREATE TABLE users (id INTEGER, name TEXT, email TEXT)"}}} {"jsonrpc": "2.0", "id": 3, "method": "tools/call", "params": {"name": "list_tables", "arguments": {}}} {"jsonrpc": "2.0", "id": 4, "method": "tools/call", "params": {"name": "insert_data", "arguments": {"query": "INSERT INTO users VALUES (1, 'Alice', 'alice@example.com')"}}} {"jsonrpc": "2.0", "id": 5, "method": "tools/call", "params": {"name": "execute_query", "arguments": {"query": "SELECT * FROM users"}}} EOF ``` #### 现有数据库示例 ``` # 使用现有数据库文件 cat << 'EOF' | tursodb mydb.db --mcp {"jsonrpc": "2.0", "id": 1, "method": "initialize", "params": {"protocolVersion": "2024-11-05", "capabilities": {}, "clientInfo": {"name": "client", "version": "1.0"}}} {"jsonrpc": "2.0", "id": 2, "method": "tools/call", "params": {"name": "list_tables", "arguments": {}}} EOF ```
### 发现数据损坏 Bug?最高可获得 $1,000.00 SQLite 之所以备受喜爱,是因为它是世界上最可靠的数据库。SQLite 的下一次演进必须达到或超越这种可靠性水平。Turso 从一开始就采用[确定性仿真测试](testing/simulator/README.md/)构建,并由 [Antithesis](https://antithesis.com) 进行测试。 即使在 Alpha 阶段,如果你发现一个导致数据损坏的 Bug,并演示了我们的模拟器未能捕获它的原因,你可以获得最高 $1,000.00。随着项目的成熟,我们将增加奖金的数额和 Bug 的范围。 奖励案例列表: * 深度 >=3 的 B-Tree 内部单元替换问题 ([#2106](https://github.com/tursodatabase/turso/issues/2106)) * 不允许在非空数据库上翻转 autovacuum ([#3830](https://github.com/tursodatabase/turso/pull/3830)) * 带有嵌套子查询的自插入生成损坏数据 ([#3436](https://github.com/tursodatabase/turso/pull/3436)) * 带有预初始化 autovacuum 数据库的 Ptrmap 数据损坏 ([#3894](https://github.com/tursodatabase/turso/pull/3894)) * 带有约束违规的语句回滚导致 WAL 损坏 ([#4493](https://github.com/tursodatabase/turso/pull/4493)) 更多详情请点击[这里](https://turso.algora.io)。 Turso 核心员工不符合资格。 ## 常见问题 ### Turso Database 可以用于生产环境吗? Turso Database 目前正在大力开发中,**尚不**准备好用于生产环境。 ### Turso Database 与 Turso 的 libSQL 有何不同? Turso Database 是一个用 Rust 构建 SQLite 下一阶段演进的项目,具有强大的开放贡献重点和原生异步支持、向量搜索等功能。libSQL 项目也是尝试通过类似方向演进 SQLite 的努力,但它是通过分叉而不是重写实现的。 用 Rust 重写 SQLite 最初只是一个不起眼的实验,由于其惊人的成功,它取代了 libSQL 成为我们预期的方向。目前,libSQL 已准备好用于生产环境,而 Turso Database 则还没有——尽管它正在快速演进。更多详情请点击[这里](https://turso.tech/blog/we-will-rewrite-sqlite-and-we-are-going-all-in)。 ## 出版物 * Pekka Enberg, Sasu Tarkoma, Jon Crowcroft Ashwin Rao (2024). Serverless Runtime / Database Co-Design With Asynchronous I/O. In _EdgeSys ‘24_. [[PDF]](https://penberg.org/papers/penberg-edgesys24.pdf) * Pekka Enberg, Sasu Tarkoma, and Ashwin Rao (2023). Towards Database and Serverless Runtime Co-Design. In _CoNEXT-SW ’23_. [[PDF](https://penberg.org/papers/penberg-conext-sw-23.pdf)] [[Slides](https://penberg.org/papers/penberg-conext-sw-23-slides.pdf)] ## 许可证 本项目根据 [MIT license] 授权。 ### 贡献 除非你明确声明,否则你提交给 Turso Database 的任何贡献都将按 MIT 授权,不附带任何额外条款或条件。 ## 合作伙伴 感谢 Turso 的所有合作伙伴! ## 贡献者 感谢 Turso Database 的所有贡献者!
标签:AI工具, CMS安全, JavaScript, JS文件枚举, LangChain, libsql, MIT许可, OLTP, Python, Rust, Serverless, SQL, SQLite, WASM, WebAssembly, 单文件数据库, 可视化界面, 后端开发, 存储引擎, 嵌入式数据库, 开源, 数据可视化, 数据库, 数据持久化, 无后门, 日志审计, 本地数据库, 系统审计, 结构化查询语言, 网络流量审计, 轻量级, 边缘计算, 进程内数据库, 逆向工具, 键值存储