>_ DevTrendsja

言語

ホーム

言語

セクション

フロントエンド バックエンド モバイル DevOps AI / ML ゲーム開発 ブロックチェーン 組み込み セキュリティ
JavaScript

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つのタスクを優れています:

  1. 個人開発者ツール。DBeaver、RedisInsight、MongoDB Compassの組み合わせを、起動時にRAMを数GBも消費せずに置き換えます。
  2. サーバー上の内部チームダッシュボード。閉じたネットワーク内でDockerイメージを起動することで、アナリストや開発者にSSHトンネルやローカルユーティリティを設定する必要なく、统一的なWebインターフェースでデータベースへのアクセスを与えます。

誰が使うべきか

重量級のJavaクライアントの起動時間の遅さや、RedisとPostgreSQL用に別々のプログラムを切り替えることに疲れているなら、DbGateは確かに試す価値があります。このプロジェクトは積極的に開発されており、免费ライセンスで配布され、デスクトップとサーバーの両方で利用可能です。

関連プロジェクト