📝
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 |
インストール
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スキーマからテーブル情報のドキュメントが生成されます。
使った感想
400テーブル数ある既存のDBスキーマからテーブル情報のドキュメントを生成したところ、約2時間位かかりました。結果として手メンテする資料より全然イケテルので週末だれも使っていない環境で実行しておくとかいいかもしれない。
参考にさせて頂いたサイト様
SchemaSpy - 既存のDBスキーマからドキュメント生成
CircleCI x SchemaSpyでER図を新しくし続ける
Discussion