Drizzle ORMのSQLite接続概要

Drizzle ORMでは、SQLiteデータベースとの接続にlibsqlとbetter-sqlite3の2種類のドライバーを使用できます。libsqlはTursoやWebSocket、HTTP接続などリモートアクセスが可能なためサーバーレス環境に向いています。一方、better-sqlite3はローカル環境やシンプルなアプリケーションでの利用に適しています。本記事では、これら2つのドライバーを用いたDrizzle ORMでのSQLite接続方法について解説します。

libsqlドライバーを使用した接続設定

libsqlは、SQLiteの拡張版で、Tursoのリモートデータベース接続やHTTP、WebSocketといった多様なプロトコルをサポートしています。特にサーバーレス環境やエッジコンピューティングでの使用が推奨されます。

ステップ1:パッケージのインストール

libsqlクライアントをインストールします。また、マイグレーション管理用にdrizzle-kitも追加します。

npm install drizzle-orm @libsql/client
npm install -D drizzle-kit

ステップ2:ドライバーの初期化とクエリの実行

libsqlを用いた接続は、URLと認証トークン(Tursoなどのリモート環境の場合)が必要です。

import { drizzle } from 'drizzle-orm/libsql';
const db = drizzle({
  connection: {
    url: process.env.DATABASE_URL,
    authToken: process.env.DATABASE_AUTH_TOKEN
  }
});
const result = await db.execute('SELECT 1');

クライアントインスタンスを使用した接続

libsqlのクライアントインスタンスを直接利用することも可能です。

import { drizzle } from 'drizzle-orm/libsql';
import { createClient } from '@libsql/client';
const client = createClient({
  url: process.env.DATABASE_URL,
  authToken: process.env.DATABASE_AUTH_TOKEN
});
const db = drizzle(client);
const result = await db.execute('SELECT 1');

libsqlドライバーの特徴

  • プロトコルの多様性:libsqlは、HTTP、WebSocket、Tursoのようなリモート接続をサポートしており、エッジ環境や分散環境に最適です。
  • リモートSQLite対応:ローカルだけでなくリモートでのSQLiteデータベース操作が可能です。

better-sqlite3ドライバーを使用した接続設定

better-sqlite3は、シンプルで高速なNode.js向けのSQLiteドライバーです。ローカル開発環境やシングルインスタンスのデータベース接続に向いています。

ステップ1:パッケージのインストール

better-sqlite3ドライバーをインストールし、drizzle-kitも併せて追加します。

npm install drizzle-orm better-sqlite3
npm install -D drizzle-kit @types/better-sqlite3

ステップ2:ドライバーの初期化とクエリの実行

better-sqlite3での接続設定はシンプルで、ファイルパスを指定するだけでデータベースに接続できます。

import { drizzle } from 'drizzle-orm/better-sqlite3';
import Database from 'better-sqlite3';
const sqlite = new Database('example.db');
const db = drizzle(sqlite);
const result = await db.execute('SELECT 1');

better-sqlite3ドライバーの特徴

  • シンプルな設定:ローカルファイルに簡単に接続でき、Node.jsアプリケーションでの利用に向いています。
  • 高パフォーマンス:シングルスレッドでの高速な処理を行うため、リソース効率が良いです。

libsqlとbetter-sqlite3の使い分け

  • libsqlは、サーバーレスやリモートでの接続、HTTPやWebSocketプロトコルを利用する必要がある場合に適しています。
  • better-sqlite3は、ローカル環境や単一ファイルでのシンプルなデータベース管理に適しており、開発初期のテストにも便利です。

まとめ

Drizzle ORMのSQLite接続には、libsqlとbetter-sqlite3の2つのドライバーがあり、それぞれの特性に合わせて利用できます。libsqlはサーバーレスやエッジ環境に最適化されており、better-sqlite3はローカル環境向けです。用途に応じて最適なドライバーを選択し、効率的なデータベース接続を実現しましょう。