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はローカル環境向けです。用途に応じて最適なドライバーを選択し、効率的なデータベース接続を実現しましょう。