>_ DevTrendsde

Sprache

Start

Sprachen

Bereiche

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embedded Sicherheit
JavaScript

DbGate: Ein universeller Datenbank-Client für Web und Desktop

Normalerweise beschränkt sich ein modernes Backend-Stack nicht auf ein einzelnes DBMS. Ein Projekt kann problemlos PostgreSQL für das hauptsächliche relationale Modell, Redis für Caching und Sessions, ClickHouse für analytische Logs und MongoDB für unstrukturierte Dokumente verwenden. In dieser Situation ist das Öffnen von vier verschiedenen schwergewichtigen Clients oder das Offenhalten mehrerer DBeaver-Tabs ein zweifelhaftes Vergnügen.

Ich bin kürzlich auf DbGate gestoßen. Es ist ein GPL-3.0 lizenziertes Projekt, das das Datenbank-Zoo-Problem mit einem einheitlichen Ansatz lösen soll. Das Interessanteste daran ist, dass der Client sowohl als Desktop-Anwendung auf Electron als auch als leichtgewichtige Web-Oberfläche in einem Docker-Container gleich gut funktioniert.

Was das Projekt kann

DbGate unterstützt sowohl SQL- als auch NoSQL-Datenquellen. Die Kompatibilitätsliste umfasst Postgres, MySQL, SQLite, SQL Server, Oracle, MariaDB, ClickHouse, DuckDB, CockroachDB, Firebird, Cassandra, MongoDB und Redis.

Das Tool bewältigt routinemäßige Datenverwaltungsaufgaben und bietet mehrere ungewöhnliche Funktionen:

  • Navigation durch Foreign-Key-Beziehungen. In der Tabellenansicht können Sie untergeordnete Datensätze aus einer verknüpften Tabelle direkt aus einer Zeile heraus erweitern (Master/Detail) oder Spalten über Fremdschlüssel abrufen, ohne JOINs manuell zu schreiben.
  • Daten anzeigen und bearbeiten mit Generierung von Änderungsskripten. Sie klicken auf Zellen, bearbeiten Werte und können vor dem Senden an die Datenbank das generierte SQL-Patch überprüfen.
  • Visueller Abfrage-Builder. Hilft Ihnen, eine Abfragestruktur mit der Maus zu skizzieren, wenn Sie zu faul sind, lange Ausdrücke von Hand zu schreiben, einschließlich Auswahl mit WHERE NOT EXISTS.
  • Integrierter Viewer für NDJSON-, JSON-, CSV- und Excel-Dateien. Große NDJSON-Dateien können sogar direkt auf der Festplatte geöffnet und bearbeitet werden, ohne vorherigen Import.
  • ER-Diagramme und Schemavergleich mit Generierung von Migrationssynchronisation.
  • Datenvisualisierung auf Karten für GEO-Spalten und Erstellung einfacher Diagramme mit HTML-Export.

Wie die Architektur funktioniert

Unter der Haube verwendet das Projekt einen sehr praktischen Stack:

  • Das Frontend ist in Svelte geschrieben. Die Oberfläche reagiert schnell, ist nicht mit unnötigen DOM-Knoten überladen und rendert große virtualisierte Tabellen zügig.
  • Das Backend läuft auf Node.js und Express und verwendet Standard-Datenbank-Connectoren.
  • Der Desktop-Build verpackt alles in Electron für Windows, Linux und macOS.

Die Modularität ist interessant. Viele Utilities sind in separate NPM-Pakete aufgeteilt. Wenn Sie beispielsweise eine Pipeline für den geplanten CSV-Datenexport benötigen, können Node.js-Scripts autonom auf einem Server ohne grafische Oberfläche laufen.

Zusätzlich ist ein Plugin-System implementiert. Durch das Schreiben eines kleinen Moduls in TypeScript oder JavaScript können Sie einen benutzerdefinierten Treiber einbinden oder einen Parser für ein seltenes Dateiformat hinzufügen.

Schnellstart

Wenn Sie den Client ohne Installation auf Ihrem Rechner ausprobieren möchten, ist der einfachste Weg, die Web-Version in Docker zu starten:

docker run -it --name dbgate-instance --restart always -p 3000:3000 dbgate/dbgate

Anschließend öffnen Sie http://localhost:3000 in Ihrem Browser und verbinden sich mit lokalen oder remote Datenbanken.

Für diejenigen, die das Projekt lokal aufbauen und sich in den Quellcode vertiefen möchten:

git clone https://github.com/dbgate/dbgate.git
cd dbgate
yarn
yarn start

Der Befehl startet das Backend auf Port 3000 und die Web-Oberfläche auf Port 5001.

Anwendungsfälle

In der Praxis deckt DbGate zwei Aufgaben hervorragend ab:

  1. Persönliches Entwickler-Tool. Ersetzt die Kombination aus DBeaver, RedisInsight und MongoDB Compass, ohne beim Start Gigabytes an RAM zu verschlingen.
  2. Internes Team-Dashboard auf einem Server. Durch das Starten des Docker-Images in einem geschlossenen Netzwerk geben Sie Analysten und Entwicklern Zugriff auf Datenbanken über eine einheitliche Web-Oberfläche, ohne dass jede Person SSH-Tunnel und lokale Utilities konfigurieren muss.

Für wen es geeignet ist

Wenn Sie genug von langsamen Startzeiten schwergewichtiger Java-Clients oder dem Wechseln zwischen separaten Programmen für Redis und PostgreSQL haben, ist DbGate definitiv einen Blick wert. Das Projekt wird aktiv weiterentwickelt, unter einer freien Lizenz vertrieben und ist sowohl als Desktop- als auch als Server-Variante verfügbar.

Ähnliche Projekte