Cacooで「データベーススキーマを自動生成できる」という素晴らしい機能が先週発表されました。
Cacooが提供するSQLクエリをデータベースで実行して、その結果をCSVファイルとしてエクスポートしてCacooにアップロードするだけでER図が生成されるというものです。
現時点で公式サポートされているのはMySQLとPostgreSQLですが、
一応1列目にRDBMSの名前が入るようになってるんですが、CSVのフォーマットとしては統一されてます。
— Kohei Kimura (@cohhei) 2020年4月16日
ということなので、tbls out
のサポートフォーマットにCacooのデータベーススキーマ機能用のCSV( cacoo
)を追加しました。tbls v1.33.0で試すことができます。
MySQLのデータベーススキーマ
まずはMySQLのデータベースで試してみましょう。
対象として、tblsのテストケースやサンプル生成で利用しているDDLを利用します。
Cacoo SQL:
Cacoo提供のSQLで生成されるER図は以下です。
tbls out:
tbls out
に新たに追加されたフォーマット cacoo
を使うことでCacooのデータベーススキーマ機能用のCSVを出力できます。
$ tbls out my://root:mypass@localhost:33306/testdb -t cacoo -o schema.csv
違いは以下のような感じです。
- character_maximum_lengthの取り扱い
- enumの取り扱い
- VIEWテーブルの取り扱い
Cacooとtbls out
との差はありますが、十分に使えそうです。
また、tblsにはVirtualなリレーションを .tbls.yml で拡張できる機能があります。
$ tbls out my://root:mypass@localhost:33306/testdb -c tbls.yml -t cacoo -o schema.csv
リレーションを表すエッジが増えました。
現時点ではCacooのCSVの仕様上 FK
としてVirtualなリレーションを追加していますが*1、追加でリレーションを表すエッジが引かれていることがわかるかと思います。
例えば、BigQueryのER図を出力する
tbls out
で出力したCSVでもCacooでER図が生成できるということはつまり、tblsがサポートしている全てのDBMSでCacooでER図が生成できる ということですね。
試しにBigQueryのデータセットのER図を生成してみます。
対象とするのはtblsのサンプルドキュメントでも利用している bigquery-public-data/crypto_bitcoin です。
$ tbls out bq://bigquery-public-data/crypto_bitcoin?creds=client_secrets.json -c crypto_bitcoin_tbls.yml -t cacoo -o schema.csv
普通に生成できました。 tbls.ymlによるVirtualなリレーションも再現されています。
というわけで
つまり、Cacooのデータベーススキーマ機能は実質
- PostgreSQL
- MySQL
- SQLite
- BigQuery
- Cloud Spanner
- Amazon Redshift
- Microsoft SQL Server
- Amazon DynamoDB
に対応しているわけですね。Cacoo便利!
是非試してみてください。簡単にCacoo上にER図が生成されるの、感動ものですよ。