概要
DBドキュメントを自動生成できるツールの有名所でいうと、MySQL Workbenchが筆頭に上がると思うが、それ以外にも良いOSSがないか漁ってみてちょっと触ってみたので感想を残す。
Schemaspy
DBに接続してhtmlでDBドキュメントを生成してくれるJava製のツール。
Dockerhubにイメージがあるので、それを使って簡単に試してみることができる。
MySQL5.7(多分5.8も大丈夫だと思う・・)は、こんな感じでいけるはず。
docker run -v "$PWD/schema:/output" --net="host" schemaspy/schemaspy:latest \ -t mysql -host {DBHOST}:{DBPORT} -db {DBNAME} -u {DBUSER} -p {DBPASSWORD}
MySQL5.6環境下ではコマンドをちょっといじる必要がある。
docker run -v "$PWD/schema:/output" --net="host" schemaspy/schemaspy:latest -t mysql -host {DBHOST}:{DBPORT} -db {DBNAME} -u {DBUSER} -p {DBPASSWORD} -connprops useSSL\\=false -s {DBNAME}
いずれもワンライナーでお試しできるので簡単。
もちろんmysql以外でもOK。
tbls
CIフレンドリーなDBドキュメンテーションツールで、markdownでドキュメントを生成してくれる。
depでもrpmでもbrewでもgoでもdockerでもインストールできる。
使い方は簡単なのでgithubのREADME参照。
ドキュメントはmarkdownですべて管理したいので個人のアプリケーションのドキュメンテーションに採用している。
所感
- ER図だけで比較すると、結論はMySQL Workbenchが一番見やすいかもしれない。ただしテーブル数による。少ないテーブル数であれば どれでも良さそう。
- MySQL WorkbenchのER生成はリレーション関係にないテーブルを自動で落としてくれないが、schemaspyはちゃんと落として生成してくれるぽい。
- schemaspyのER図はテーブル数が多いとリレーションの線が追いづらいので、UIでなんとか調整できると良いと思った。MySQL Workbenchは手動で調整できるのでそのへん柔軟。(自動整頓の機能はあるが、限界があるぽい...)
- ERについては全テーブルのリレーションを吐き出すのは物理的限界を感じるので、そこは使う側の工夫が必要なのかなぁと思う。一度に全テーブルを対象としてリレーションをみたいというケースはそんなにないと思うので、テーブルを絞るなどすれば良いと思う。schemaspyはERとして生成するテーブルを絞ったりできるのかな・・?ちゃんと見ていないがパッと見できなそう・・
- tblsはCIフレンドリーなのでCIに組み込みやすいと思うが、schemaspyの方も比較的に容易に組み込むことができそう。
- rarejob-tech-dept.hatenablog.com - ER図 の自動作成を CI に組み込んだ話