CloudBeaver Communityをdockerで建ててみた感想

■はじめに

DB設計をするときに、今まで常に使っていたのはA5:SQL Mk-2でした。

a5m2.mmatsubara.com

でもこれMacでは使えないんですよねー。
現在Macであれこれ作ってる関係で、どうしてもSQLエディターとテーブル仕様書の出力、ER図の作成をワンツールで行いたい。

何かいいやつないかしら、と探してて見つけたのがDBeaver。

dbeaver.io

一番気に入ったのが、ER図の生成までワンポチでやってくれる点。
ER図のメンテ辛いからこれは助かる。

f:id:theboyalex:20210924174518p:plain
スキーマやテーブルからのdiagram生成が可能

ちなみにCloudBeaverというOSSもあって、CommunityEditionなら無料で利用できる。

ところがDBeaverは本当に直感的に操作して普通に使えるのだけど、CloudBeaverは若干手間取った。 そしてある理由から利用は諦めました。。

今回はこれの備忘録です。

■結論

CloudBeaverはEnterpriseEditionでないとdiagram生成機能が使えない!

f:id:theboyalex:20210924175420p:plain
うそーん

公式ページのどこにも書いてないやんけ!

■調査の経緯

まず最新版のコンテナを確認。 eeではなく無印の方をチョイス。 f:id:theboyalex:20210924180120p:plain

公式ページにDockerでの動かし方が書いてあるので、これを参考にdocker-compose.ymlにする。

  cloudbeaver_django:
    container_name: cloudbeaver_django
    hostname: cloudbeaver
    image: dbeaver/cloudbeaver:${CLOUDBEAVER_TAG}
    restart: always
    ports:
      - ${CLOUDBEAVER_PORT}:8978
    volumes:
      - ./cloudbeaver/workspace:/opt/cloudbeaver/workspace
    healthcheck:
      test: ["CMD-SHELL","stat /opt/cloudbeaver/workspace || exit 1"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 10s
CLOUDBEAVER_TAG=21.1.4
CLOUDBEAVER_PORT=38080

docker compose up すると特に問題なく起動。
画面をチェック。 初期設定画面が出てくるのでNextで2ページ目へ。

f:id:theboyalex:20210924181311p:plain

ここで気をつけないとならないのは、CustomConnectionsを有効にしないと行けない点。

最初この設定をすっ飛ばして、manualでの接続設定が一切できず小一時間ほど格闘するハメに。

実は公式にも書いてあったんだけど

cloudbeaver.io

supportsCustomConnectionsをどこで設定するのか公式ページでは判断が全くつかず。

volume配下のworkspaceにある設定ファイルに設定があるのを見つけて直接イジろうとしてたけど、流石に使いづらいだろうと思いとどまってあれこれ探してたら初期設定画面で発見。

Enable Custom ConnectionsのトグルをONにすると、DataBase ConnectionsをCustom選択出来るようになる。
f:id:theboyalex:20210924182358p:plain

これやらないとtemplateから画一的なConnectionしか作成できません。

任意のデータベースを選択すると、接続設定の画面に遷移。

f:id:theboyalex:20210924182759p:plain

ここで気をつけるポイントは、データベースがコンテナの場合はhostの設定はDockerの内部IPを記述すること。

その他のConnection情報を入力したら接続テストを実施してください。
f:id:theboyalex:20210924183001p:plain

接続が無事完了したら必ずCreateしてください!

ボクは接続テストで安心してNextで先に進んだらConnection設定がSaveされずに終わってしまう罠にハマりました。

(初期設定フローで保存がスキップされてしまうような作りはいかがなものかと思うよ。。)

そんなこんなで無事に接続できてテーブルを表示したところ、 f:id:theboyalex:20210924183521p:plain

あれー?
Properties、Dataの並びにあるはずのdiagramタブないぞ??

公式ページの通り操作してもdiagramのタブが出てこず。
そもそも但し書きにある「if the tab is not presented then the object does not support the diagram presentation」って具体的にどんなオブジェクト??

cloudbeaver.io

DBのバージョンかなー、CloudBeaverのバージョンかなーとかあれこれ触ったけど変化なし。

最終的にIssueを確認したら同じとこでつまづいてる人がいて原因判明。

■まとめ

公式ページが結構雑だなーというのと、後DBeaverに比べてCloudBeaverはUX面ではまだまだかな、といった印象を受けました。

Cloud BeaverはER図作れなくて残念だったけど、アプリ版のDBeaverが素晴らしい作りになっているので、しばらくはこちらを使おうとおもいました。


今回はここまで。

ではでは。