コンテンツにスキップ

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との統合を設定するには:

  1. データベースを作成し、データを入力するためにTurso CLIをインストールする必要があります。ターミナルで以下のいずれかのコマンドを使用してTurso CLIをインストールします:
Terminal window
# macOSおよびLinuxでHomebrewを使用する場合
brew install tursodatabase/tap/turso
# 手動スクリプトインストール
curl -sSfL https://get.tur.so/install.sh | bash

次に、Turso CLIがインストールされていることを確認するために、以下のコマンドを実行します:

Terminal window
turso --version
  1. 最初のTursoデータベースを作成する前に、次のコマンドを実行してGitHubアカウントで認証する必要があります:
Terminal window
turso auth login
認証を待っています...
成功! <YOUR_GITHUB_USERNAME> としてログインしました

認証が完了したら、turso db create <DATABASE_NAME> コマンドを使用してデータベースを作成できます。Tursoはデータベースを作成し、あなたに最も近い場所を自動的に選択します。

Terminal window
turso db create my-db
# 例:
データベース my-db をオランダのアムステルダム (ams) に作成中
# 成功した場合:
13秒でオランダのアムステルダム (ams) にデータベース my-db を作成しました。

最初のデータベースが作成されたので、直接接続してSQLクエリを実行できます。

Terminal window
turso db shell my-db
  1. 開いたシェルに以下の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');
  2. WorkerにTursoデータベース統合を追加します:

    1. Cloudflareダッシュボード にログインし、アカウントを選択します。
    2. アカウントホームWorkers & Pages を選択します。
    3. 概要 で Worker を選択します。
    4. 統合 > Turso を選択します。
    5. ステップ1で作成したデータベースを選択し、設定フローに従います。
  3. WorkerにTursoクライアントライブラリをインストールします:

Terminal window
npm install @libsql/client
  1. 次の例は、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の公式ドキュメントを参照してください。