Drizzle ORMのマイグレーション概要
Drizzle ORMのマイグレーションは、データベースのスキーマ変更を管理し、コードとデータベースの整合性を保つための重要なプロセスです。Drizzle ORMは「データベース主導」と「コードベース主導」の2つのアプローチをサポートし、それぞれのニーズに応じて適切な方法を選択することができます。
マイグレーションのアプローチ
データベース主導アプローチ
データベース主導アプローチでは、データベースがスキーマの「真実の源」となり、スキーマ変更をデータベースから取得してコードベースに反映させます。データベースの変更内容をTypeScriptコードとしてインポートすることで、コードとデータベースの整合性を保つことが可能です。
-
コマンド:
drizzle-kit pullnpx drizzle-kit pullこのコマンドにより、現在のデータベーススキーマがTypeScript形式で生成され、データベースの最新状態がコードに反映されます。
コードベース主導アプローチ
コードベース主導アプローチでは、スキーマはTypeScriptコードとして定義され、データベースへの適用もDrizzleから直接行います。このアプローチは、スキーマをコードベースで一元管理し、変更を追跡したい場合に適しています。コードからデータベースへのスキーマ変更の適用方法として、次の2つの方法があります。
スキーマの直接適用 (pushアプローチ)
Drizzle ORMがTypeScriptコードベースからデータベースへ直接スキーマを適用します。開発初期や小規模プロジェクトでの迅速なスキーマ変更に適しています。
-
コマンド:
drizzle-kit pushnpx drizzle-kit push
SQLマイグレーションファイルの生成 (generateアプローチ)
Drizzle ORMがTypeScriptコードベースをもとにSQLマイグレーションファイルを生成し、後でデータベースに適用します。スキーマ変更が頻繁に発生する大規模プロジェクトやチームでの開発において便利です。
-
コマンド:
drizzle-kit generateでファイル生成、drizzle-kit migrateで適用npx drizzle-kit generate npx drizzle-kit migrate
マイグレーションの流れとコマンド
スキーマ変更を反映する基本的な流れ
以下は、コードベース主導のアプローチでのマイグレーションの流れです。
-
スキーマの定義・変更
TypeScriptファイルでスキーマを定義、または変更します。import { pgTable, serial, varchar } from 'drizzle-orm/pg-core'; export const users = pgTable('users', { id: serial('id').primaryKey(), name: varchar('name', { length: 255 }), email: varchar('email', { length: 255 }).unique(), }); -
SQLマイグレーションファイルの生成
generateコマンドで、スキーマの変更差分に基づいたSQLファイルが自動生成されます。npx drizzle-kit generate -
マイグレーションの適用
migrateコマンドを使用して、生成されたSQLファイルをデータベースに適用します。npx drizzle-kit migrate
Drizzleの主なマイグレーションコマンド一覧
| コマンド | 説明 |
|---|---|
drizzle-kit pull | データベーススキーマをTypeScriptに反映 |
drizzle-kit push | TypeScriptスキーマをデータベースに直接適用 |
drizzle-kit generate | SQLマイグレーションファイルを生成 |
drizzle-kit migrate | 生成されたSQLファイルをデータベースに適用 |
マイグレーションの管理ポイント
バージョン管理とスキーマの一貫性
コードベース主導でスキーマを管理する場合、Gitなどのバージョン管理システムと連携することで、スキーマ変更の追跡やチーム間での共有が容易になります。マイグレーションファイルが生成されることで、プロジェクト全体で一貫性のあるスキーマ管理が可能です。
チームでのマイグレーションの適用
Drizzle ORMは、チームでの協力を前提としたマイグレーション管理にも対応しています。SQLマイグレーションファイルを生成することで、異なる環境で同じスキーマ変更を簡単に適用できます。
まとめ
Drizzle ORMのマイグレーション機能は、データベースとコードベースのアプローチを柔軟に選択でき、プロジェクトの規模やニーズに合わせてスキーマ変更を簡単に管理できます。drizzle-kitコマンドを使ったスムーズなマイグレーション管理により、スキーマの一貫性を保ち、効率的な開発が実現できます。
参照:
Migrations