关于 turso
面向边缘部署应用的 Turso 数据库技能,介绍基于 libSQL 的 SQLite 数据库及其客户端用法。重点包括嵌入式副本、远程同步、向量搜索和数据库管理。
主要功能
- 01远程与本地数据库连接
- 02嵌入式副本与同步
- 03批量操作和事务
- 04向量存储与相似度搜索
- 05CLI 与平台 API 管理
适用场景
- 01为边缘应用配置低延迟读取
- 02使用嵌入式副本支持离线读取
- 03为租户配置独立数据库
- 04在数据库中执行向量相似度搜索
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ oakoss/ agent-skills --skill turso安装后在 Claude Code 中输入/turso确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/cli-management.mdclient-sdk.mddrizzle-integration.mdembedded-replicas.mdmulti-tenant.mdschema-migrations.mdtransactions.mdvector-search.md详细介绍
Turso
概述
Turso 是一个基于 libSQL 构建的边缘托管 SQLite 平台,libSQL 是 SQLite 的开源分支。它提供全球分布式数据库和嵌入式副本,支持本地优先读取;还提供用于以编程方式管理数据库的平台 API,以及原生向量搜索。对于需要低延迟读取、按租户隔离数据库或支持离线的嵌入式副本的边缘部署应用,可使用 Turso。如果需要支持跨租户复杂联接的传统关系数据库,或需要 PostgreSQL 特有功能,则不建议使用。
快速参考
| 模式 | API / 命令 | 要点 |
|---|---|---|
| 远程客户端 | createClient({ url, authToken }) | 连接到 Turso 云数据库 |
| 本地文件客户端 | createClient({ url: 'file:local.db' }) | 通过 libSQL 使用纯本地 SQLite |
| 嵌入式副本 | createClient({ url, syncUrl, authToken }) | 本地读取,远程同步 |
| 手动同步 | client.sync() | 从远程拉取最新更改 |
| 定期同步 | 客户端配置中的 syncInterval: 60 | 自动同步间隔,单位为秒 |
| 执行查询 | client.execute({ sql, args }) | 使用位置参数 ? 或命名参数 $param |
| 批量操作 | client.batch([...statements], mode) | 原子执行多条语句 |
| 交互式事务 | client.transaction('write') | 多步逻辑,支持提交和回滚 |
| 静态数据加密 | 客户端配置中的 encryptionKey | 加密本地数据库文件 |
| 插入向量 | vector32('[0.1, 0.2, ...]') | 将嵌入向量存储为 F32_BLOB 列 |
| 向量搜索 | vector_distance_cos(col, vector32(...)) | 余弦相似度,按距离升序排列 |
| 向量索引 | libsql_vector_idx(col, 'type=diskann') | DiskANN 索引,用于高效最近邻搜索 |
| 创建数据库(CLI) | turso db create <name> | 配置新数据库 |
| 创建数据库(API) | POST /v1/organizations/{org}/databases | 以编程方式为多租户配置数据库 |
| 生成令牌(CLI) | turso db tokens create <name> | 创建认证令牌,可选只读权限和过期时间 |
| Drizzle 集成 | drizzle(createClient({ url, authToken })) | 使用 drizzle-orm/libsql 驱动 |
| 内存数据库 | createClient({ url: ':memory:' }) | 用于测试的临时数据库 |
常见错误
| 错误 | 正确做法 |
|---|---|
在没有 authToken 的情况下使用 syncUrl | 嵌入式副本需要同时配置 syncUrl 和 authToken |
读取前忘记调用 client.sync() | 调用 sync() 或设置 syncInterval,以保持副本为最新状态 |
在没有向量索引的情况下使用 vector_distance_cos | 创建 libsql_vector_idx 索引,以高效进行相似性搜索 |
| 在源代码中硬编码身份验证令牌 | 使用环境变量 TURSO_DATABASE_URL 和 TURSO_AUTH_TOKEN |
| 对简单批处理使用交互式事务 | 使用 client.batch() 执行原子性的多语句操作 |
| 出错时未关闭事务 | 始终在 finally 块中调用 transaction.close() |
| 为所有租户创建一个数据库 | 对 SaaS 工作负载使用按租户隔离的多数据库架构 |
| 将原始数组作为向量值传递 | 使用 vector32() SQL 函数包装向量,或传入 Float32Array |
使用 ORDER BY distance DESC 查找最近邻 | 对于余弦距离,距离越小越近;请使用 ORDER BY distance ASC |
委派
如果有
drizzle-orm技能,请将 ORM 架构定义、查询构建、关联关系和迁移模式委派给它。 否则,建议使用:pnpm dlx skills add oakoss/agent-skills -s drizzle-orm -a claude-code -y如果有
local-first技能,请将架构决策、同步引擎比较和冲突解决策略委派给它。 否则,建议使用:pnpm dlx skills add oakoss/agent-skills -s local-first -a claude-code -y如果有
pglite技能,请将与 Turso 嵌入式副本进行比较时涉及的 PGlite 特定模式委派给它。
- 数据库配置:使用
TaskAgent 自动设置多租户 - 向量搜索调优:使用
ExploreAgent 调研嵌入模型和维度 - 代码审查:委派给
code-reviewerAgent
参考资料
评论
支持 Markdown