AI 記事

エッジ時代のSQLite!Tursoで始めるデータベース入門

エッジ時代のSQLite!Tursoで始めるデータベース入門

エッジ環境でのデータ管理に悩んでいませんか? サーバーレスアプリケーションでデータベースのレイテンシが課題となるケースは少なくありません。データソースがユーザーから遠い場所にあり、応答速度が遅れる。この問題は、ユーザー体験を著しく損ねる原因となります。

従来のデータベースでは、グローバルに分散したユーザーにデータを高速に届けるのは簡単ではありませんでした。デプロイや管理には複雑な設定が求められます。しかし、SQLite互換のデータベース「Turso」を使えば、この課題を解決できます。Tursoはエッジコンピューティングに最適化されたデータベースです。この記事では、Tursoの基本的な使い方を解説します。

Tursoとは何か? 30秒で理解する

Tursoは、SQLiteをベースにしたオープンソースのデータベース「libSQL」を基盤としています。SQLiteとの互換性が高く、既存のSQLiteスキルを活かせます。Tursoの大きな特徴は、データを世界中のエッジロケーションに分散できる点です。ユーザーに近い場所でデータが処理されるため、低レイテンシを実現します。

サーバーレス関数やJamstackサイトなど、現代の分散型アプリケーションにぴったりの選択肢です。開発者は複雑なインフラ管理から解放されます。データ永続化の課題を解決する、新しい選択肢と言えるでしょう。

なぜ今、Tursoが必要なのか? エッジ時代のデータ課題

クラウドネイティブな開発が主流になり、アプリケーションはより分散化しています。ユーザーは世界中に存在し、それぞれの地域からサービスにアクセスします。しかし、データベースが特定のデータセンターにしか存在しない場合、遠隔地のユーザーはデータ取得に時間がかかります。これが「レイテンシ」の問題です。

例えば、北米にいるユーザーが日本のサーバーにあるデータベースにアクセスする。データの往復には、物理的な距離による遅延が発生します。Tursoは、データをユーザーの近くに配置する「エッジデータベース」として機能します。これにより、データへのアクセス速度が向上し、アプリケーション全体のパフォーマンスが改善します。開発者は、低レイテンシと高い可用性を同時に実現できるのです。

Tursoを使い始める準備:CLIのインストールと認証

Tursoを始めるには、まずTurso CLIをインストールします。CLIはTursoのデータベースを管理する公式ツールです。macOSやLinuxでは、以下のコマンドで簡単にインストールできます。

curl -sSfL https://get.tur.so/install.sh | bash

Windowsユーザーは、WSL(Windows Subsystem for Linux)を利用するか、公式サイトからダウンロードしてください(※1)。インストールが完了したら、tursoコマンドが使えるか確認します。

turso --version

次に、Tursoアカウントを作成し、CLIを認証します。アカウントがなければ、以下のコマンドでサインアップページが開きます。

turso auth signup

ブラウザでサインアップを完了させたら、ログインします。

turso auth login

これでTurso CLIからデータベースを操作する準備が整いました。

Tursoの基本操作をマスターする:データベース作成と接続

Turso CLIを使って、基本的なデータベース操作を体験しましょう。まずは、新しいデータベースを作成します。

turso db create my-first-db

my-first-dbは任意のデータベース名です。コマンド実行後、データベースが作成され、そのURLが表示されます。このURLは、アプリケーションからデータベースに接続する際に必要です。

次に、作成したデータベースに直接接続してみましょう。turso db shellコマンドを使います。

turso db shell my-first-db

これで、SQLiteのシェルが起動します。ここでSQLコマンドを実行できます。

CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT, email TEXT);
INSERT INTO users (name, email) VALUES ('Taro', 'taro@example.com');
SELECT * FROM users;

データが正しく挿入され、選択できることを確認してください。シェルを終了するには.quitと入力します。

最後に、アプリケーションから接続するために必要な認証トークンを作成します。

turso db tokens create my-first-db

表示されるトークンは、データベースへのアクセスキーです。安全に管理してください。

Tursoでデータベースを構築する:Node.jsからの接続例

実際にアプリケーションからTursoデータベースに接続してみましょう。ここでは、Node.jsと公式クライアントライブラリ@libsql/clientを使った例を紹介します。

まず、プロジェクトを作成し、ライブラリをインストールします。

mkdir turso-app
cd turso-app
npm init -y
npm install @libsql/client

次に、index.jsファイルを作成し、以下のコードを記述します。DB_URLDB_AUTH_TOKENは、先ほど取得したデータベースURLと認証トークンに置き換えてください。

import { createClient } from "@libsql/client";

async function main() {
  const DB_URL = process.env.DB_URL; // "libsql://my-first-db-xxxxx.turso.io"
  const DB_AUTH_TOKEN = process.env.DB_AUTH_TOKEN; // "eyJhbGciOiJIUzI1Ni..."

  if (!DB_URL || !DB_AUTH_TOKEN) {
    console.error("環境変数 DB_URL と DB_AUTH_TOKEN を設定してください。");
    process.exit(1);
  }

  const client = createClient({
    url: DB_URL,
    authToken: DB_AUTH_TOKEN,
  });

  try {
    // テーブル作成(初回のみ)
    await client.execute(`
      CREATE TABLE IF NOT EXISTS products (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        name TEXT NOT NULL,
        price INTEGER NOT NULL
      );
    `);
    console.log("productsテーブルを確認しました。");

    // データ挿入
    const insertResult = await client.execute({
      sql: "INSERT INTO products (name, price) VALUES (?, ?)",
      args: ["Laptop", 120000],
    });
    console.log(`挿入された行数: ${insertResult.rowsAffected}`);

    // データ取得
    const selectResult = await client.execute("SELECT * FROM products");
    console.log("取得したデータ:");
    console.log(selectResult.rows);

  } catch (e) {
    console.error("エラーが発生しました:", e);
  } finally {
    // 接続を閉じる(必要に応じて)
    // client.close(); // クライアントによっては自動で閉じます
  }
}

main();

このコードを実行する前に、環境変数を設定します。

export DB_URL="libsql://my-first-db-xxxxx.turso.io"
export DB_AUTH_TOKEN="eyJhbGciOiJIUzI1Ni..."
node index.js

コードを実行すると、productsテーブルの作成、データの挿入、そして取得が行われます。このように、数行のコードでTursoデータベースと連携できます。エッジ環境のアプリケーションでも、高速なデータアクセスを実現する基盤を構築できます。

Turso利用時の注意点:レプリカと料金体系

Tursoを実運用で使う際、いくつか注意すべき点があります。

一つ目は「レプリカ」の概念です。Tursoは、複数のエッジロケーションにデータベースのレプリカ(複製)を作成できます。ユーザーに近いレプリカに接続することで、レイテンシを最小限に抑えます。しかし、書き込みはプライマリデータベース(オリジナル)でのみ行われます。データの一貫性を保つためです。読み取りはレプリカから行われるため、アプリケーション設計では、読み取りと書き込みの特性を考慮する必要があります。

二つ目は、料金体系です。Tursoは、データベースのストレージ容量、転送データ量、行の読み書き回数に基づいて課金されます。無料プランでは、ストレージ容量が2GB、毎月10億行の読み書きが可能です。小規模なプロジェクトや開発環境には十分な容量です。本番環境で使う場合は、アプリケーションのアクセスパターンを把握し、適切なプランを選択しましょう。予期せぬ高額請求を避けるためにも、利用状況を定期的に確認してください。

まとめ

Tursoは、SQLiteのシンプルさとエッジコンピューティングの高速性を組み合わせた強力なデータベースです。サーバーレスやJamstackといった分散型アプリケーションで、データ永続化の課題を解決する選択肢となります。CLIを使った簡単な操作でデータベースを作成し、アプリケーションから高速にアクセスできる点は大きな魅力です。

まずはTurso CLIをインストールし、小さなデータベースを作ってみましょう。

参考文献


まとめ・次のステップ

この記事が役に立ったら、ブログのメールマガジンへ登録してください。 AI活用・個人開発・副業に関する最新情報を週1回お届けします。

👉 無料メルマガに登録する(Waitlist)


このブログでは、会社員をしながら副業でSaaSを開発する過程をリアルに発信しています。使用スタック: Next.js / Supabase / Claude API / Vercel

広告

-AI, 記事