Si has hecho mucho con SQL, probablemente has utilizado algún tipo de IDE SQL para ayudarte a completar ese trabajo. Sí, es posible hacer todo en SQL desde la línea de comandos; pero crear o incluso mantener bases de datos y tablas de esa manera es un ejercicio de masoquismo. Hay algunos buenos IDEs comerciales como dbArtisan y SQL Server’s Management Studio, pero los IDEs es un área donde el código abierto puede hacerlo igual de bien (o en algunos casos, incluso mejor).
Esto es particularmente relevante ya que el impacto de la nube (es decir, SAAS) está empezando a sentirse en el mercado de las bases de datos comerciales. Las razones son, entre otras, que los proveedores de servicios hacen un mayor uso de las bases de datos de código abierto, además del aumento de alternativas como NoSQL. El sitio web statista sugiere que los ingresos globales de las bases de datos comerciales seguirán disminuyendo en los próximos años.
Para este artículo, los cinco clientes SQL que he elegido son Squirrel, HeidiSQL, DBeaver, Tora y OmniDB. He utilizado HeidiSQL y Squirrel durante un tiempo, así que vamos a empezar con este último.
Squirrel
Squirrel era una opción popular de cliente en el banco donde trabajaba hace cinco años, ya que preferían Java, y es en lo que está escrito. También se usaba mucho Sybase (no era precisamente la base de datos más popular), y Squirrel es uno de los pocos clientes que pueden hablar con él. (Si llevas la cuenta en casa, Sybase también fue el antecesor de SQL Server). Squirrel cumple con todas las bases de datos más importantes (Oracle, DB2, Informix, Ingres, SQL Server, SAPDB y Sybase), además de muchas más, y tiene un historial de 17 años.
Pero Squirrel fue finalmente prohibido en producción en el banco, sobre todo por su capacidad de soportar sesiones simultáneas con múltiples bases de datos. En un par de ocasiones, se quedó sin memoria, causando problemas con las bases de datos en vivo; eso le valió la tarjeta roja. Por la amplitud de la cobertura (gracias a JDBC), es muy recomendable, pero vigile el número de sesiones que ejecuta; cuanta más memoria tenga, mejor.
HeidiSQL
Apenas la mitad de la edad de Squirrel, HeidiSQL ha sido mi favorito personal durante los últimos tres años. Es más restringido en su rango de bases de datos (sólo tienes MySQL/MariaDB, SQL Server y PostgreSQL) pero para muchos, eso es suficiente. Lo he encontrado muy rápido, lo que es vital para proyectos como una tabla de 29 millones de filas; un comando SQL select count (*) contra MariaDB que se ejecuta en mi PC tarda alrededor de dos minutos.
Creo que gran parte de la velocidad se debe a que utiliza sus propios controladores y se conecta directamente, no a través de ODBC. Especialmente buenas son las funciones de importación/exportación y la importación por lotes: Puede ejecutar archivos SQL de gran tamaño (como exportaciones de copias de seguridad) directamente sin cargarlos en la ventana de consulta.
Otra buena característica: Cuando está escribiendo una consulta SQL, las columnas de la tabla actualmente seleccionada se muestran en otra ventana junto con las funciones y palabras clave de SQL, además de sus propios fragmentos. Cuando trabajas con bases de datos tanto en vivo como en desarrollo, poder mover grandes bloques de datos con facilidad es muy importante.
HeidiSQL es para Windows, pero se puede utilizar en otros lugares a través del emulador Wine en Linux y Mac (pero para ser honesto, me gustaría usar Squirrel o DBeaver).
DBeaver
DBeaver es otro cliente SQL potenciado por Java; al igual que el conector JDBC, tiene un gran conjunto de bases de datos a las que se puede conectar. Hay una versión Enterprise, que incluye soporte para bases de datos NoSQL (Cassandra, MongoDb y Redis), pero la edición comunitaria es la que he examinado.
Hay una gran lista de bases de datos para probar desde el asistente de conexión; elegí SQLite, ya que tengo una base de datos de 600 MB creada para un proyecto hace unos años. Funcionó con esa base de datos sin problemas, y me impresionó. Aunque sigo prefiriendo HeidiSQL, estaría encantado de utilizar DBeaver si surgiera la oportunidad.
Una cosa a tener en cuenta: DBeaver no instala los controladores al principio, sino que los obtiene a medida que los necesitas (esto es muy «Eclipse-like»). Eso es probablemente porque está construido sobre la plataforma Eclipse, así que si estás acostumbrado a eso, te sentirás como en casa. Ciertamente, no tuve ningún problema con él; se sentía muy ágil. La gama de formatos de exportación incluye CSV, HTML y XML, así como JSON y Markdown.
La ventaja de Java, tanto para esto como para Squirrel, es que no está restringido por la plataforma; DBeaver incluye instalaciones de Debian y RPM para Linux, así como para Windows y Mac.
Tora
Escrito en C++, elegí Tora como uno de los cinco porque soporta Oracle y tiene un depurador PL/SQL. Es multiplataforma y está probado con GCC, Clang y MSVC 2013/2015. Además de Oracle, soporta MySQL, PostgreSQL y otras bases de datos vía ODBC. Se convirtió en código abierto hace 13 años.
Como era de esperar, Tora utiliza Qt para la interfaz de usuario y es rápido, pero se siente un poco anticuado, especialmente cuando se conecta a MySQL. Si estás trabajando con Oracle, y no tienes software comercial, usa Tora; pero para MySQL/PostgreSQL, o cualquiera de HeidiSQL, Squirrel y DBeaver es probablemente mejor.
OmniDB
OmniDB es un poco diferente del resto. Está escrito en Python e instala un servidor web local y un navegador. Las bases de datos soportadas incluyen Oracle, MySQL, MariaDB y PostgreSQL. Las bases de datos SQLite, SQL Server, DB2 y Firebird no están soportadas actualmente, pero están claramente en la hoja de ruta.
No soy un fan de las interfaces gráficas de usuario web en general, pero esto se veía muy bien y funciona muy bien. HeidiSQL y DBeaver proporcionan una mejor importación/exportación, pero OmniDB está abierto a sugerencias para el desarrollo futuro. Al igual que los dos clientes Java, OmniDB es multiplataforma, y tiene el aspecto más moderno.
Conclusión
Estoy acostumbrado a HeidiSQL, pero las características de DBeaver me impresionaron. Squirrel es muy sólido y maduro. OmniDB se ve bien, aunque es un poco ligero en características por el momento; probablemente no adivinarías que usa el CMS Django. Tora es bastante bueno, pero podría hacer con una mejor conectividad.