Un sistema di gestione di basi dati, in inglese Data base management system (Dbms) è un software che permette di creare, gestire e interrogare database, ovvero un insieme di dati organizzati secondo principi specifici.
Una definizione che racchiude in sé un intero mondo, perché i Dbms non sono tutti uguali, non seguono tutti le medesime logiche e non tutti funzionano in qualsiasi ambiente. Occorre quindi fare dei distinguo, partendo dalle macrocategorie in cui sono inseriti.
Open source o proprietari
Alcuni Dbms sono Open source, quindi prelevabili e utilizzabili gratuitamente, seppure questa è un’affermazione che merita un approfondimento. Altri Dbms sottostanno a specifiche politiche di pricing. Nella prima categoria si possono annoverare MySQL, MongoDB o Apache Cassandra mentre, tra i Dbms a pagamento, i più popolari sono Oracle e Microsoft SQL.
Tuttavia, esaurire la questione limitandosi a esaminare il costo di un software Dbms è impreciso e persino fuorviante. Innanzitutto, il costo non si limita al prezzo di acquisto ma si espande alla gestione, all’hardware necessario per permettergli di lavorare in modo confacente alle aspettative e al livello di assistenza.
Le organizzazioni che volessero fare uso della versione gratuita di un Dbms Open source, in caso di problemi, dovrebbero affidarsi alle capacità tecniche del proprio personale oppure ricorrere a quelle (pressoché sconfinate, peraltro) delle community che si occupano di mantenere il software e di trovare soluzioni ai problemi, anche a quelli meno comuni.
Non è del tutto fuori misura immaginare un contesto nel quale un’azienda confrontata con un problema a un Dbms debba rimanere ferma ore o giorni, in attesa che la community se ne faccia carico per trovare una soluzione. Nascerebbero così due problemi di diversa caratura ma di elevata gravità: il primo di natura finanziaria e il secondo di responsabilità. Per un’azienda un fermo operativo, anche parziale, rappresenta un costo e un danno di immagine e, non di meno, il personale IT che deve giustificare al management di avere smosso una community non meglio definita per risolvere un problema operativo, non farebbe una figura egregia.
Questo spiega perché esistono distribuzioni a pagamento anche dei Dbms Open. Chi paga per usarli riceve un livello di assistenza professionale 24/7. Per completezza, va segnalato che i Dbms distribuiti anche in versione gratuita, dovrebbero essere acquistati quando fungono da motore per applicazioni che vengono commercializzate, ma questa è una disquisizione che esce dal mero contesto tecnologico.
Allo stesso modo, esistono versioni dei Dbms notoriamente a pagamento che possono essere prelevate a titolo gratuito e che hanno limitazioni per quanto riguarda la grandezza dei database che possono essere creati o relative alla quantità di Ram che possono usare. Poco inclini agli ambienti di produzione, possono sposare bene intenti di prova e preproduzione di piccoli progetti.
La scelta di un Dbms, in sintesi, non dovrebbe essere mai orientata in base al prezzo della soluzione software in sé, ma considerando il costo totale che questa comporta, prendendo in esame diversi parametri, tra i quali la velocità di esecuzione dei compiti che il Dbms deve assolvere e il costo di un eventuale fermo dovuto a problemi di tecnologica eziologia.
Quelle relative alle politiche di licensing non sono le uniche riflessioni che occorre fare prima di scegliere un Dbms.
Una digressione: i Big data
I Dbms sono spesso associati ai Big data. Poiché la scelta di una tecnologia database deve essere fatta partendo dai dati che si hanno a disposizione, occorre demonizzare il paradigma che collega i software per database ai Big data. I Dbms organizzano e rendono disponibili dati anche a piccole organizzazioni mentre i Big data sono tutt’altra cosa, sono moli di dati che non possono essere contenute nei più capienti hard disk che abbiamo a disposizione.
Trovare una definizione statica al concetto di Big data è proibitivo e persino insensato, perché questa varia a seconda dell’organizzazione che ne fa uso, tra aziende for profit, no-profit oppure organizzazioni e agenzie governative.
Tuttavia, cercare di inquadrare i Big data, è molto utile per capire quale Dbms scegliere. Facendo quindi uno sforzo concettuale, possiamo definirli come “grandi set di dati talmente estesi per volume, velocità e variabilità che necessitano di architetture scalabili per essere archiviati e analizzati, considerando che si tratta di dati potenzialmente molto diversi tra loro e provenienti da differenti fonti: social media, file di testo, dispositivi IoT, sensori, sistemi di pagamento, device mobili, eccetera”.
Inoltre, per scegliere il Dbms appropriato, occorre tenere conto anche dell’uso che si intende fare dei dati: un qualsiasi sistema sanitario può farne uso per la diagnosi precoce di disfunzioni e malattie, le aziende commerciali possono usarli per gestire meglio gli inventario e razionalizzare la filiera di approvvigionamento, i tutori dell’ordine possono farne uso per identificare autori di crimini e persino per prevenire delitti. Oltre ai dati in quanto tali, sono l’uso che se ne fa e l’ambiente in cui devono essere analizzati a fare la differenza.
DBMS SQL o NoSQL?
I Dbms sono tipicamente di due tipi, SQL e NoSQL. Le differenze sono molteplici e, partendo da quella più semplice, i Dbms SQL permettono di interagire con i database relazionali, mentre i NoSQL interagiscono con basi dati non relazionali. I primi salvano i dati in tabelle seguendo schemi ben precisi, mentre per quanto riguarda i database non relazionali, i dati vengono salvati in documenti e senza rispondere a regole inalienabili e senza la presenza di tabelle.
Inoltre, i database SQL risalgono agli anni Settanta e sono più consolidati rispetto a quelli NoSQL che risalgono agli anni Novanta. È una annotazione prettamente statistica che non diminuisce la bontà o l’usabilità dei sistemi NoSQL ma che, tuttavia, fa parte del variegato elenco di ciò che li differenzia.
La scelta tra un Dbms Open e uno proprietario è pressoché obbligata e altrettanto si può dire della possibilità di optare per uno SQL e uno NoSQL, soprattutto passando in esame questi due punti chiave:
- scalabilità, ovvero la capacità di un sistema di essere modificabile per rispondere meglio a moli di lavoro supplementari. Per quanto riguarda i Dbms SQL si parla di scalabilità verticale (scale up) ossia la possibilità di aumentare le risorse hardware di un server deputato all’uso di un Dbms, mentre quelli NoSQL sono scalabili orizzontalmente (scale out), per esempio dividendo il lavoro su più server.
- flessibilità premia i database NoSQL che permettono di progettare e archiviare strutture di dati diverse tra loro all’interno dello stesso database mentre quelli SQL sono più rigidi.
Volendo tracciare una regola generale per la scelta di un software per database, è evidente che questa esige di partire dal tipo di dati a disposizione.
DBMS On premise o in Cloud?
Ci sono Dbms che meglio si prestano rispetto ad altri al Cloud. Tutti possono essere installati on premise, quindi su server fisici ma, anche quelli meno diffusi sulla nuvola, sono in realtà parametrizzabili ricorrendo a servizi terzi, come Microsoft Azure o AWS di Amazon.
Oggi i Dbms sono in grado di coprire qualsiasi esigenza, come dimostra la breve panoramica che segue, pensata per colmare ogni tipo di necessità.
Oracle
È la regina incontrastata del mercato Dbms ed è distribuito a pagamento, con una politica di licensing che, nella sua forma base, è collegata alla capacità dei processori dei server su cui viene installato.
Uno dei suoi punti di forza è la proprietà di essere usato virtualmente nel medesimo modo su qualsiasi sistema operativo, a partire dai client Windows, Mac o Linux fino a server e mainframe. Ciò significa che ha un elevato livello di astrazione dall’hardware e dal software su cui gira.
Oracle usa il modello di dati relazionale e, usando il linguaggio Structured Query Language (SQL) sostanzialmente facile da imparare, garantisce una buona usabilità anche agli utenti meno esperti, tant’è che un tutorial di poche pagine è sufficiente ad apprenderne le logiche di base. Non è aspetto da sottovalutare perché contribuisce a ridurre le distanze concettuali tra sviluppatori e utenti, fornendo applicazioni di qualità superiore.
Dotato di standard flessibili, di solidità e di una storia consolidata, è il Dbms più usato al mondo e questo rappresenta una garanzia per il futuro: prima che Oracle possa conoscere un periodo di crisi (eventualità molto remota) dovrebbero suonare molti campanelli d’allarme che riguardano altri Dbms meno gettonati e richiesti dal mercato.
Al di là delle installazioni on premise, Oracle mette a disposizione dei propri clienti una vasta gamma di soluzioni per l’analisi dei dati (e dei Big data) e questo contribuisce a spiegare perché, nonostante sia un software il cui prezzo d’acquisto potrebbe scoraggiare le organizzazioni meno grandi, è la soluzione più adottata su scala globale.
Va detto che dal punto di vista tecnico-amministrativo, Oracle può essere ostico nelle fasi iniziali di setup e, soprattutto negli ambienti aziendali in cui il software viene distribuito sui client è opportuno rivolgersi a un esperto.
MySQL
È uno dei mostri sacri del web, non a caso scelto da WordPress come database di riferimento. In altre parole, molti dei siti web su cui si naviga hanno un motore MySQL. Ma la sua diffusione è dovuta anche ad altre peculiarità.
È un Dbms e relazionale di tipo SQL e multipiattaforma (soddisfa anche le aziende che usano server Novell). Molto facile da installare e parametrizzare, non è nato con l’ottica di sposare i Big data ma è un problema facilmente sormontabile ricorrendo a uno dei diversi framework che conferiscono maggiore velocità nell’esecuzione delle query.
Per quanto invece riguarda l’analisi dei Big data, MySQL può non essere la strada da scegliere, fermo restando che – a livello aziendale – vale la pena ricorrere a una delle versioni distribuite a pagamento, il cui costo annuo può arrivare a 21.400 dollari (circa 20.300 euro) e questo può indirizzare all’adozione di una soluzione Cloud i cui prezzi variano a seconda dell’uso e delle specifiche hardware necessarie.
Anche in questo caso vanno fatti però calcoli di costo industriale molto precisi, giacché l’ownership cost di MySQL è tra i più bassi in assoluti.
Si tratta di un Dbms affidabile, scalabile e continuamente aggiornato, aspetto di primaria importanza sia per la correzione di bug sia per garantirne elevati standard di sicurezza.
Lo sviluppo di applicazioni trova un ambiente ideale, perché supporta molti linguaggi di programmazione, tra i quali spiccano:
- C/C++
- Delphi
- Erlang
- Go
- Java
- Lisp
- Node.js
- Perl
- PHP
- R
La versatilità di MySQL è confermata anche dal fatto che supporta 15 diversi motori di archiviazione oltre a quello di default, InnoDB.
Microsoft SQL Server
Ha una storia alle spalle lunga quasi 35 anni. La prima versione risale infatti al 1989 e, con il passare del tempo, Microsoft ha costantemente migliorato il proprio software. Oggi esiste in diverse versioni, dalla Express (gratuita ma con un limite di un GB di Ram per istanza e una dimensione del database che non può eccedere i 10 Gb) fino alla versione Enterprise, dedicata ai contesti business-critical e ambienti nei quali le performance fanno la differenza. Si integra alla perfezione nelle reti Microsoft anche se, negli anni, sono state sviluppate soluzioni in ambienti Linux pensate per non essere particolarmente esose in termini di risorse hardware.
Facile da installare e da configurare, grazie anche a un’interfaccia grafica intuitiva, conta su una documentazione tecnica online tra le più complete e accessibili, utile tra le altre cose per risolvere problemi in-house, quindi senza dovere fare ricorso a specialisti o community esterni.
Usa il linguaggio Transact-SQL (chiamato anche T-SQL), sviluppato da Microsoft partendo dal classico SQL, semplice nella sua sintassi e quindi facile da imparare. Microsoft SQL Server garantisce scalabilità, affidabilità e sicurezza e – proprio perché pensato per le grandi organizzazioni – è indicato per gestire enormi moli di dati e integrarli nelle applicazioni aziendali. Non di meno ha a disposizione servizi cognitivi per sfruttare l’Intelligenza digitale (AI) grazie alla facilità di integrazione con Azure AI, un insieme di servizi pensati per sviluppatori e Data scientist.
La questione licenze è più articolata, con prezzi che variano secondo logiche diverse, tra le quali le CAL (destinato a chi accede ai database da un numero definito di client) e le Core, pensate per quei contesti in cui è impossibile contare gli accessi ai database.
PostgreSQL
È un sistema Open source multipiattaforma di gestione di database relazionali a oggetti. È di tipo SQL e, dalla versione 9.3, contempla anche la modalità NoSQL, ed è considerato un prodotto molto affidabile.
Essendo Open, è supportato da una comunità che si adopera per migliorarlo e correggere bug, ha dalla sua parte la scalabilità e le capacità di replica che permette di scrivere dati in un nodo primario e, parallelamente, in uno secondario.
Tra i linguaggi di programmazione più noti che supporta figurano:
- C/ C++
- Delphi
- Erlang
- Go
- Java
- Javascript
- Lisp
- .NET
- Python
- R
- Tcl
PostreSQL è tra i database più usati, alle spalle di Oracle, MySQL e Microsoft SQL Server e, anche in virtù del fatto che è multipiattaforma, trova applicazione in ambiti industriali e scientifici. Ambienti nei quali si generano normalmente terabyte di dati che, grazie alle capacità analitiche, PostgreSQL riesce a elaborare senza particolari patemi.
Trova spazio anche nelle tecnologie web, perché funziona in molti framework quali Django (Python) o Hibernate (Java). A decretarne il successo, in questo caso, sono le capacità di replica e scalabilità che permettono di rendere accessibili database fisicamente installati su più server.
Una delle sue peculiarità è la velocità, tant’è che nel confronto con MySQL, PostgreSQL si aggiudica un certo vantaggio nelle interrogazioni (query) complicate e nelle attività di lettura e scrittura, mentre MySQL impera nel caso di operazioni di sola lettura. Ancora una volta, la scelta del Dbms dipende dalla natura dei dati e dallo scopo a cui questi sono destinati.
IBMD B2
È una soluzione trasversale multipiattaforma, disponibile per z/OS, Linux, Unix, Windows e MacOS, accompagnata da una logica commerciale interessante. Esiste una versione gratuita, chiamata DB2 Community Edition che mette a disposizione tutte le funzioni tranne le repliche SQL e il disaster recovery, limitando però l’uso dell’hardware a 4 core e a 16 Gb di Ram.
La funzionalità In-Memory permette di integrare tabelle e viste Oracle, MySQL, Postgre SQL e oggetti Apache Hive e Cloudera. È di tipo SQL ma ha un supporto Json e, oltre alle istallazioni on premise esiste anche una versione Cloud.
Trova ambito di applicazione in diversi contesti aziendali, non va dimenticato che è nato per lavorare sui mainframe, macchine forse poco elastiche ma instancabili, capaci di lavorare per anni senza dare il benché minimo problema. Col passare degli anni è sempre più votato all’AI e al Machine learning, ma è un’ottima soluzione anche per il data warehousing propriamente detto.
MongoDB
Si tratta di un Dbms non relazionale che usa documenti in stile Json in luogo delle canoniche tabelle. Tipicamente basato su uno schema dinamico chiamato BSON (Binary JSON), rende l’integrazione di dati più elastica e quindi veloce. È il Dbms NoSQL più popolare ed è distribuito sia in versione gratuita sia in una formula commerciale.
Lo sharding è una tecnica per scalare orizzontalmente, affinché i dati possano essere distribuiti su più nodi. Di fatto si può creare un cluster di database, ossia database distribuiti su più server affinché si possano aumentare sia le capacità di storage sia le prestazioni in termini di tempi di risposta.
Il bilanciamento dei dati è una delle caratteristiche che distinguono MongoDB insieme a GridFS, di fatto un file system che consente replica e bilanciamento di file anche di grandi dimensioni. Al posto di memorizzare file in un solo documento, GridFS divide il file in parti più piccole (dette chunks) e le memorizza in documenti separati.
Inoltre, MongoDB ha diversi software development kit ufficiali (SDK, pacchetti per lo sviluppo di applicazioni) che coprono i più diffusi linguaggi di programmazione ed è un altro dei vantaggi che lo hanno reso diffuso.
MariaDB
È un fork di MySQL, ossia un progetto che affonda le proprie radici in MySQL. I due software condividono il medesimo padre putativo, ossia Michael Widenius. MariaDB si è guadagnato spazio grazie alla sua capacità analitica e transazionale, oltre all’agilità rappresentata dal thread polling, tecnologia che non apre un thread separato per ogni utente connesso a un database ma un insieme di thread il cui scopo è rendere più snelle le operazioni. Oggi è usato da Nasdaq e da diversi istituti bancari come DBS Bank e Deutsche Bank.
Widenius è partito avvantaggiato, potendo contare sull’esperienza fatta con MySQL e riversandola in MariaDB, oggi più veloce per quanto riguarda le interrogazioni ai database e le loro repliche, ossia la copia in ubicazioni diverse di dati e database. Questo fa di MariaDB un’ottima soluzione per chi necessita un database relazionale ad alte prestazioni di esecuzione.
I prezzi variano a seconda della versione scelta, esiste chiaramente anche una versione completamente gratuita, così come esistono diverse opzioni in Cloud.
Cassandra
Soluzione Open source e NoSQL, ed è strumento su cui fanno affidamento tanto Facebook quanto Twitter, proprio perché votato alla gestione dei Big data dislocati su diversi server, ossia quei nodi di un cluster che garantiscono l’assenza di single point of failure, dando continuità all’operatività proprio perché rendono remoti gli effetti dei fermi macchina.
I dati vengono replicati automaticamente su diversi nodi, questa è una caratteristica non esclusiva di Cassandra ma indubbiamente utile quando si lavora con quantità tali di dati capaci di richiedere uno sforzo organizzativo nel disegnare i circuiti lungo i quali spostare e replicare dati.
In virtù della clusterizzazione e della coerenza (tunable consistency) la lettura e scrittura di dati diventa tanto più veloce ed elastica proporzionalmente al numero di server coinvolti nelle transazioni e nella loro elaborazione.
Cassandra unisce velocità, affidabilità e scalabilità. Sviluppato da Apache, può essere installato anche su macchine con a bordo Windows e, benché gratuito, può essere acquistato da fornitori terzi che lo rendono disponibile in Cloud, seguendo politiche di prezzo collegate all’uso e all’hardware dei server dedicati.