Drizzle ORMのデータベース接続の概要
Drizzle
ORMは、TypeScriptベースのORMとして、サーバーレスやエッジ環境での利用を前提に設計されています。データベース接続には、node-postgres
、MySQL
、SQLite
といった主要なドライバーに対応し、各種クラウドサービスのサーバーレス環境に合わせた接続設定も提供しています。今回は、Drizzle
ORMでの接続設定と、各データベースの使用例について詳しく紹介します。
基本的な接続設定
Drizzle
ORMの接続設定は、環境変数を使ったデータベースURLを指定することで行います。以下の例では、DATABASE_URL
という環境変数を使用して、PostgreSQLデータベースに接続しています。
import { drizzle } from 'drizzle-orm/node-postgres';
const db = drizzle(process.env.DATABASE_URL);
- 環境変数の設定:デプロイ環境で異なる接続情報を管理するため、環境変数にデータベースURLを設定するのが一般的です。
- データベースURLの構成:データベース接続URLは、
postgresql://username:password@hostname:port/database
の形式で、ユーザー名やホスト情報が含まれます。
データベースドライバーの設定例
Drizzle
ORMでは、pgTable
やpgCore
などを使ってテーブルスキーマを定義し、これらを基にデータベース操作を行います。users
テーブルの簡単な例を見てみましょう。
import { pgTable, integer, text } from 'drizzle-orm/pg-core';
export const users = pgTable('users', {
id: integer('id').primaryKey().autoIncrement(),
name: text('name'),
});
このスキーマ定義を使用することで、users
テーブルを通じたクエリ操作が可能になります。
サーバーレス環境での接続
Vercel、Neon、PlanetScaleとの統合
Drizzle
ORMは、サーバーレスデータベースサービスとネイティブに接続するためのドライバーも提供しており、エッジやクラウド環境でも効率的に動作します。以下に、各プラットフォームごとの接続例を示します。
Vercel Postgres
VercelのPostgresデータベースに接続する際は、専用のドライバーdrizzle-orm/vercel-postgres
を使用します。
import { drizzle } from 'drizzle-orm/vercel-postgres';
const db = drizzle();
Neon
NeonはPostgreSQL互換のサーバーレスデータベースで、WebSocketやHTTPベースの接続方法がサポートされています。
import { drizzle } from 'drizzle-orm/neon-http';
const db = drizzle(process.env.DATABASE_URL); // HTTP接続
PlanetScale
PlanetScaleはMySQL互換のデータベースで、HTTP接続による効率的なデータ処理が特徴です。
import { drizzle } from 'drizzle-orm/planetscale';
const db = drizzle(process.env.DATABASE_URL);
SQLiteの利用とカスタムデータベースドライバー
Cloudflare D1、Bun SQLite、Expo SQLiteとの接続
Drizzle
ORMは、軽量なデータベースであるSQLiteにも対応しており、サーバーレスやローカル開発に最適です。
- Cloudflare D1:Cloudflare Workersに統合されたサーバーレス環境用のSQLiteデータベース。
- Bun SQLite:インメモリデータベースとして利用する場合の例。
import { drizzle } from 'drizzle-orm/d1';
const db = drizzle({ connection: env.DB });
SQLiteはリソース効率が良いため、小規模なプロジェクトやテスト用データベースに適しています。
データベース接続のベストプラクティス
環境変数での接続情報管理
環境変数を活用することで、セキュアで柔軟な接続管理が可能になります。接続情報はコード内に直接書き込まず、.env
ファイルを使って管理するのが推奨されます。
サーバーレス環境でのセッション管理
サーバーレス環境では、リクエストごとにセッションが切れる場合があるため、パフォーマンスや接続再利用に配慮が必要です。Drizzle
ORMはdb.$client
プロパティでドライバーインスタンスに直接アクセスできるため、接続プールなどの管理が容易です。
まとめ
Drizzle
ORMの接続設定は、環境変数を活用したシンプルな構成と、サーバーレス環境に特化したドライバーが特徴です。VercelやNeon、PlanetScaleなどの各プラットフォームと柔軟に連携し、エッジ環境でも効率的にデータベースを操作できるDrizzle
ORMを、各プロジェクトに応じて活用しましょう。