79
Help us understand the problem. What are the problem?

posted at

updated at

Organization

2022年度最新版スタンドアロンDBマイグレーションツールの比較

概要

Ruby on Rails, CakePHP, LaravelといったWebアプリケーションフレームワークには標準でデータベースマイグレーションツールが包含されている。
一方でデータベースマイグレーションをwebアプリケーションと別に管理したいケースもある。本記事ではスタンドアロンで利用可能なマイグレーションツールを比較してみる。

データベースマイグレーションとは何か

データベースマイグレーションはRDBMSのdatabase・スキーマ定義をコード化し、テーブル・インデックス更新を自動化することである。主に下記を実施することができる。
- databaseの作成
- テーブルの作成・更新
- インデックスの作成・更新
- DBスキーマのバージョン管理(過去に実行されたSQLが特定のテーブルに保存される)

DBマイグレーションツール一覧

選定条件
* スタンドアロンで導入、運用保守が可能である。
* GitHubやBitBucketでソースコードが公開されている、かつスター100以上である。(BitBucketはスタートがないため考慮しない)
* ライセンスが緩めである。(MIT, Apache2.0, etc)
* ドキュメントが存在する。

ツール名 動作環境 ライセンス DSL/RawSQLのサポート サポート対象RDBMS ドキュメント
MyBatis Migration Java Apache2.0 RawSQLのみ JDBCドライバーが存在する
RDBMS全て
あり
liquibase Java Apache2.0 両方 MySQL, PostgreSQL,
Oracle, Sql Server,
Sybase_Enterprise, Sybase_Anywhere,
DB2 , Apache_Derby
derby, HSQL,
H2, Informix,
Firebird, SQLite
あり
Flyway Java Apache2.0 両方 Oracle, SQL Server, Aurora MySQL, MariaDB,
Percona XtraDB Cluster, PostgreSQL,
Aurora PostgreSQL, Redshift,
CockroachDB, SAP HANA,
Sybase ASE, Informix,
H2, HSQLDB,
Derby and SQLite
あり
phpmig PHP None RawSQLのみ MySQL, MariaDB,
PostgreSQL
GitHubのREADMEのみ
phinx PHP MIT 両方 ? あり
ridgepole Ruby MIT 両方 RDBクライアント用
Gemが存在するRDBMS全て
GitHubのREADMEのみ
migrate Go MIT DSLのみ SQLite3, PostgreSQL,
MySQL, SQL Server,
Cassandra, RedShift,
あり
sql-migrate Go MIT 両方 SQLite, PostgreSQL,
MySQL, SQL Server,
Oracle
GitHubのREADMEのみ
goose Go MIT 両方 postgres, mysql,
sqlite3
BitBucketのREADMEのみ
alembic Python MIT 両方 MySQL, SQLServer,
Postgresql, SQLite
あり
simple-db-migrate Python Apache2.0 RawSQLのみ MySQL, SQLServer,
Oracle
GitHubのREADMEのみ
yoyo-migrations Python Apache2.0 両方 MySQL, SQLServer,
Postgresql, SQLite
あり
db-migrate node.js MIT 両方 Mysql, PostgreSQL,
sqlite3, Mongodb
あり
node-pg-migrate node.js MIT 両方 PostgreSQL あり

(参考)
https://qiita.com/nownabe/items/1acce9f6b9f14f74c965
https://qiita.com/k-motoyan/items/6f64d650f14bfb180e54
https://qiita.com/narikei/items/8a71c5439edc9cb66550
https://qiita.com/okoppe8/items/c9f8372d5ac9a9679396

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
79
Help us understand the problem. What are the problem?