DbGate:Webとデスクトップ対応の汎用データベースクライアント
通常、モダンなバックエンドスタックは単一のDBMSに限定されません。プロジェクトには、気軽にメインのリレーショナルモデル用にPostgreSQL、キャッシュとセッション用にRedis、分析用ログ用にClickHouse、非構造化ドキュメント用にMongoDBが使われることがあります。こんな状況で、4つの異なる重量級クライアントを開いたり、複数のDBeaverタブを維持したりするのは、甚だ疑問な楽しみと言えます。
最近DbGateを見つけました。これはGPL-3.0ライセンスのプロジェクトで、统一的なアプローチでデータベース動物園問題を解決することを目指しています。最も興味深い点は、クライアントがElectronによるデスクトップアプリケーションとしても、Dockerコンテナ内の軽量Webインターフェースとしても、同等に動作することです。
このプロジェクトできること
DbGateはSQLとNoSQLの両方のデータソースをサポートしています。対応データベースには、Postgres、MySQL、SQLite、SQL Server、Oracle、MariaDB、ClickHouse、DuckDB、CockroachDB、Firebird、Cassandra、MongoDB、Redisが含まれています。
このツールは日常的なデータ管理を処理し、いくつかの標準的ではない機能も提供しています:
- 外部キーリレーションシップのナビゲーション。テーブルビューでは、関連テーブルの子レコードを直接行から展開(マスター/ディテール)したり、JOINを記述せずに外部キーを介して列を引っ張ってこれたりできます。
- 変更スクリプト生成を伴うデータの表示と編集。セルをクリックして値を編集し、データベースに送信する前に生成されたSQLパッチを確認できます。
- ビジュアルクエリビルダー。長い式を手書きする懒得場合、マウスでクエリ構造をスケッチするのに役立ちます。
WHERE NOT EXISTSを含む選択も可能です。 - NDJSON、JSON、CSV、Excelファイルの組み込みビューア。大容量のNDJSONファイルは事前のインポートなしで直接ディスク上で開いて編集できます。
- ERダイアグラムとマイグレーション同期生成を伴うスキーマ比較。
- GEO列のマップ可視化とHTMLエクスポートによるシンプルなチャート作成。
アーキテクチャの動作
内部では、非常に実用的なスタックを使用しています:
- フロントエンドはSvelteで書かれています。インターフェースは素早く反応し、不要なDOMノードで乱雑にならず、大きな仮想化テーブルを迅速にレンダリングします。
- バックエンドはNode.jsとExpressで動作し、標準的なデータベースコネクタを使用します。
- デスクトップビルドはElectronでラップされ、Windows、Linux、macOSに対応しています。
モジュール性が興味深いです。多くのユーティリティは別々のNPMパッケージに分割されています。例えば、スケジュールされたCSVデータエクスポートのパイプラインが必要な場合、Node.jsスクリプトはグラフィカルインターフェースなしでサーバーで自律的に実行できます。
さらに、Pluginシステムも実装されています。TypeScriptまたはJavaScriptで小さなモジュールを書けば、カスタムドライバーをプラグインしたり、珍しいファイル形式のパーサーを追加したりできます。
クイックスタート
マシンにインストールせずにクライアントを試したい場合は、最も簡単な方法はDockerでWeb版を起動することです:
docker run -it --name dbgate-instance --restart always -p 3000:3000 dbgate/dbgate
その後、ブラウザでhttp://localhost:3000を開き、ローカルまたはリモートデータベースに接続します。
プロジェクトをローカルでビルドしてソースコードを掘り下げたい人のために:
git clone https://github.com/dbgate/dbgate.git
cd dbgate
yarn
yarn start
このコマンドは、バックエンドをポート3000で、Webインターフェースをポート5001で起動します。
ユースケース
実際には、DbGateは2つのタスクを優れています:
- 個人開発者ツール。DBeaver、RedisInsight、MongoDB Compassの組み合わせを、起動時にRAMを数GBも消費せずに置き換えます。
- サーバー上の内部チームダッシュボード。閉じたネットワーク内でDockerイメージを起動することで、アナリストや開発者にSSHトンネルやローカルユーティリティを設定する必要なく、统一的なWebインターフェースでデータベースへのアクセスを与えます。
誰が使うべきか
重量級のJavaクライアントの起動時間の遅さや、RedisとPostgreSQL用に別々のプログラムを切り替えることに疲れているなら、DbGateは確かに試す価値があります。このプロジェクトは積極的に開発されており、免费ライセンスで配布され、デスクトップとサーバーの両方で利用可能です。
関連プロジェクト