Als je veel met SQL hebt gewerkt, heb je waarschijnlijk een of andere SQL IDE gebruikt om je te helpen dat werk te voltooien. Ja, het is mogelijk om alles in SQL vanaf de opdrachtregel te doen, maar het maken of zelfs maar onderhouden van databases en tabellen op die manier is een oefening in masochisme. Er zijn een aantal aardige commerciële IDE’s zoals dbArtisan en SQL Server’s Management Studio, maar IDE’s is een gebied waar open-source het net zo goed kan doen (of in sommige gevallen zelfs beter).
Dit is met name relevant omdat de impact van de cloud (d.w.z., SAAS) voelbaar begint te worden in de commerciële databasemarkt. Redenen hiervoor zijn onder meer dat dienstverleners meer gebruik maken van open-source databases, plus de opkomst van alternatieven zoals NoSQL. De website statista suggereert dat de wereldwijde inkomsten uit commerciële databases de komende jaren zullen blijven dalen.
Voor dit artikel heb ik vijf SQL-clients gekozen: Squirrel, HeidiSQL, DBeaver, Tora en OmniDB. Ik heb HeidiSQL en Squirrel een tijdje gebruikt, dus laten we met de laatste beginnen.
Squirrel
Squirrel was een populaire keuze als client in de bank waar ik vijf jaar geleden werkte, omdat ze de voorkeur gaven aan Java, en dat is waar het in geschreven is. Sybase werd ook veel gebruikt (het was niet bepaald de meest populaire database), en Squirrel is een van de weinige clients die daarmee kan praten. (Als je thuis de score bijhoudt, Sybase was ook de voorvader van SQL Server). Squirrel is geschikt voor alle grote databases (Oracle, DB2, Informix, Ingres, SQL Server, SAPDB en Sybase), plus nog veel meer, en heeft een staat van dienst van 17 jaar.
Maar Squirrel werd uiteindelijk verbannen in productie bij de bank, voornamelijk vanwege zijn vermogen om gelijktijdige sessies met meerdere databases te ondersteunen. Een paar keer had het te weinig geheugen, wat problemen veroorzaakte met live databases; dat leverde het de rode kaart op. Voor de breedte van de dekking (dankzij JDBC) is het zeer aan te bevelen, maar let op hoeveel sessies je draait; hoe meer geheugen je hebt, hoe beter.
HeidiSQL
Het is net iets ouder dan Squirrel, maar HeidiSQL is de afgelopen drie jaar mijn persoonlijke favoriet geweest. Het is beperkter in zijn databases (je krijgt alleen MySQL/MariaDB, SQL Server en PostgreSQL) maar voor velen is dat genoeg. Ik vond het zeer snel, wat van vitaal belang is voor projecten zoals een 29-miljoen-rows tabel; een select count (*) SQL commando tegen MariaDB die op mijn PC draait duurt ongeveer twee minuten.
Ik denk dat veel van de snelheid komt omdat het zijn eigen drivers gebruikt en direct verbinding maakt, niet via ODBC. Bijzonder goed zijn de import/export functies en de batch import: Je kunt grote SQL-bestanden (zoals back-ups) direct uitvoeren zonder ze in het queryvenster te laden.
Een andere leuke functie: Wanneer u een SQL-query aan het schrijven bent, worden de kolommen van de momenteel geselecteerde tabel in een ander venster getoond, samen met SQL-functies en trefwoorden, plus uw eigen knipsels. Wanneer je zowel met live databases als met ontwikkelingsdatabases werkt, is het gemakkelijk kunnen verplaatsen van grote blokken data erg belangrijk.
HeidiSQL is voor Windows, maar kan elders worden gebruikt via de Wine Emulator op Linux en Mac (maar om eerlijk te zijn, zou ik net zo goed Squirrel of DBeaver gebruiken).
DBeaver
DBeaver is een andere door Java aangedreven SQL client; net als de JDBC connector heeft het een grote set databases waarmee het verbinding kan maken. Er is een Enterprise-versie, met ondersteuning voor NoSQL-databases (Cassandra, MongoDb en Redis), maar ik heb de community-editie onderzocht.
Er is een grote lijst met databases die je kunt proberen via de verbindingswizard; ik koos voor SQLite, omdat ik een database van 600 MB heb die een paar jaar geleden voor een project is gemaakt. Het werkte feilloos met die database, en ik was onder de indruk. Hoewel ik nog steeds de voorkeur geef aan HeidiSQL, zou ik DBeaver graag gebruiken als de gelegenheid zich voordeed.
Eén ding om op te merken: DBeaver installeert geen drivers bij de start, maar haalt ze op als je ze nodig hebt (dit is erg “Eclipse-achtig”). Dat komt waarschijnlijk omdat het gebouwd is op het Eclipse platform, dus als je dat gewend bent, zul je je er thuis voelen. Ik had er in ieder geval geen problemen mee; het voelde erg snel aan. De export formaten omvatten CSV, HTML en XML, maar ook JSON en Markdown.
Het voordeel van Java voor zowel dit als Squirrel is dat je niet beperkt wordt door platform; DBeaver bevat zowel Debian als RPM installs voor Linux, als Windows en Mac.
Tora
Geschreven in C++, koos ik Tora als een van de vijf omdat het Oracle ondersteunt en een PL/SQL debugger heeft. Het is cross-platform en getest met GCC, Clang en MSVC 2013/2015. Naast Oracle ondersteunt het MySQL, PostgreSQL en andere databases via ODBC. Het werd 13 jaar geleden open source.
Zoals je zou verwachten, gebruikt Tora Qt voor de gebruikersinterface en is het snel, maar het voelt wel een beetje gedateerd aan, vooral bij het verbinden met MySQL. Als je met Oracle werkt, en je hebt geen commerciële software, gebruik dan Tora; maar voor MySQL/PostgreSQL, of een van HeidiSQL, Squirrel en DBeaver is het waarschijnlijk beter.
OmniDB
OmniDB is een beetje anders dan de rest. Het is geschreven in Python en installeert een lokale webserver en browser. Ondersteunde databases zijn Oracle, MySQL, MariaDB en PostgreSQL. SQLite, SQL Server, DB2 en Firebird databases worden op dit moment niet ondersteund, maar staan duidelijk op de roadmap.
Ik ben in het algemeen geen fan van web GUIs, maar dit ziet er goed uit en werkt erg goed. HeidiSQL en DBeaver bieden betere import/export, maar OmniDB staat open voor suggesties voor toekomstige ontwikkeling. Net als de twee Java clients is OmniDB cross-platform, en heeft het de modernste look and feel.
Conclusie
Ik ben gewend aan HeidiSQL, maar de mogelijkheden van DBeaver maakten indruk op me. Squirrel is erg solide en volwassen. OmniDB ziet er goed uit, hoewel de mogelijkheden op dit moment wat beperkt zijn; je zou waarschijnlijk niet raden dat het gebruik maakt van het Django CMS. Tora is vrij goed, maar zou kunnen doen met betere connectiviteit.