Hvis du har arbejdet meget med SQL, har du sikkert brugt en eller anden form for SQL IDE til at hjælpe dig med at udføre dit arbejde. Ja, det er muligt at gøre alt i SQL fra kommandolinjen; men at oprette eller endda vedligeholde databaser og tabeller på den måde er en øvelse i masochisme. Der findes nogle gode kommercielle IDE’er som f.eks. dbArtisan og SQL Servers Management Studio, men IDE’er er et område, hvor open source kan gøre det lige så godt (eller i nogle tilfælde endda bedre).
Dette er især relevant, da virkningen af cloud (dvs. SAAS) begynder at kunne mærkes på det kommercielle databasemarked. Årsagerne er bl.a., at tjenesteudbydere i højere grad anvender open source-databaser samt fremkomsten af alternativer som NoSQL. Ifølge statista-webstedet vil den globale omsætning fra kommercielle databaser fortsat falde i de kommende år.
Til denne artikel er de fem SQL-klienter, som jeg har valgt, Squirrel, HeidiSQL, DBeaver, Tora og OmniDB. Jeg har brugt HeidiSQL og Squirrel i et stykke tid, så lad os starte med sidstnævnte.
Squirrel
Squirrel var et populært valg af klient i den bank, hvor jeg arbejdede for fem år siden, da de foretrak Java, og det er det, den er skrevet i. Sybase blev også brugt i stor udstrækning (det var ikke ligefrem den mest populære database), og Squirrel er en af de få klienter, der kan tale med den. (Hvis du holder regnskab derhjemme, så var Sybase også forfaderen til SQL Server). Squirrel tæller alle de store databaser (Oracle, DB2, Informix, Ingres, SQL Server, SAPDB og Sybase) samt mange flere og har 17 års erfaring.
Men Squirrel blev efterhånden forbudt i produktionen i banken, mest på grund af dens evne til at understøtte samtidige sessioner med flere databaser. Et par gange løb den tør for hukommelse, hvilket gav problemer med live-databaser; det gav den det røde kort. Med hensyn til bred dækning (takket være JDBC) kan den varmt anbefales, men hold øje med hvor mange sessioner du kører; jo mere hukommelse du har, jo bedre.
HeidiSQL
HiidiSQL er lige over halvt så gammel som Squirrel og har været min personlige favorit i de sidste tre år. Den er mere begrænset i sit udvalg af databaser (du får kun MySQL/MariaDB, SQL Server og PostgreSQL), men for mange er det nok. Jeg har fundet den meget hurtig, hvilket er afgørende for projekter som f.eks. en tabel med 29 millioner rækker; en select count (*) SQL-kommando mod MariaDB, der kører på min pc, tager omkring to minutter.
Jeg tror, at en stor del af hastigheden skyldes, at den bruger sine egne drivere og forbinder direkte, ikke via ODBC. Særligt godt er import/eksport-funktionerne og batch-import: Du kan køre store SQL-filer (f.eks. backup-eksport) direkte uden at indlæse dem i forespørgselsvinduet.
En anden god funktion: Når du skriver en SQL-forespørgsel, vises kolonnerne i den aktuelt valgte tabel i et andet vindue sammen med SQL-funktioner og nøgleord samt dine egne snippets. Når du arbejder med både live- og udviklingsdatabaser, er det meget vigtigt at kunne flytte store blokke af data nemt.
HeidiSQL er til Windows, men kan bruges andre steder via Wine Emulator på Linux og Mac (men for at være ærlig, ville jeg lige så gerne bruge enten Squirrel eller DBeaver).
DBeaver
DBeaver er en anden Java-drevet SQL-klient; ligesom JDBC-connectoren har den et stort sæt databaser, den kan oprette forbindelse til. Der findes en Enterprise-version, som indeholder understøttelse af NoSQL-databaser (Cassandra, MongoDb og Redis), men fællesskabsudgaven er den, jeg har undersøgt.
Der er en stor liste over databaser, som man kan prøve fra forbindelsesguiden; jeg valgte SQLite, da jeg har en database på 600 MB, der blev oprettet til et projekt for et par år siden. Den fungerede upåklageligt med den database, og jeg var imponeret. Selv om jeg stadig foretrækker HeidiSQL, ville jeg meget gerne bruge DBeaver, hvis muligheden opstod.
En ting at bemærke: DBeaver installerer ikke drivere fra starten, men henter dem efterhånden som du har brug for dem (dette er meget “Eclipse-agtigt”). Det er nok fordi det er bygget på Eclipse-platformen, så hvis du er vant til det, vil du føle dig hjemme. Jeg havde i hvert fald ingen problemer med det; det føltes meget snappy. Udvalget af eksportformater omfatter CSV, HTML og XML samt JSON og Markdown.
Førdelen ved Java for både dette og Squirrel er, at du ikke er begrænset af platformen; DBeaver indeholder både Debian- og RPM-installationer til Linux samt Windows og Mac.
Tora
Skrevet i C++, valgte jeg Tora som en af de fem, fordi det understøtter Oracle og har en PL/SQL-debugger. Den er cross-platform og er testet med GCC, Clang og MSVC 2013/2015. Ud over Oracle understøtter den MySQL, PostgreSQL og andre databaser via ODBC. Den blev open source for 13 år siden.
Som man kan forvente, bruger Tora Qt til brugergrænsefladen og er hurtig, men den føles en smule forældet, især når der oprettes forbindelse til MySQL. Hvis du arbejder med Oracle, og du ikke har kommerciel software, så brug Tora; men til MySQL/PostgreSQL, eller noget af HeidiSQL, er Squirrel og DBeaver nok bedre.
OmniDB
OmniDB er lidt anderledes end de andre. Den er skrevet i Python og installerer en lokal webserver og browser. Databaser, der understøttes, omfatter Oracle, MySQL, MariaDB og PostgreSQL. SQLite-, SQL Server-, DB2- og Firebird-databaser understøttes ikke i øjeblikket, men er tydeligvis på køreplanen.
Jeg er generelt ikke fan af web-GUI’er, men dette så godt ud og fungerer meget godt. HeidiSQL og DBeaver giver bedre import/eksport, men OmniDB er åben over for forslag til fremtidig udvikling. Ligesom de to Java-klienter er OmniDB cross-platform, og har det mest moderne look and feel.
Konklusion
Jeg er vant til HeidiSQL, men DBeavers funktioner imponerede mig. Squirrel er meget solid og moden. OmniDB ser pæn ud, selvom den er lidt let i funktioner i øjeblikket; du ville nok ikke gætte på, at den bruger Django CMS’et. Tora er ret godt, men kunne godt bruge bedre tilslutningsmuligheder.