ツール:Flyway、Liquibase、Sqitch
代表的なスキーママイグレーションツール、そのバージョン管理モデル、CI連携を比較します。
「ツール:Flyway、Liquibase、Sqitch」はCoddyKit上の無料SQL Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはSQL Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 SQL Academyコースには全4レッスンが含まれています。
マイグレーションツールを使う理由
スキーマの変更は、次の条件を満たす必要があります。
- ソース管理でバージョン管理されている
- 決められた順序で適用される
- CI/CDで自動実行される
- 場合によってはロールバックできる
Flyway
Javaベースのファイルベースのマイグレーションツールです。各ファイルには、バージョンの接頭辞を付けた名前を付けます。
-- V1__create_users.sql
CREATE TABLE users (id BIGSERIAL PRIMARY KEY, email TEXT NOT NULL);
-- V2__add_full_name.sql
ALTER TABLE users ADD COLUMN full_name TEXT;
-- Flyway tracks applied migrations in a flyway_schema_history table.Flyway CLI
マイグレーションを適用します。
flyway -url=jdbc:postgresql://localhost/mydb -user=app migrate
flyway info # show what would run
flyway repair # fix the history table after a failureLiquibase
XML/YAML/JSON(またはSQL)ベースの「changeset」を使用します。Flywayより記述量は多くなりますが、データベース間の抽象化をサポートします。
<!-- changeset alice:001 -->
<createTable tableName="users">
<column name="id" type="bigserial" autoIncrement="true">
<constraints primaryKey="true"/>
</column>
<column name="email" type="text"><constraints nullable="false"/></column>
</createTable>Liquibase のロールバックサポート
各changesetでロールバック処理を宣言できます。Liquibaseでは、直近のN個の変更をロールバックできます。
liquibase rollbackCount 1Sqitch
ネイティブSQLを使用し、バージョン番号による順序付けは行いません。代わりに、依存関係を明示したDAGを使用します。各変更には、deploy / verify / revertスクリプトがあります。
sqitch add add_users -n 'Add users table'
# edits deploy/add_users.sql, verify/add_users.sql, revert/add_users.sql
sqitch deploy db:pg://localhost/mydb3つのツールの比較
| Flyway | Liquibase | Sqitch | |
|---|---|---|---|
| 形式 | SQL | XML/YAML/JSON | SQL |
| バージョン管理 | 逐次 | 逐次 | DAG |
| ロールバック | 限定的 | ネイティブ | ネイティブ |
| 検証ステップ | なし | 任意 | 組み込み |
フレームワーク組み込みのツール
多くのWebフレームワークには、独自のマイグレーションツールがあります。
- Rails:ActiveRecord migrations
- Django:組み込みのmigrations
- Node:knex、sequelize、prisma migrate
- NestJS:TypeORM migrations
CIワークフロー
標準的なパイプラインは次のとおりです。
- PRに新しいマイグレーションファイルを含める
- CIで空のPostgresを起動し、すべてのマイグレーションを実行する
- マイグレーション後のスキーマに対して自動テストを実行する
- マージ後、ステージング、次に本番環境へデプロイしてマイグレーションを実行する
リピート可能なマイグレーション
Flywayには「R__」リピート可能マイグレーションがあります。変更のたびに再実行されます。ビューやストアドプロシージャに適しています。
-- R__users_view.sql (re-applied whenever its checksum changes)
CREATE OR REPLACE VIEW active_users AS
SELECT id, email FROM users WHERE deleted_at IS NULL;スキーマ差分の検出
migra、schemahero、またはpgquarrelを使って、期待されるスキーマと実際のスキーマの差分を検出します。
まとめ
ツールを1つ選び、継続して使いましょう。
- Flyway — SQL優先でシンプル
- Liquibase — 宣言的で抽象化レイヤーを提供
- Sqitch — DAGによる依存関係、ロールバックを重視
- 共通:ソース管理でバージョン管理し、CIで自動化する
クイックチェック
逐次的なバージョン番号ではなく、マイグレーション間の依存関係を明示したDAGをネイティブに使用するツールはどれでしょうか。
AI チューターと学ぶ SQL — 無料
ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。
- コース
- 46
- レッスン
- 183
よくある質問
「ツール:Flyway、Liquibase、Sqitch」レッスンは無料ですか?
はい。「ツール:Flyway、Liquibase、Sqitch」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、SQL Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 SQL Academyコースには全4レッスンが含まれています。
「ツール:Flyway、Liquibase、Sqitch」で何を学びますか?
代表的なスキーママイグレーションツール、そのバージョン管理モデル、CI連携を比較します。 ブラウザで直接実行するハンズオンコードでSQL Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
SQL Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのSQL Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「ツール:Flyway、Liquibase、Sqitch」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このSQL Academyレッスンでコードを書いて実行できますか?
はい。すべてのSQL Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- オンラインマイグレーション:ALTER TABLEがロックする理由
- 並行インデックス作成(CREATE INDEX CONCURRENTLY)
- ダウンタイムゼロの列名変更
- ツール:Flyway、Liquibase、Sqitch