DbGate: Um Cliente de Banco de Dados Universal para Web e Desktop
Normalmente, um stack backend moderno não se limita a um único SGBD. Um projeto pode facilmente ter PostgreSQL para o modelo relacional principal, Redis para cache e sessões, ClickHouse para logs analíticos e MongoDB para documentos não estruturados. Nessa situação, abrir quatro clientes pesados diferentes ou manter várias abas do DBeaver abertas é um prazer duvidoso.
Recentemente me deparei com o DbGate. É um projeto licenciado sob GPL-3.0 que visa resolver o problema do zoológico de bancos de dados com uma abordagem unificada. O mais interessante é que o cliente funciona igualmente bem como aplicativo desktop no Electron e como uma interface web leve em um container Docker.
O que o projeto pode fazer
DbGate suporta fontes de dados SQL e NoSQL. A lista de compatibilidade inclui Postgres, MySQL, SQLite, SQL Server, Oracle, MariaDB, ClickHouse, DuckDB, CockroachDB, Firebird, Cassandra, MongoDB e Redis.
A ferramenta lida com administração rotineira de dados e oferece vários recursos não convencionais:
- Navegação através de relacionamentos de Foreign Key. Na visualização de tabela, você pode expandir registros filhos de uma tabela relacionada diretamente de uma linha (Master/Detail) ou puxar colunas via foreign key sem escrever JOINs manualmente.
- Visualizar e editar dados com geração de script de alterações. Você clica nas células, edita valores e antes de enviar ao banco de dados, pode revisar o patch SQL gerado.
- Construtor visual de consultas. Ajuda a estruturar uma consulta com o mouse se você for preguiçoso demais para escrever expressões longas manualmente, incluindo selections com
WHERE NOT EXISTS. - Visualizador integrado para arquivos NDJSON, JSON, CSV e Excel. Arquivos NDJSON grandes podem até ser abertos e editados diretamente no disco sem importação prévia.
- Diagramas ER e comparação de schema com geração de sincronização de migrações.
- Visualização de dados em mapas para colunas GEO e construção de gráficos simples com exportação HTML.
Como a arquitetura funciona
Por baixo dos panos, o projeto usa uma stack muito prática:
- O frontend é escrito em Svelte. A interface responde rapidamente, não está poluída com nós DOM desnecessários e renderiza tabelas virtualizadas grandes com agilidade.
- O backend roda em Node.js e Express, usando conectores de banco de dados padrão.
- O build desktop empacota tudo no Electron para Windows, Linux e macOS.
A modularidade é interessante. Muitos utilitários são separados em pacotes NPM individuais. Por exemplo, se você precisa de um pipeline para exportação agendada de dados CSV, scripts Node.js podem rodar autonomamente em um servidor sem uma interface gráfica.
Além disso, um sistema de plugins é implementado. Escrevendo um pequeno módulo em TypeScript ou JavaScript, você pode plugar um driver personalizado ou adicionar um parser para um formato de arquivo raro.
Início rápido
Se você quer testar o cliente sem instalá-lo na sua máquina, a forma mais fácil é subir a versão web no Docker:
docker run -it --name dbgate-instance --restart always -p 3000:3000 dbgate/dbgate
Depois disso, abra http://localhost:3000 no seu navegador e conecte a bancos de dados locais ou remotos.
Para quem quer compilar o projeto localmente e mergulhar no código-fonte:
git clone https://github.com/dbgate/dbgate.git
cd dbgate
yarn
yarn start
O comando vai iniciar o backend na porta 3000 e a interface web na porta 5001.
Casos de uso
Na prática, o DbGate cobre excelentemente duas tarefas:
- Ferramenta pessoal de desenvolvedor. Substitui a combinação de DBeaver, RedisInsight e MongoDB Compass sem devorar gigabytes de RAM na inicialização.
- Dashboard interno de equipe em um servidor. Subindo a imagem Docker dentro de uma rede fechada, você dá a analistas e desenvolvedores acesso a bancos de dados através de uma interface web unificada sem que cada pessoa precise configurar túneis SSH e utilitários locais.
Para quem é
Se você está cansado de tempos de inicialização lentos de clientes Java pesados ou alternar entre programas separados para Redis e PostgreSQL, o DbGate definitivamente vale uma olhada. O projeto é ativamente desenvolvido, distribuído sob licença livre e disponível nas variantes desktop e servidor.
Projetos relacionados