Drizzle ORMのマイグレーション概要

Drizzle ORMのマイグレーションは、データベースのスキーマ変更を管理し、コードとデータベースの整合性を保つための重要なプロセスです。Drizzle ORMは「データベース主導」と「コードベース主導」の2つのアプローチをサポートし、それぞれのニーズに応じて適切な方法を選択することができます。

マイグレーションのアプローチ

データベース主導アプローチ

データベース主導アプローチでは、データベースがスキーマの「真実の源」となり、スキーマ変更をデータベースから取得してコードベースに反映させます。データベースの変更内容をTypeScriptコードとしてインポートすることで、コードとデータベースの整合性を保つことが可能です。

  • コマンド:drizzle-kit pull

    npx drizzle-kit pull
    

    このコマンドにより、現在のデータベーススキーマがTypeScript形式で生成され、データベースの最新状態がコードに反映されます。

コードベース主導アプローチ

コードベース主導アプローチでは、スキーマはTypeScriptコードとして定義され、データベースへの適用もDrizzleから直接行います。このアプローチは、スキーマをコードベースで一元管理し、変更を追跡したい場合に適しています。コードからデータベースへのスキーマ変更の適用方法として、次の2つの方法があります。

スキーマの直接適用 (pushアプローチ)

Drizzle ORMがTypeScriptコードベースからデータベースへ直接スキーマを適用します。開発初期や小規模プロジェクトでの迅速なスキーマ変更に適しています。

  • コマンド:drizzle-kit push

    npx drizzle-kit push
    

SQLマイグレーションファイルの生成 (generateアプローチ)

Drizzle ORMがTypeScriptコードベースをもとにSQLマイグレーションファイルを生成し、後でデータベースに適用します。スキーマ変更が頻繁に発生する大規模プロジェクトやチームでの開発において便利です。

  • コマンド:drizzle-kit generate でファイル生成、drizzle-kit migrate で適用

    npx drizzle-kit generate
    npx drizzle-kit migrate
    

マイグレーションの流れとコマンド

スキーマ変更を反映する基本的な流れ

以下は、コードベース主導のアプローチでのマイグレーションの流れです。

  1. スキーマの定義・変更
    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(),
    });
    
  2. SQLマイグレーションファイルの生成
    generateコマンドで、スキーマの変更差分に基づいたSQLファイルが自動生成されます。

    npx drizzle-kit generate
    
  3. マイグレーションの適用
    migrateコマンドを使用して、生成されたSQLファイルをデータベースに適用します。

    npx drizzle-kit migrate
    

Drizzleの主なマイグレーションコマンド一覧

コマンド説明
drizzle-kit pullデータベーススキーマをTypeScriptに反映
drizzle-kit pushTypeScriptスキーマをデータベースに直接適用
drizzle-kit generateSQLマイグレーションファイルを生成
drizzle-kit migrate生成されたSQLファイルをデータベースに適用

マイグレーションの管理ポイント

バージョン管理とスキーマの一貫性

コードベース主導でスキーマを管理する場合、Gitなどのバージョン管理システムと連携することで、スキーマ変更の追跡やチーム間での共有が容易になります。マイグレーションファイルが生成されることで、プロジェクト全体で一貫性のあるスキーマ管理が可能です。

チームでのマイグレーションの適用

Drizzle ORMは、チームでの協力を前提としたマイグレーション管理にも対応しています。SQLマイグレーションファイルを生成することで、異なる環境で同じスキーマ変更を簡単に適用できます。

まとめ

Drizzle ORMのマイグレーション機能は、データベースとコードベースのアプローチを柔軟に選択でき、プロジェクトの規模やニーズに合わせてスキーマ変更を簡単に管理できます。drizzle-kitコマンドを使ったスムーズなマイグレーション管理により、スキーマの一貫性を保ち、効率的な開発が実現できます。

参照:

Migrations