Drizzle ORMのデータベース接続の概要

Drizzle ORMは、TypeScriptベースのORMとして、サーバーレスやエッジ環境での利用を前提に設計されています。データベース接続には、node-postgresMySQLSQLiteといった主要なドライバーに対応し、各種クラウドサービスのサーバーレス環境に合わせた接続設定も提供しています。今回は、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では、pgTablepgCoreなどを使ってテーブルスキーマを定義し、これらを基にデータベース操作を行います。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を、各プロジェクトに応じて活用しましょう。