Se você fez muito com SQL, provavelmente utilizou alguma forma do IDE SQL para ajudá-lo a completar esse trabalho. Sim, é possível fazer tudo em SQL a partir da linha de comando; mas criar ou até mesmo manter bancos de dados e tabelas dessa forma é um exercício de masoquismo. Existem algumas boas IDEs comerciais como o dbArtisan e o SQL Server’s Management Studio, mas as IDEs são uma área onde o código aberto pode fazer tão bem (ou em alguns casos, ainda melhor).
Isto é particularmente relevante uma vez que o impacto da nuvem (ou seja, SAAS) está começando a ser sentido no mercado de bancos de dados comerciais. As razões incluem provedores de serviços que fazem maior uso de bancos de dados de código aberto, mais o surgimento de alternativas como o NoSQL. O website de estatísticas sugere que a receita global de bancos de dados comerciais continuará a diminuir nos próximos anos.
Para este artigo, os cinco clientes SQL que escolhi são Squirrel, HeidiSQL, DBeaver, Tora e OmniDB. Eu tenho usado HeidiSQL e Squirrel por um tempo, então vamos começar com o último.
Squirrel
Squirrel foi uma escolha popular de cliente no banco onde eu trabalhei há cinco anos atrás, como eles preferiam Java, e é isso que está escrito. Sybase também foi usado extensivamente (não era exatamente o banco de dados mais popular), e Squirrel é um dos poucos clientes que pode falar com ele. (Se você está mantendo a pontuação em casa, Sybase também foi o ancestral do SQL Server). Squirrel marca as caixas para todos os principais bancos de dados (Oracle, DB2, Informix, Ingres, SQL Server, SAPDB e Sybase), mais muitos outros, e tem um histórico de 17 anos.
Mas Squirrel acabou sendo banido na produção do banco, principalmente por causa de sua capacidade de suportar sessões simultâneas com vários bancos de dados. Algumas vezes, ele ficou sem memória, causando problemas com bancos de dados ao vivo; isso lhe valeu o cartão vermelho. Para uma ampla cobertura (graças ao JDBC), é altamente recomendado, mas veja quantas sessões você rodar; quanto mais memória você tiver, melhor.
HeidiSQL
Só mais da metade da idade do Squirrel, HeidiSQL tem sido minha favorita pessoal nos últimos três anos. É mais restrita na sua gama de bases de dados (você só tem MySQL/MariaDB, SQL Server e PostgreSQL), mas para muitos, isso é o suficiente. Eu achei muito rápido, o que é vital para projetos como uma tabela de 29 milhões de linhas; uma contagem seleta (*) de comandos SQL contra MariaDB rodando no meu PC leva cerca de dois minutos.
Eu acho que muita da velocidade é porque ele usa seus próprios drivers e se conecta diretamente, não através de ODBC. Particularmente bom é o recurso de importação/exportação e importação de lotes: Você pode executar grandes arquivos SQL (como exportações de backup) diretamente sem carregá-los na janela de consulta.
Outra funcionalidade agradável: Quando você está escrevendo uma consulta SQL, as colunas da tabela atualmente selecionada são mostradas em outra janela junto com as funções e palavras-chave SQL, além dos seus próprios trechos. Quando você está trabalhando com bancos de dados ao vivo e em desenvolvimento, ser capaz de mover grandes blocos de dados facilmente é muito importante.
HeidiSQL é para Windows mas pode ser usado em outro lugar através do Emulador Wine no Linux e Mac (mas para ser honesto, eu usaria o Squirrel ou DBeaver).
DBeaver
DBeaver é outro cliente SQL alimentado por Java; como o conector JDBC, ele tem um grande conjunto de bancos de dados aos quais pode se conectar. Existe uma versão Enterprise, que inclui suporte a bancos de dados NoSQL (Cassandra, MongoDb e Redis), mas a edição Community é a que eu examinei.
Existe uma grande lista de bancos de dados para tentar a partir do assistente de conexão; eu escolhi SQLite, pois tenho um banco de dados de 600 MB criado para um projeto alguns anos atrás. Ele funcionou com esse banco de dados sem falhas, e fiquei impressionado. Embora eu ainda prefira o HeidiSQL, eu ficaria muito feliz em usar o DBeaver se a oportunidade surgisse.
Uma coisa a notar: o DBeaver não instala drivers no início, mas vai buscá-los conforme você precisa (isto é muito “tipo Eclipse”). Isso é provavelmente porque é construído na plataforma Eclipse, então se você está acostumado a isso, você se sentirá bem em casa. Certamente eu não tive problemas com isso; foi muito rápido. A gama de formatos de exportação inclui CSV, HTML e XML, assim como JSON e Markdown.
A vantagem do Java tanto para isto como para o Squirrel é que não está restrito por plataforma; o DBeaver inclui instalações Debian e RPM para Linux, assim como Windows e Mac.
Tora
Escrito em C++, escolhi a Tora como uma das cinco porque suporta Oracle e tem um depurador PL/SQL. É multi-plataforma e testado com GCC, Clang e MSVC 2013/2015. Para além da Oracle, suporta MySQL, PostgreSQL e outras bases de dados via ODBC. Tornou-se código aberto há 13 anos atrás.
Como seria de esperar, a Tora usa Qt para a interface do utilizador e é rápido, mas parece um pouco datado, especialmente quando se liga ao MySQL. Se você está trabalhando com Oracle, e você não tem software comercial, use Tora; mas para MySQL/PostgreSQL, ou qualquer um de HeidiSQL, Squirrel e DBeaver é provavelmente melhor.
OmniDB
OmniDB é um pouco diferente do resto. Está escrito em Python e instala um webserver local e um browser. As bases de dados suportadas incluem Oracle, MySQL, MariaDB, e PostgreSQL. Os bancos de dados SQLite, SQL Server, DB2 e Firebird não são suportados atualmente, mas estão claramente no roadmap.
Não sou um fã de GUIs web em geral, mas isto parece ótimo e funciona muito bem. HeidiSQL e DBeaver fornecem melhor importação/exportação, mas OmniDB está aberto a sugestões para desenvolvimento futuro. Assim como os dois clientes Java, o OmniDB é multi-plataforma, e tem a aparência mais moderna.
Conclusion
Eu estou acostumado ao HeidiSQL, mas os recursos do DBeaver me impressionaram. O esquilo é muito sólido e maduro. O OmniDB parece legal, embora seja um pouco leve em recursos no momento; você provavelmente não adivinharia que ele usa o CMS do Django. Tora é muito bom, mas poderia fazer com melhor conectividade.