在现阶段, 云原生跟边缘计算正处于迅猛发展的态势下, 应用针对数据库有了性能方面、兼容性方面以及部署灵活性方面, 提出了达到前所未有的高度的要求。传统的客户端 - 服务器这种架构的数据库, 像是被提及到的MySQL, 虽然具备强大的功能, 可是因为网络通信导致的延迟这一情况以及部署所存在的复杂度, 致使它很难去满足边缘设备、嵌入式系统连同低延迟应用的需求。而被提到的作为经典类型的嵌入式数据库, 虽然依靠零配置以及高性能的优势占有着一定的份额, 然而在异步I/O、并发控制、现代开发需求适配等方面开始渐渐呈现出不足之处。
Turso 的现身, 将这一技术方面的空白给填补上了, 它身为 的下一代进行演进的版本, 是一个运用 Rust 重新编写而成的开源嵌入式数据库, 不光完整地承袭了 的轻量以及嵌入式特性, 还借助原生异步 I/O、多版本并发控制(MVCC)、向量搜索等创新性的功能, 把传统嵌入式数据库的诸多让人苦恼的问题给解决了。它具备开源特性, 这一特性不但降低了企业使用关于数据库技术的门槛, 而且就开发者而言, 还提供了有着可定制特点、高性能以及兼容范围广泛特性的数据库解决方案, 进而推动了嵌入式数据库生态朝着更具现代感、更加有利于效率提升的方向持续发展。
简介
Turso是个开源嵌入式OLTP数据库引擎, 它由团队开发, 托管于平台(项目地址: )。
采纳 MIT 开源许可证, 此项目先前称作 Limbo, 接续正式改名为 Turso, 当下仍然处在活跃开发时期, 不过已然呈现出强劲的技术能力以及应用潜力。
从技术定位这一角度来看, Turso属于那种进程内数据库, 跟完全兼容, 还支持的SQL方言、文件格式以及C API, 这就表明基于开发的应用能够以低成本迁移到Turso。它的核心设计目标是去打造的下一代进化版本, 在维持嵌入式数据库轻量、零配置优点的同时, 引进现代数据库的高级特性。异于传统客户端 - 服务器数据库, Turso 于应用程序的内存空间里直接运行, 不需要额外的数据库服务器进程, 将网络通信开销全然消除, 读写延迟能够达到亚微秒级别, 因其这般特性, 在边缘计算、嵌入式设备、桌面应用等对延迟敏感的场景当中, 它具备着天然优势。
Turso 的主要用途涵盖多个场景, 其一为边缘计算与嵌入式系统, 因其具备轻量体积以及低资源占用的特性, 能够在物联网设备、边缘网关等资源受限环境中轻易部署;其二是桌面与本地应用, 可为笔记软件、本地数据分析工具等给予高性能本地存储;其三是 Web 应用的辅助存储, 是当作缓存层或者本地数据持久化方案;其四是 AI 应用的向量存储, 支持向量索引以及相似性搜索, 适配语义搜索、推荐系统等场景。除此以外, Turso所内置的MCP模式, 也就是Model模式这种服务器模式, 它能够使AI助手直接和数据库进行交互, 这进而拓展了AI应用的数据处理方面的能力。
Turso具备着诸多众多的技术特性, 它对多种编程语言绑定予以支持, 其中涵盖了Go、、Java、、Rust以及 , 能够满足不同技术栈开发者所需, 在操作系统兼容性这一方面, 它达成了对Linux、macOS以及 的全面支持。在核心功能这个方面, Turso 给出了变更数据捕获也就是 CDC , 能够对数据库变更进行实时跟踪, 它还支持 Linux 平台的异步 I/O , 这能在很大程度上提升 I/O 密集型场景的性能 , 其含有实验性的 MVCC 机制得以达成更高的并发控制能力 , 另外向量搜索功能对稠密向量以及稀疏向量的存储与相似性计算予以支持 , 从而适配 AI 驱动的应用场景。需要特别提及的是, 项目团队对数据可靠性予以了极高的重视程度, 借助确定性模拟测试以及测试以此来保障稳定性, 并且还推出了数据损坏漏洞悬赏计划, 该计划最高奖励金额为 1000 美元, 这充分彰显了其对产品质量所拥有的信心。
使用
Turso 的部署门槛低, 它不需要复杂的环境实施配置状况, 它还支持那些主流的操作系统又具备多种安装方式。推荐一种安装办法是通过官方脚本以达到快速实现, 此具体情形适用于所有支持 curl 返回结果的操作系统, 要想完成 Turso CLI 的安装只需执行以下命令就行:
curl --proto '=https' --tlsv1.2 -LsSf \ https://github.com/tursodatabase/turso/releases/latest/download/turso_cli-installer.sh | shmacOS 用户可通过 直接安装,命令更简洁:
brew install turso要是倾向于容器化部署, 那么能够在项目根目录去执行下面这些命令来构建并且运行镜像。
# 构建Docker镜像 make docker-cli-build # 运行Docker容器 make docker-cli-run于安装完毕之后, 能够借由SQL Shell迅速去体验Turso的核心功能, 其操作方式跟极为相像, 学习所需成本较低。要执行以下命令来启动Turso的交互式SQL Shell, 此默认连接至内存数据库(注: 重启后数据会丢失)。
tursodb启动成功后会显示如下提示信息:
Turso Enter ".help" for usage hints. Connected to a transient in-memory database. Use ".open FILENAME" to reopen on a persistent database turso>若存在数据持久化的需求, 那么能够在启动之际指定数据库文件, 或者在Shell中采纳.open命令来实现切换:
# 启动时直接指定数据库文件 tursodb mydatabase.db # 或在Shell中切换到持久化数据库 turso> .open mydatabase.dbTurso 支持标准 SQL 语法,以下是常用操作示例:
# 创建表 turso> CREATE TABLE users ( id INTEGER PRIMARY KEY, username TEXT NOT NULL, email TEXT UNIQUE, age INTEGER ); # 插入数据 turso> INSERT INTO users (username, email, age) VALUES ('alice', 'alice@example.com', 28), ('bob', 'bob@example.com', 32), ('charlie', 'charlie@example.com', 25); # 查询数据 turso> SELECT * FROM users WHERE age > 26; ┌────┬──────────┬───────────────────┬─────┐ │ id │ username │ email │ age │ ├────┼──────────┼───────────────────┼─────┤ │ 1 │ alice │ alice@example.com │ 28 │ ├────┼──────────┼───────────────────┼─────┤ │ 2 │ bob │ bob@example.com │ 32 │ └────┴──────────┴───────────────────┴─────┘ # 更新数据 turso> UPDATE users SET age = 33 WHERE username = 'bob';Turso对三种事务模式予以支持, 分别是(默认)、还有和(实验性), 下面是事务操作的示例: 。
# 启动延迟事务(默认) turso> BEGIN DEFERRED TRANSACTION; # 执行操作 turso> INSERT INTO users (username, email, age) VALUES ('dave', 'dave@example.com', 29); # 提交事务 turso> COMMIT; # 启动立即事务(立即获取写锁) turso> BEGIN IMMEDIATE TRANSACTION; turso> UPDATE users SET email = 'alice_new@example.com' WHERE id = 1; # 回滚事务 turso> ROLLBACK;Turso给出了涵盖多种编程语言的绑定, 包含了, JS, Rust等等, 在使用的时候, 要进行安装依赖:
pip install pyturso代码于 基本一致,示例如下:
import turso # 连接数据库 con = turso.connect("mydatabase.db") cur = con.cursor() # 执行查询 cur.execute("SELECT * FROM users") rows = cur.fetchall() print("所有用户:", rows) # 插入数据 cur.execute( "INSERT INTO users (username, email, age) VALUES (?, ?, ?)", ("helen", "helen@example.com", 26) ) # 提交事务 con.commit() # 带参数的查询 cur.execute("SELECT username FROM users WHERE age = ?", (30,)) user = cur.fetchone() print("30岁用户:", user) # 关闭连接 con.close()Turso CLI 里面设置了 MCP 服务器, 这种服务器能够让 AI 助手借助 JSON - RPC 接口去对数据库进行操作, 它的启动命令是下面这样的:
tursodb mydatabase.db --mcp下面是借助 JSON-RPC 跟与 MCP 服务器进行交互的例子, 是通过从标准输入传送请求的。
cat << 'EOF' | tursodb --mcp {"jsonrpc": "2.0", "id": 1, "method": "initialize", "params": {"protocolVersion": "2024-11-05", "capabilities": {}, "clientInfo": {"name": "ai-client", "version": "1.0"}}} {"jsonrpc": "2.0", "id": 2, "method": "tools/call", "params": {"name": "schema_change", "arguments": {"query": "CREATE TABLE products (id INTEGER PRIMARY KEY, name TEXT, price REAL)"}}} {"jsonrpc": "2.0", "id": 3, "method": "tools/call", "params": {"name": "insert_data", "arguments": {"query": "INSERT INTO products VALUES (1, 'Laptop', 999.99), (2, 'Phone', 699.99)"}}} {"jsonrpc": "2.0", "id": 4, "method": "tools/call", "params": {"name": "execute_query", "arguments": {"query": "SELECT * FROM products"}}} EOF总结
Turso是款用Rust重写的开源嵌入式数据库定位于下一代演进版本, 成功实现了传统嵌入式数据库轻质优势及现代数据库高端特性相融合.其核心价值在于能完全兼容生态,使现存应用不用作大幅改动便能获性能提升和功能拓展,同时借由原生异步I/O、实验性MVCC、向量搜索、变更数据捕获等创新功能把嵌入式数据库有关并发控制、现代应用适配、AI场景支持方面长期以来的痛点给解决了。多语言进行绑定, 跨平台予以支持, 进一步使得技术落地的门槛降低了, 不管是边缘设备, 还是桌面应用, 又或者是Web服务, 都能够轻松达成集成并加以使用。
Turso正在重新界定嵌入式数据库的界限, 于边缘计算范畴, 凭借低资源占用与亚微秒级延迟成物联网设备数据存储绝佳之选, 于AI应用内, 所内置的向量搜索功能使语义搜索、推荐系统开发流程得以简化, 于桌面及本地应用里, 零配置部署以及高性能读写满足用户对本地数据快速访问诉求, 而MCP服务器模式为AI助手跟数据库的交互提供便捷接口, 扩展智能应用的开发场景 , 还不接受, 那就是不合理, 根本不理亏。虽然当下, Turso 的一些功能, 像 MVCC、向量索引, 还处在实验时期, 可是靠着活跃的社区给予的支持, 不停歇的版本更新换代, 以及对数据可靠性那种极致的追求, 在将来有可能变成嵌入式数据库领域里的主流被选用对象, 给更多软件开发人员和企业, 提供高效、灵活、可靠的数据存储解决办法。