Cacooのデータベーススキーマ機能で、例えばBigQueryのER図を出力する

Cacooで「データベーススキーマを自動生成できる」という素晴らしい機能が先週発表されました。

cacoo.com

Cacooが提供するSQLクエリをデータベースで実行して、その結果をCSVファイルとしてエクスポートしてCacooにアップロードするだけでER図が生成されるというものです。

現時点で公式サポートされているのはMySQLPostgreSQLですが、

ということなので、tbls out のサポートフォーマットにCacooのデータベーススキーマ機能用のCSVcacoo )を追加しました。tbls v1.33.0で試すことができます。

MySQLのデータベーススキーマ

まずはMySQLのデータベースで試してみましょう。

対象として、tblsのテストケースやサンプル生成で利用しているDDLを利用します。

Cacoo SQL:

Cacoo提供のSQLで生成されるER図は以下です。

f:id:k1LoW:20200420012025p:plain
cacoo sql

tbls out:

tbls out に新たに追加されたフォーマット cacoo を使うことでCacooのデータベーススキーマ機能用のCSVを出力できます。

$ tbls out my://root:mypass@localhost:33306/testdb -t cacoo -o schema.csv

f:id:k1LoW:20200420011447p:plain
tbls out

違いは以下のような感じです。

  • 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

f:id:k1LoW:20200420012614p:plain
tbls out with .tbls.yml

リレーションを表すエッジが増えました。

現時点では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

f:id:k1LoW:20200420013434p:plain
bq

普通に生成できました。 tbls.ymlによるVirtualなリレーションも再現されています。

というわけで

つまり、Cacooのデータベーススキーマ機能は実質

に対応しているわけですね。Cacoo便利!

是非試してみてください。簡単にCacoo上にER図が生成されるの、感動ものですよ。

*1:CSVのCONSTRAINT_TYPEのカラムが"FOREIGN KEY"でなくてもREFERENCED_*なカラムにちゃんと値が入っていたらnon-FKでリレーションを引いてくれるようになると嬉しいです!Cacooの中の人よろしくご検討ください!