Menu

データベース統合

Nextyの自動データベース適応により、環境変数DATABASE_URLを1つ設定するだけで、ボイラープレートがランタイムプラットフォーム(Vercel/Netlify/Server)とデータベースプロバイダー(Supabase/Neon/セルフホスト)に基づいて最適な接続パラメーターを自動選択します。

  • 必須の環境変数は1つのみ: DATABASE_URL
  • 内蔵ツール: Drizzle ORM + drizzle-kit(migration/push/studio)とシードデータスクリプト
  • 自動最適化:
    • サーバーレス(Vercel/Netlify/Lambda)は制限を回避するため単一接続に自動的に削減されます
    • Supabase/Neonは自動的にSSLが有効化されます
    • Neon + Vercelは互換性問題を回避するためprepared statementが自動的に無効化されます

Supabaseの使用

データベースの作成

Supabaseのウェブサイトにアクセスしてアカウントを登録します。カスタムドメインメールで登録したい場合は、まずResend統合ドメインメール設定を完了してください。

New Projectをクリックして新しいプロジェクトを作成します

Supabase new project

この手順で入力するパスワードを覚えておいてください

Supabase create project

環境変数を.envまたは.env.localファイルに設定します

connect
copy env

[YOUR-PASSWORD]を前の手順で入力したパスワードに置き換えてください。

データベースの初期化

次のコマンドでデータベースを初期化してシードデータを投入します:

# データベースを初期化
npm run db:migrate
 
# 料金プランのサンプルシードデータをインポート
npm run db:seed

完了後、Supabaseで完全なデータテーブルが表示されます。

tables

Neonの使用

データベースの作成

Neonのウェブサイトにアクセスしてアカウントを登録します。カスタムドメインメールで登録したい場合は、まずResend統合ドメインメール設定を完了してください。

Create Projectをクリックして新しいプロジェクトを作成します

Supabase new project
Supabase create project

環境変数を.envまたは.env.localファイルに設定します

connect
copy env

データベースの初期化

次のコマンドでデータベースを初期化してシードデータを投入します:

# データベースを初期化
npm run db:migrate
 
# 料金プランのサンプルシードデータをインポート
npm run db:seed

完了後、Supabaseで完全なデータテーブルが表示されます。

tables

データベーススキーマの更新

package.jsonには一般的に使用されるデータベース操作コマンドがいくつか提供されています。

新機能を開発する際に、新しいテーブルを作成したり既存のテーブルを拡張したりする必要がある場合は、以下の手順に従ってください:

  1. lib/db/schema.tsでデータベーススキーマを更新します
  2. npm run db:generateコマンドを実行してmigrationファイルを自動生成します
  3. npm run db:migrateコマンドを実行してmigrationファイルをデータベースに適用します

セルフホストのPostgresを使用している場合は、npm run db:studioを実行してビジュアル化インターフェースを開くことができます。

package.jsonで提供されているコマンドの中には、"db:push": "drizzle-kit push"もあります。npm run db:pushを実行すると、migrationファイルを生成せずに直接データベースを更新します。これは標準的な手法ではなく、一般的には推奨されません。

カスタムDrizzle設定

Nextyボイラープレートには、デプロイプラットフォームとデータベースプロバイダーに基づいてDrizzle設定を自動的に作成する機能があります。自動設定ファイルはlib/db/config.tsにあります。ランタイム環境はVercel、Netlify、Lambda、サーバー環境の検出をサポートしています。データベースプロバイダーはSupabase、Neon、AWS RDS、GCP SQL、セルフホストPostgresをサポートしています。

あなたのランタイム環境またはデータベースプロバイダーがこれらに含まれていない場合は、lib/db/config.tsで簡単に拡張できます。

プロジェクトをサーバーにデプロイする場合は、サーバーのCPUとメモリに基づいて最大接続数max値を変更できます。Postgresをセルフホストしていたり、特定のコンプライアンス要件がある場合は、パラメーターをオーバーライドすることもできます。