DbGate: Un client database universale per web e desktop
Di solito, uno stack backend moderno non è limitato a un singolo DBMS. Un progetto può facilmente avere PostgreSQL per il modello relazionale principale, Redis per caching e sessioni, ClickHouse per i log analitici e MongoDB per documenti non strutturati. In questa situazione, aprire quattro client pesanti diversi o tenere aperte più schede di DBeaver è un piacere dubbio.
Di recente mi sono imbattuto in DbGate. È un progetto con licenza GPL-3.0 che mira a risolvere il problema del zoo di database con un approccio unificato. La parte più interessante è che il client funziona altrettanto bene come applicazione desktop su Electron e come interfaccia web leggera in un container Docker.
Cosa può fare il progetto
DbGate supporta sia fonti dati SQL che NoSQL. L'elenco di compatibilità include Postgres, MySQL, SQLite, SQL Server, Oracle, MariaDB, ClickHouse, DuckDB, CockroachDB, Firebird, Cassandra, MongoDB e Redis.
Lo strumento gestisce le attività routine di amministrazione dei dati e offre diverse funzionalità non standard:
- Navigazione attraverso le relazioni Foreign Key. Nella vista tabella, puoi espandere i record figli da una tabella correlata direttamente da una riga (Master/Detail) o recuperare colonne tramite foreign key senza scrivere manualmente le JOIN.
- Visualizzare e modificare i dati con generazione di script delle modifiche. Fai clic sulle celle, modifica i valori e prima di inviarli al database, puoi rivedere la patch SQL generata.
- Costruttore di query visuale. Ti aiuta a delineare la struttura di una query con il mouse se sei troppo pigro per scrivere a mano espressioni lunghe, incluse selezioni con
WHERE NOT EXISTS. - Visualizzatore integrato per file NDJSON, JSON, CSV ed Excel. File NDJSON di grandi dimensioni possono persino essere aperti e modificati direttamente su disco senza importazione preliminare.
- Diagrammi ER e confronto degli schemi con generazione di sincronizzazione delle migrazioni.
- Visualizzazione dei dati su mappe per colonne GEO e creazione di semplici grafici con esportazione HTML.
Come funziona l'architettura
Sotto il cofano, il progetto utilizza uno stack molto pratico:
- Il frontend è scritto in Svelte. L'interfaccia risponde rapidamente, non è ingombra di nodi DOM inutili e renderizza tabelle virtualizzate di grandi dimensioni in modo rapido.
- Il backend gira su Node.js ed Express, utilizzando connettori standard per database.
- La build desktop racchiude tutto in Electron per Windows, Linux e macOS.
La modularità è interessante. Molte utility sono suddivise in pacchetti NPM separati. Ad esempio, se hai bisogno di una pipeline per l'esportazione programmata di dati CSV, gli script Node.js possono essere eseguiti autonomamente su un server senza interfaccia grafica.
Inoltre, è implementato un sistema di plugin. Scrivendo un piccolo modulo in TypeScript o JavaScript, puoi inserire un driver personalizzato o aggiungere un parser per un formato di file raro.
Avvio rapido
Se vuoi provare il client senza installarlo sulla tua macchina, il modo più semplice è avviare la versione web in Docker:
docker run -it --name dbgate-instance --restart always -p 3000:3000 dbgate/dbgate
Dopo di che, apri http://localhost:3000 nel tuo browser e connettiti a database locali o remoti.
Per chi vuole compilare il progetto localmente e approfondire il codice sorgente:
git clone https://github.com/dbgate/dbgate.git
cd dbgate
yarn
yarn start
Il comando avvierà il backend sulla porta 3000 e l'interfaccia web sulla porta 5001.
Casi d'uso
In pratica, DbGate copre egregiamente due compiti:
- Strumento personale per sviluppatori. Sostituisce la combinazione di DBeaver, RedisInsight e MongoDB Compass senza divorare gigabyte di RAM all'avvio.
- Dashboard interna per il team su un server. Avviando l'immagine Docker all'interno di una rete chiusa, fornisci ad analisti e sviluppatori l'accesso ai database attraverso un'interfaccia web unificata senza che ogni persona debba configurare tunnel SSH e utility locali.
A chi è rivolto
Se sei stanco dei tempi di avvio lenti dei client Java pesanti o del passaggio tra programmi separati per Redis e PostgreSQL, DbGate merita sicuramente un'occhiata. Il progetto è sviluppato attivamente, distribuito con licenza libera e disponibile sia in versione desktop che server.
Progetti correlati