Se avete fatto molto con SQL, probabilmente avete usato qualche forma di IDE SQL per aiutarvi a completare quel lavoro. Sì, è possibile fare tutto in SQL dalla riga di comando; ma creare o anche mantenere database e tabelle in questo modo è un esercizio di masochismo. Ci sono alcuni ottimi IDE commerciali come dbArtisan e Management Studio di SQL Server, ma gli IDE sono un’area in cui l’open-source può fare altrettanto bene (o in alcuni casi, anche meglio).
Questo è particolarmente rilevante in quanto l’impatto del cloud (cioè, SAAS) sta iniziando a farsi sentire nel mercato dei database commerciali. Le ragioni includono i fornitori di servizi che fanno un uso maggiore di database open-source, più l’ascesa di alternative come il NoSQL. Il sito statista suggerisce che le entrate globali dai database commerciali continueranno a diminuire nei prossimi anni.
Per questo articolo, i cinque client SQL che ho scelto sono Squirrel, HeidiSQL, DBeaver, Tora e OmniDB. Ho usato HeidiSQL e Squirrel per un po’, quindi iniziamo con quest’ultimo.
Squirrel
Squirrel era una scelta popolare di client nella banca dove lavoravo cinque anni fa, perché preferivano Java, ed è quello in cui è scritto. Sybase era anche usato estensivamente (non era esattamente il database più popolare), e Squirrel è uno dei pochi client che può parlare con esso. (Se state tenendo i conti a casa, Sybase era anche l’antenato di SQL Server). Squirrel spunta le caselle per tutti i principali database (Oracle, DB2, Informix, Ingres, SQL Server, SAPDB e Sybase), più molti altri, e ha un track record di 17 anni.
Ma Squirrel è stato infine vietato in produzione alla banca, soprattutto a causa della sua capacità di supportare sessioni simultanee con più database. Un paio di volte, ha esaurito la memoria, causando problemi con i database live; questo gli ha fatto guadagnare il cartellino rosso. Per l’ampiezza della copertura (grazie a JDBC), è altamente raccomandato, ma attenzione a quante sessioni si eseguono; più memoria si ha, meglio è.
HeidiSQL
Poco più della metà degli anni di Squirrel, HeidiSQL è stato il mio preferito negli ultimi tre anni. È più limitato nella sua gamma di database (si ottiene solo MySQL/MariaDB, SQL Server e PostgreSQL) ma per molti, questo è sufficiente. L’ho trovato molto veloce, il che è vitale per progetti come una tabella di 29 milioni di righe; un comando SQL select count (*) contro MariaDB in esecuzione sul mio PC richiede circa due minuti.
Penso che molta della velocità sia dovuta al fatto che usa i propri driver e si collega direttamente, non attraverso ODBC. Particolarmente buone sono le funzioni di importazione/esportazione e l’importazione in batch: È possibile eseguire grandi file SQL (come le esportazioni di backup) direttamente senza caricarli nella finestra delle query.
Un’altra bella caratteristica: Quando stai scrivendo una query SQL, le colonne della tabella attualmente selezionata sono mostrate in un’altra finestra insieme alle funzioni SQL e alle parole chiave, più i tuoi snippet. Quando si lavora sia con database live che di sviluppo, essere in grado di spostare facilmente grandi blocchi di dati è molto importante.
HeidiSQL è per Windows ma può essere usato altrove tramite l’emulatore Wine su Linux e Mac (ma ad essere onesti, preferirei usare Squirrel o DBeaver).
DBeaver
DBeaver è un altro client SQL alimentato da Java; come il connettore JDBC, ha un ampio set di database a cui può connettersi. C’è una versione Enterprise, che include il supporto ai database NoSQL (Cassandra, MongoDb e Redis), ma l’edizione comunitaria è quella che ho esaminato.
C’è una grande lista di database da provare dalla procedura guidata di connessione; ho scelto SQLite, poiché ho un database da 600 MB creato per un progetto di qualche anno fa. Ha funzionato con quel database senza problemi, e sono rimasto impressionato. Anche se preferisco ancora HeidiSQL, sarei molto felice di usare DBeaver se si presentasse l’occasione.
Una cosa da notare: DBeaver non installa i driver all’inizio, ma li recupera quando ne hai bisogno (questo è molto “Eclipse-like”). Questo probabilmente perché è costruito sulla piattaforma Eclipse, quindi se siete abituati a questo, vi sentirete a casa. Certamente non ho avuto problemi con esso; sembrava molto scattante. La gamma di formati di esportazione include CSV, HTML e XML, così come JSON e Markdown.
Il vantaggio di Java sia per questo che per Squirrel è che non sei limitato dalla piattaforma; DBeaver include sia Debian che installazioni RPM per Linux, così come Windows e Mac.
Tora
Scritto in C++, ho scelto Tora come uno dei cinque perché supporta Oracle e ha un debugger PL/SQL. È multipiattaforma e testato con GCC, Clang e MSVC 2013/2015. Oltre a Oracle, supporta MySQL, PostgreSQL e altri database via ODBC. È diventato open source 13 anni fa.
Come ci si aspetterebbe, Tora usa Qt per l’interfaccia utente ed è veloce, ma sembra un po’ datato, specialmente quando si connette a MySQL. Se stai lavorando con Oracle, e non hai un software commerciale, usa Tora; ma per MySQL/PostgreSQL, o qualsiasi HeidiSQL, Squirrel e DBeaver è probabilmente meglio.
OmniDB
OmniDB è un po’ diverso dal resto. È scritto in Python e installa un webserver locale e un browser. I database supportati includono Oracle, MySQL, MariaDB e PostgreSQL. I database SQLite, SQL Server, DB2 e Firebird non sono attualmente supportati, ma sono chiaramente sulla roadmap.
Non sono un fan delle GUI web in generale, ma questo sembra grande e funziona molto bene. HeidiSQL e DBeaver forniscono una migliore importazione/esportazione, ma OmniDB è aperto a suggerimenti per lo sviluppo futuro. Proprio come i due client Java, OmniDB è multipiattaforma, e ha il look and feel più moderno.
Conclusione
Sono abituato a HeidiSQL, ma le caratteristiche di DBeaver mi hanno colpito. Squirrel è molto solido e maturo. OmniDB sembra bello, anche se è un po’ leggero nelle caratteristiche al momento; probabilmente non si direbbe che usa il CMS Django. Tora è abbastanza buono, ma potrebbe fare con una migliore connettività.