はじめに
テキストファイル(YAML)でデータベースのテーブル構造を管理できるmolderの基本的な使い方を紹介します

molder
概要molderはデータベースのテーブル構造をYAMLで管理するツールですテキストファイルでデータベースの管理が可能になるため、GITなどでテーブル構造の差分管理が可能になりますオープンソースで開発しており、ソースはGitHubに...
準備
今回はDockerでMySQLを用意します
下記のようなDocker-compose.ymlを使用し、データベースを作成します
version: "2"
services:
mysql:
image: mysql
environment:
MYSQL_RANDOM_ROOT_PASSWORD: 1
MYSQL_DATABASE: molder
MYSQL_USER: molder
MYSQL_PASSWORD: molder
ports:
- "3306:3306"
オプションで接続情報を指定するのは手間なので下記のようなservers.ymlを作成します
mysql:
type: mysql
host: 127.0.0.1
user: molder
password: molder
database: molder
YAMLからテーブルを作成する
下記のようなtables.ymlを作成します
tables:
users:
columns:
id:
id: true
name:
type: varchar
length: 100
notNull: true
created:
type: timestamp
notNull: true
molderでcreateを実行します
./molder create --hosts servers.yml --input tables.yml
何もテーブルが存在しないデータベースmolderにusersテーブルが作成されます

YAMLを更新し、テーブル構造を更新する
下記のようにtables.ymlを更新します
tables:
users:
columns:
id:
id: true
name:
type: varchar
length: 100
notNull: true
# addressを追加
address:
type: varchar
length: 500
created:
type: timestamp
notNull: true
molderでupdateします
./molder update --hosts servers.yml --input tables.yml
addressが追加されます

実際に実行されるクエリを確認する
updateする際--query
オプションを指定するとクエリが実行されず、画面上に表示されます
./molder update --hosts servers.yml --input tables.yml --query
実際にテーブル構造を更新する前にクエリを確認することができます
今回の場合は下記のようなクエリが表示されます
/* molder */
ALTER TABLE `users` ADD COLUMN `address` varchar(500) NULL ;
更新できるかチェックする
updateする際--dry-run
オプションを指定すると、クエリは実行されますがロールバックされます
./molder update --hosts servers.yml --input tables.yml --dry-run
エラーなくクエリが実行できるか現在のテーブル構造を変更することなく確認できます
おわりに
molderを使用すれば、新規作成したデータベースにテーブルを作成するとが簡単にできます
システムの開発途中でテーブルが追加されたり、カラムの定義が変更されたりした場合には、簡単にテーブル構造を変更することができます