130
112

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ZeneloAdvent Calendar 2018

Day 17

まだER図の管理で消耗してるの? SchemaSpy でER図を自動生成して管理する 

Last updated at Posted at 2018-12-17

はじめまして。謎の集団ZeneloでDBAやらSREの見習いをやっている者です。
初めてQiitaを書くので、煽りタイトルの割には駄文かつかなり内容が薄いですがご了承ください。 :bow:

ER図を手で管理するのはつらい

現在、謎の集団zeneloではER図を ERMaster というツールで管理している。 ERMasterは細かい部分までER図を表現できる素晴らしいツールではあるが、Json型やDatetime(6)など対応していない為表現できない型があったり、Eclipseを開かなければならないなどいくつかの課題があります。

何より手で管理するのがつらく、 ER図を作成するのは、SRE用語で言うトイルにあたる作業である為、
SREを志す身としては、このトイルを撲滅したいと思い、何か良いツールがないかを探していました。

そこでSchemaSpyの登場

SchemaSpyとは、指定したDatabaseのテーブルの情報(ColumnやIndex)や、リレーション(ER図)などをよしなにhtmlに出力してくれるツールです。

あのメルペイ様でも使用事例があり、CircleCIで自動生成しているそうです。
https://tech.mercari.com/entry/2018/05/25/133818

また、githubの「database-diagrams」タグで一番のスター数であり、開発も盛んに行われているようです。
https://github.com/topics/database-diagrams

SchemaSpyのいいところ

UIがキレイ

この手のツールは一昔前の堅苦しいUIのイメージ(偏見)ですが、今風のUIでとても見やすいです。

サンプルのリンク
http://schemaspy.org/sample/index.html

docker run で作成できる

schemaspyは、dockerのimageを予め提供してくれているので、dockerを実行できる環境さえあれば、以下のコマンドで一発で作成できる。
これによりcodebuildなどのCI上で実行することにより、ER図の自動生成をすることができる。

docker run -v "$PWD/schema:/output" --net="host" schemaspy/schemaspy:6.1.0 -t mysql -host $ENDPOINT:3306 -db $DB_NAME -u $DB_USER -p $DB_PASSWORD -connprops useSSL\\=false -s information_schema 

※ バージョンは2020/05/25現在最新のバージョンの6.1.0を指定

使い方は以下のQiitaの記事がわかりやすかったです。

https://qiita.com/kamukiriri/items/ab1669c19831c18db9ee
https://qiita.com/miurabo/items/9cd5826db0018177db6d

指定したテーブルの関連する部分だけ表示させてくれる

見たいテーブルをクリックすると、そのテーブルと直接関係をもつテーブルだけを表示してくれます。
image.png
しかも、各関連テーブルはリンクになっていて、クリックするとそのテーブルの詳細ページに飛べるようになっています。
複数のテーブルを管理するDBの場合、一般的なER図のツールではテーブルが多すぎて何を見ればいいのかわからなくなる場合があるのでとても助かる機能です。

もちろん全体図も表示することも可能。
http://schemaspy.org/sample/relationships.html

最後に

codebuildなどと組み合わせて、トリガーが発動したら、ER図を生成して、S3にpublishする仕組みを作ればER図を管理する苦労から開放されます。 あの重いEclipseを開かなくてよくなる。 ERMasterからの移行はまだできていませんが、AWSリソースを用いた仕組みの部分についてはまた後日書こうかなと思います。

130
112
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
130
112

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?