Turso
Turso ↗ は、libSQL ↗ に基づくエッジホスティングされた分散データベースで、SQLiteのオープンソースフォークです。Tursoは、世界中のどこからでもクエリが来るアプリケーションのために、クエリのレイテンシを最小限に抑えるように設計されています。
Database Integrations allow you to connect to a database from your Worker by getting the right configuration from your database provider and adding it as secrets to your Worker.
Tursoとの統合を設定するには:
- データベースを作成し、データを入力するためにTurso CLIをインストールする必要があります。ターミナルで以下のいずれかのコマンドを使用してTurso CLIをインストールします:
# macOSおよびLinuxでHomebrewを使用する場合brew install tursodatabase/tap/turso
# 手動スクリプトインストールcurl -sSfL https://get.tur.so/install.sh | bash次に、Turso CLIがインストールされていることを確認するために、以下のコマンドを実行します:
turso --version- 最初のTursoデータベースを作成する前に、次のコマンドを実行してGitHubアカウントで認証する必要があります:
turso auth login認証を待っています...✔ 成功! <YOUR_GITHUB_USERNAME> としてログインしました認証が完了したら、turso db create <DATABASE_NAME> コマンドを使用してデータベースを作成できます。Tursoはデータベースを作成し、あなたに最も近い場所を自動的に選択します。
turso db create my-db# 例:データベース my-db をオランダのアムステルダム (ams) に作成中
# 成功した場合:13秒でオランダのアムステルダム (ams) にデータベース my-db を作成しました。最初のデータベースが作成されたので、直接接続してSQLクエリを実行できます。
turso db shell my-db-
開いたシェルに以下のSQLクエリをコピーします:
CREATE TABLE elements (id INTEGER NOT NULL,elementName TEXT NOT NULL,atomicNumber INTEGER NOT NULL,symbol TEXT NOT NULL);INSERT INTO elements (id, elementName, atomicNumber, symbol)VALUES (1, '水素', 1, 'H'),(2, 'ヘリウム', 2, 'He'),(3, 'リチウム', 3, 'Li'),(4, 'ベリリウム', 4, 'Be'),(5, 'ホウ素', 5, 'B'),(6, '炭素', 6, 'C'),(7, '窒素', 7, 'N'),(8, '酸素', 8, 'O'),(9, 'フッ素', 9, 'F'),(10, 'ネオン', 10, 'Ne'); -
WorkerにTursoデータベース統合を追加します:
- Cloudflareダッシュボード ↗ にログインし、アカウントを選択します。
- アカウントホーム で Workers & Pages を選択します。
- 概要 で Worker を選択します。
- 統合 > Turso を選択します。
- ステップ1で作成したデータベースを選択し、設定フローに従います。
-
WorkerにTursoクライアントライブラリをインストールします:
npm install @libsql/client- 次の例は、Worker内でTursoデータベースにクエリを行う方法を示しています。Tursoに接続するために必要な認証情報は、統合を通じて自動的にWorkerにシークレットとして追加されています。
import { Client as LibsqlClient, createClient } from "@libsql/client/web";
export interface Env { TURSO_URL?: string; TURSO_AUTH_TOKEN?: string;}
export default { async fetch(request, env, ctx): Promise<Response> { const client = buildLibsqlClient(env);
try { const res = await client.execute("SELECT * FROM elements"); return new Response(JSON.stringify(res), { status: 200, headers: { "Content-Type": "application/json" }, }); } catch (error) { console.error("SQLクエリの実行中にエラーが発生しました:", error); return new Response(JSON.stringify({ error: "内部サーバーエラー" }), { status: 500, }); } },} satisfies ExportedHandler<Env>;
function buildLibsqlClient(env: Env): LibsqlClient { const url = env.TURSO_URL?.trim(); if (url === undefined) { throw new Error("TURSO_URL 環境変数が定義されていません"); }
const authToken = env.TURSO_AUTH_TOKEN?.trim(); if (authToken == undefined) { throw new Error("TURSO_AUTH_TOKEN 環境変数が定義されていません"); }
return createClient({ url, authToken });}- libSQLクライアントライブラリのインポート
@libsql/client/webは、Cloudflare Workersで作業する際に正確に示された通りにインポートする必要があります。非WebインポートはWorkers環境では機能しません。 Envインターフェースには、ステップ4でTurso統合を追加したときに定義された環境変数とシークレットが含まれています。Envインターフェースは、最初のリクエスト時にWorkerで作成されたlibSQLクライアントオブジェクトとルーターもキャッシュします。- Workerは
buildLibsqlClientを使用してelementsデータベースにクエリを行い、レスポンスをJSONオブジェクトとして返します。
環境が設定され、コードが準備できたので、デプロイする前にローカルでWorkerをテストできます。
Tursoについて詳しく知りたい場合は、Tursoの公式ドキュメント ↗を参照してください。