turso について
libSQLベースのエッジ向けSQLiteプラットフォーム、Tursoの利用を解説するリファレンススキルです。クライアント接続、埋め込みレプリカ、ベクトル検索、データベース管理を扱います。
主な機能
- 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 は、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() を呼び出します |
| すべてのテナントに1つのデータベースを作成する | SaaS ワークロードではテナントごとにマルチデータベースで分離します |
| ベクトル値として生の配列を渡す | ベクトルは SQL 関数 vector32() でラップするか、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 固有のパターンを委任してください。
- データベースのプロビジョニング:マルチテナントのセットアップ自動化には
Taskエージェントを使用します - ベクトル検索のチューニング:埋め込みモデルと次元数の調査には
Exploreエージェントを使用します - コードレビュー:
code-reviewerエージェントに委任します