Drizzle ORMのPlanetScale接続概要
PlanetScaleは、スケーラビリティとパフォーマンスに優れたサーバーレスMySQLプラットフォームで、特にサーバーレスアプリケーションに最適化されています。Drizzle
ORMは、PlanetScaleと接続するためのHTTPおよびTCPドライバーをサポートしており、アプリケーションの用途に応じて適切な接続方式を選択可能です。本記事では、Drizzle
ORMを用いてPlanetScaleに接続するための設定手順と、接続方式の使い分けについて詳しく解説します。
PlanetScaleとの接続設定方法
ステップ1:パッケージのインストール
まず、PlanetScale用のHTTPクライアント@planetscale/database
とDrizzle
ORMをインストールします。また、開発環境用にdrizzle-kit
も追加します。
npm install drizzle-orm @planetscale/database
npm install -D drizzle-kit
ステップ2:HTTP接続設定の初期化
HTTPベースのplanetscale-serverless
ドライバーを使った接続は、サーバーレス環境に最適です。以下のコードでは、環境変数に設定したホスト名、ユーザー名、パスワードを使ってデータベースに接続しています。
import { drizzle } from 'drizzle-orm/planetscale-serverless';
const db = drizzle({
connection: {
host: process.env.DATABASE_HOST,
username: process.env.DATABASE_USERNAME,
password: process.env.DATABASE_PASSWORD
}
});
const result = await db.select().from('users');
この設定により、HTTP接続によるスケーラブルなデータベースアクセスが可能になります。
既存のクライアントインスタンスを使った接続
既に@planetscale/database
クライアントを利用している場合、そのクライアントインスタンスをDrizzle
ORMに渡すことで再利用が可能です。
import { drizzle } from 'drizzle-orm/planetscale-serverless';
import { Client } from '@planetscale/database';
const client = new Client({
host: process.env.DATABASE_HOST,
username: process.env.DATABASE_USERNAME,
password: process.env.DATABASE_PASSWORD
});
const db = drizzle({ client });
const users = await db.select().from('users');
クライアントインスタンスの再利用により、複数の接続設定が不要になるため、コードの簡素化が図れます。
TCP接続を用いた接続設定
PlanetScaleは、HTTP接続に加えてTCP接続もサポートしており、持続的な接続が必要なアプリケーションでのパフォーマンス向上が期待できます。TCP接続にはmysql2
ドライバーを使用します。
ステップ1:mysql2
パッケージのインストール
TCP接続を使用する場合は、mysql2
パッケージもインストールします。
npm install mysql2
ステップ2:TCP接続の初期化
以下の例では、mysql2
ドライバーを用いてPlanetScaleにTCP接続を設定しています。
import { drizzle } from 'drizzle-orm/mysql2';
import mysql from 'mysql2/promise';
const pool = mysql.createPool({
host: process.env.DATABASE_HOST,
user: process.env.DATABASE_USERNAME,
password: process.env.DATABASE_PASSWORD,
database: process.env.DATABASE_NAME
});
const db = drizzle(pool);
const result = await db.select().from('users');
プール接続により、同時接続数を管理しつつ効率的なデータ処理が可能です。
HTTP接続とTCP接続の使い分け
接続方式 | 使用環境 | 特徴 |
---|---|---|
HTTP接続 | サーバーレス環境、Vercelなどで推奨 | リクエストごとに接続が作成されスケーラブル |
TCP接続 | 長期接続が必要なサーバー環境 | 持続的な接続が可能で、パフォーマンス向上 |
TCPプール接続 | 高負荷のアプリケーション環境 | 複数の接続を効率的に管理し、リソース最適化 |
まとめ
Drizzle
ORMは、PlanetScaleのHTTPおよびTCP接続をサポートしており、用途に応じて柔軟な接続方式が選べます。サーバーレス環境でのスケーラビリティを重視する場合はHTTP接続、高負荷の環境でのパフォーマンス向上にはTCP接続が適しています。用途に応じて適切な接続方式を選択し、効率的なデータベース操作を実現しましょう。