参考 https://docs.turso.tech/quickstart#select-all-rows-from-table 快速入门文档
使用比较简单,后续业务中连接数据库有 sdk 和 http 连接两种方案
@libsql/client
createClient
创建 client关联:
drizzle 和 sqlite 有一流的支持,连 AstroDB 都是基于 drizzle 封装的。
使用方式
drizzle-orm
和 @libsql/client
依赖drizzle-kit
开发依赖,用来生成 sql、迁移 sql 开发间操作
drizzle-kit generate
生成drizzle-kit migrate
迁移drizzle-kit studio
页面查看db/schema.ts
到处 table 定义drizzle.config.ts
设置 schema 位置、驱动、连接参数看文档额外提到,可以用 sentry 来获取 sql 慢查询、sql 错误
libsql 远程协议
/v2/pipeline
为什么要 close ?不 close 的话 10s 内根据 ctx 还能续上。
这种方式是基于 http 的,属于独有的连接方案,可以轻松在任何场合连接,有点意思。
通过下面可以实现免鉴权方案拦截托管的 libsql-server,但是带 jwt 鉴权的还得再看看。
文档地址
https://github.com/tursodatabase/libsql/blob/main/docs/DOCKER.md
在 m1 芯片的苹果上使用这个
docker run --name some-sqld -p 8080:8080 -ti \
-e SQLD_NODE=primary \
--platform linux/amd64 \
ghcr.io/tursodatabase/libsql-server:latest
数据持久化
环境变量
-v sqld-data:/var/lib/sqld
SQLD_DB_PATH=iku.db
sqld_auth_jwt_key_file
传递一个 key.pem 私钥,
SQLD_AUTH_JWT_KEY
直接传递字符串jwt 长什么样,希望后续可以通过 http 来连接和操作
{
"requests": [
{ "type": "execute", "stmt": { "sql": "SELECT * FROM users" } },
{ "type": "close" }
]
}
# 展示 url
turso db show my-db --http-url
# token
turso db tokens create my-db
参考 https://www.json.cn/jwt/
https://jwt.io/
// header
{
"alg": "EdDSA",
"typ": "JWT"
}
// payload
{
"iat": 1726756735,
"id": "81220406-4854-4d4b-817e-61f4a092cdc4"
}