Wenn Sie viel mit SQL gearbeitet haben, haben Sie wahrscheinlich irgendeine Form von SQL-IDE verwendet, um diese Arbeit zu erledigen. Ja, es ist möglich, alles in SQL von der Befehlszeile aus zu erledigen, aber die Erstellung oder sogar Pflege von Datenbanken und Tabellen auf diese Weise ist eine Übung in Masochismus. Es gibt einige gute kommerzielle IDEs wie dbArtisan und SQL Server’s Management Studio, aber IDEs sind ein Bereich, in dem Open-Source genauso gut (oder in einigen Fällen sogar besser) funktioniert.
Dies ist besonders relevant, da die Auswirkungen der Cloud (d.h. SAAS) auf dem kommerziellen Datenbankmarkt allmählich spürbar werden. Gründe dafür sind u.a. die verstärkte Nutzung von Open-Source-Datenbanken durch Service-Provider sowie der Aufstieg von Alternativen wie NoSQL. Die statista-Website geht davon aus, dass die weltweiten Einnahmen aus kommerziellen Datenbanken in den kommenden Jahren weiter zurückgehen werden.
Für diesen Artikel habe ich die fünf SQL-Clients Squirrel, HeidiSQL, DBeaver, Tora und OmniDB ausgewählt. Ich benutze HeidiSQL und Squirrel schon eine Weile, also fangen wir mit letzterem an.
Squirrel
Squirrel war ein beliebter Client in der Bank, in der ich vor fünf Jahren gearbeitet habe, da sie Java bevorzugten und es in dieser Sprache geschrieben ist. Sybase wurde auch ausgiebig genutzt (es war nicht gerade die beliebteste Datenbank), und Squirrel ist einer der wenigen Clients, die mit ihr kommunizieren können. (Falls Sie zu Hause mitzählen: Sybase war auch der Vorläufer von SQL Server). Squirrel unterstützt alle wichtigen Datenbanken (Oracle, DB2, Informix, Ingres, SQL Server, SAPDB und Sybase) sowie viele weitere und kann auf eine 17-jährige Erfolgsgeschichte zurückblicken.
Aber Squirrel wurde schließlich aus der Produktion der Bank verbannt, hauptsächlich wegen seiner Fähigkeit, gleichzeitige Sitzungen mit mehreren Datenbanken zu unterstützen. Ein paar Mal ging ihm der Speicher aus, was zu Problemen mit Live-Datenbanken führte; das brachte ihm die rote Karte ein. Für die Breite der Abdeckung (dank JDBC) ist es sehr empfehlenswert, aber achten Sie darauf, wie viele Sitzungen Sie laufen lassen; je mehr Speicher Sie haben, desto besser.
HeidiSQL
Kaum mehr als halb so alt wie Squirrel, war HeidiSQL in den letzten drei Jahren mein persönlicher Favorit. Es ist in seiner Auswahl an Datenbanken eingeschränkter (man bekommt nur MySQL/MariaDB, SQL Server und PostgreSQL), aber für viele ist das genug. Ich habe festgestellt, dass es sehr schnell ist, was für Projekte wie eine 29-Millionen-Zeilen-Tabelle von entscheidender Bedeutung ist; ein SQL-Befehl select count (*) gegen MariaDB, der auf meinem PC ausgeführt wird, dauert etwa zwei Minuten.
Ich denke, ein großer Teil der Geschwindigkeit ist darauf zurückzuführen, dass es seine eigenen Treiber verwendet und sich direkt verbindet, nicht über ODBC. Besonders gut sind die Import-/Exportfunktionen und der Batch-Import: Sie können große SQL-Dateien (z. B. Sicherungsexporte) direkt ausführen, ohne sie in das Abfragefenster zu laden.
Eine weitere gute Funktion: Wenn Sie eine SQL-Abfrage schreiben, werden die Spalten der aktuell ausgewählten Tabelle in einem anderen Fenster angezeigt, zusammen mit SQL-Funktionen und Schlüsselwörtern sowie Ihren eigenen Snippets. Wenn man sowohl mit Live- als auch mit Entwicklungsdatenbanken arbeitet, ist es sehr wichtig, große Datenblöcke einfach verschieben zu können.
HeidiSQL ist für Windows, kann aber auch anderweitig über den Wine-Emulator auf Linux und Mac verwendet werden (aber um ehrlich zu sein, würde ich genauso gut entweder Squirrel oder DBeaver verwenden).
DBeaver
DBeaver ist ein weiterer Java-gestützter SQL-Client; wie der JDBC-Connector verfügt er über eine große Anzahl von Datenbanken, mit denen er sich verbinden kann. Es gibt eine Enterprise-Version, die auch NoSQL-Datenbanken unterstützt (Cassandra, MongoDb und Redis), aber die Community-Version ist diejenige, die ich untersucht habe.
Es gibt eine große Liste von Datenbanken, die man mit dem Verbindungsassistenten ausprobieren kann; ich habe SQLite gewählt, da ich eine 600 MB große Datenbank habe, die ich vor einigen Jahren für ein Projekt erstellt habe. Es funktionierte mit dieser Datenbank einwandfrei, und ich war beeindruckt. Obwohl ich immer noch HeidiSQL bevorzuge, würde ich DBeaver sehr gerne verwenden, wenn sich die Gelegenheit dazu ergeben würde.
Eine Sache ist zu beachten: DBeaver installiert keine Treiber beim Start, sondern holt sie, wenn man sie braucht (das ist sehr „Eclipse-ähnlich“). Das liegt wahrscheinlich daran, dass es auf der Eclipse-Plattform aufbaut, wenn Sie also daran gewöhnt sind, werden Sie sich sofort zu Hause fühlen. Ich hatte jedenfalls keine Probleme damit; es war sehr flott. Die Palette der Exportformate umfasst CSV, HTML und XML sowie JSON und Markdown.
Der Vorteil von Java für dieses und Squirrel ist, dass Sie nicht durch die Plattform eingeschränkt sind; DBeaver enthält sowohl Debian- und RPM-Installationen für Linux als auch für Windows und Mac.
Tora
Geschrieben in C++, habe ich Tora als eines der fünf ausgewählt, weil es Oracle unterstützt und einen PL/SQL-Debugger hat. Es ist plattformübergreifend und wurde mit GCC, Clang und MSVC 2013/2015 getestet. Zusätzlich zu Oracle unterstützt es MySQL, PostgreSQL und andere Datenbanken über ODBC. Es wurde vor 13 Jahren quelloffen.
Wie zu erwarten, verwendet Tora Qt für die Benutzeroberfläche und ist schnell, aber es fühlt sich etwas veraltet an, besonders bei der Verbindung mit MySQL. Wenn Sie mit Oracle arbeiten und keine kommerzielle Software haben, verwenden Sie Tora; aber für MySQL/PostgreSQL oder HeidiSQL sind Squirrel und DBeaver wahrscheinlich besser.
OmniDB
OmniDB ist ein wenig anders als der Rest. Es ist in Python geschrieben und installiert einen lokalen Webserver und Browser. Zu den unterstützten Datenbanken gehören Oracle, MySQL, MariaDB und PostgreSQL. Die Datenbanken SQLite, SQL Server, DB2 und Firebird werden derzeit nicht unterstützt, stehen aber eindeutig auf der Roadmap.
Ich bin generell kein Fan von Web-GUIs, aber das hier sah toll aus und funktioniert sehr gut. HeidiSQL und DBeaver bieten einen besseren Import/Export, aber OmniDB ist offen für Vorschläge für die zukünftige Entwicklung. Genau wie die beiden Java-Clients ist OmniDB plattformübergreifend und hat das modernste Erscheinungsbild.
Fazit
Ich bin an HeidiSQL gewöhnt, aber die Funktionen von DBeaver haben mich beeindruckt. Squirrel ist sehr solide und ausgereift. OmniDB sieht gut aus, auch wenn es im Moment noch ein bisschen wenig Funktionen hat; man würde wahrscheinlich nicht vermuten, dass es das Django CMS verwendet. Tora ist ziemlich gut, könnte aber eine bessere Konnektivität vertragen.