Drizzle ORMのPGLite接続概要
PGLiteは、PostgresデータベースをWebAssembly(WASM)として実行し、Node.jsやブラウザで利用できるインメモリPostgresの軽量データベースソリューションです。インメモリデータベースとして動作するほか、ファイルシステム(Node.js、Bun)やIndexedDB(ブラウザ)を使って永続的にデータを保持することもできます。Drizzle
ORMは、このPGLiteとの接続をサポートしており、サーバーレスアプリやフロントエンドでのデータベース操作に便利です。
PGLiteとDrizzle
ORMの接続設定
ステップ1:パッケージのインストール
まず、PGLiteとDrizzle
ORMをインストールします。Drizzle
のマイグレーションツールとしてdrizzle-kit
も併せてインストールします。
npm install drizzle-orm @electric-sql/pglite
npm install -D drizzle-kit
ステップ2:PGLiteドライバーの初期化とクエリの実行
インメモリデータベースの設定
インメモリデータベースとしてPGLiteを使用する場合は、drizzle()
関数を呼び出すだけで設定が完了します。
import { drizzle } from 'drizzle-orm/pglite';
const db = drizzle();
const result = await db.select().from('users');
このように、インメモリでの簡単なテストや一時的なデータ操作に最適です。
データ永続化の設定
データを永続化したい場合は、Node.jsまたはBunでファイルシステム、ブラウザでIndexedDBにデータを保存できます。次の例では、ファイルシステムにデータを永続化する方法を示します。
import { drizzle } from 'drizzle-orm/pglite';
const db = drizzle({ connection: { dataDir: 'path-to-data-dir' } });
const result = await db.select().from('users');
ここでは、dataDir
で指定したディレクトリにデータが保存されます。IndexedDBに保存する場合も同様の手順で設定が可能です。
既存のPGLiteクライアントの使用
既に@electric-sql/pglite
クライアントを初期化している場合、そのクライアントをDrizzle
ORMに直接渡すことも可能です。
import { PGlite } from '@electric-sql/pglite';
import { drizzle } from 'drizzle-orm/pglite';
const client = new PGlite();
const db = drizzle({ client });
const users = await db.select().from('users');
このように、クライアントインスタンスを再利用することで、複数の接続や設定を一元管理できます。
PGLiteの特徴と活用シーン
PGLiteは、軽量なPostgresデータベースとして、以下のような特徴と利点を持ちます。
- WebAssemblyによる軽量性:PGLiteは2.6MBの軽量なサイズで、ブラウザやサーバーレス環境で迅速にセットアップできます。
- インメモリと永続化の柔軟な対応:データの永続化やインメモリの選択が可能で、短期間のセッションデータや長期保存データに対応します。
- フロントエンドでの利用:IndexedDBへの対応により、ブラウザ上で動作するアプリケーションでもPostgresのSQLクエリを直接使用できます。
まとめ
Drizzle
ORMとPGLiteの組み合わせにより、Node.jsやブラウザでPostgres互換のインメモリデータベースを簡単に利用できるようになります。インメモリデータベースとしての軽量性を活かしつつ、ファイルシステムやIndexedDBへのデータ永続化も可能で、幅広いユースケースに対応できるのが特徴です。開発環境や軽量アプリケーションにおいて、Drizzle
ORMとPGLiteを活用してみましょう。