vagrant
centos7
schema

CentOS7.3 環境(Vagrant)に SchemaSpy を導入してみるの巻

SchemaSpy ってなんじゃい

今あるデータベースからスキーマ情報・ER図、リレーションシップを出力してくれる便利なツールです。いままでの経験上、バグとか発生してプログラム修正するもドキュメントって更新されないことが多いんですよ、とくにテーブル情報のドキュメントって誰も更新しなかったりするんですよね、、。まああとプロジェクト途中で参加したけどそういった設計資料がゼロってとこもあるし。まあ、そういう訳でこういう便利ツールがあるといいわけですw。

SchemaSpy 動作前提条件

とりあえず、Java8 があればいけるっぽい。リレショーンシップは、graphviz インストールする必要があるぐらいかな。とりあえずね。
あとJavaなので好きな環境で使えばいいと思います。

ソフトウェア バージョン
JAVA 8
データベース Mysql,Oracle(default),DB2 ...
schemaspy 6.0.0-rc1
Graphviz 2.38.0

インストール

http://schemaspy.readthedocs.io/en/latest/home.html

schemaspy と、MySQL のドライバー、描画するための graphviz をインストールする。

/home/vagrant/dbspy
├── /html
├── schemaspy-6.0.0-rc1.jar
└── mysql-connector-java-5.1.43-bin.jar

schemaspy のインストール

とりあえず、こんな感じで。ok。最新版入れればいいと思うよ。

$ mkdir dbspy
$ cd dbspy
$ wget https://github.com/schemaspy/schemaspy/releases/download/v6.0.0-rc1/schemaspy-6.0.0-rc1.jar
$ mkdir html

MySQL ドライバーのインストール

使用するデータベースのドライバーをインストール。ってほどじゃないけどねw。

$ cd dbspy
$ wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.43.tar.gz
$ tar zxvf mysql-connector-java-5.1.43.tar.gz
$ cp mysql-connector-java-5.1.43/mysql-connector-java-5.1.43-bin.jar .

graphviz のインストール

CentOS 7にgraphvizをインストール さんの手順とおりに進めればok。

$ wget http://www.graphviz.org/graphviz-rhel.repo
$ sudo cp ./graphviz-rhel.repo /etc/yum.repos.d/
$ sudo yum install graphviz-2.38.0-1.el7
$ sudo yum install graphviz-graphs-2.38.0-1.el7
$ sudo yum install graphviz-gd-2.38.0-1.el7
$ sudo yum install graphviz-devel-2.38.0-1.el7
$ sudo yum install graphviz-lang-python-2.38.0-1.el7

config.file を作成してコマンド実行する。

config.file
# type of database. Run with -dbhelp for details
schemaspy.t=mysql
# optional path to alternative jdbc drivers.
schemaspy.dp=/home/vagrant/dbspy/mysql-connector-java-5.1.43-bin.jar
# database properties: host, port number, name user, password
schemaspy.host=server
schemaspy.port=3306
schemaspy.db=db_name
schemaspy.u=database_user
schemaspy.p=database_password
# output dir to save generated files
schemaspy.o=/home/vagrant/dbspy/html
# db scheme for which generate diagrams
schemaspy.s=dbo

と、db接続情報など修正して…。
下記のコマンドを実行する。

$ cd dbspy
$ java -jar schemaspy-6.0.0-rc1.jar -configFile config.file

実行結果がずらずらコンソールに表示されるのでエラーが表示されていないかぎりは、html ディレクトリに既存のDBスキーマからテーブル情報のドキュメントが生成されます。

http://schemaspy.org/sample/index.html

使った感想

400テーブル数ある既存のDBスキーマからテーブル情報のドキュメントを生成したところ、約2時間位かかりました。結果として手メンテする資料より全然イケテルので週末だれも使っていない環境で実行しておくとかいいかもしれない。

参考にさせて頂いたサイト様

SchemaSpy - 既存のDBスキーマからドキュメント生成
CircleCI x SchemaSpyでER図を新しくし続ける