Sviluppo software

Perché Microsoft SQL Server non è la scelta migliore come Relational Database Management System (RDBMS)?

Dalla loro introduzione negli anni 80 i database relazionali RDBMS sono diventati la tipologia di database standard in molti campi dell'industria. Come suggerisce il nome, questi sistemi sono basati sul modello relazionale che organizza i dati in gruppi di tabelle chiamate relazioni.

In questo articolo vogliamo spiegare perché, secondo noi, Microsoft SQL Server non è il database relazionale migliore da utilizzare in una nuova applicazione web o in un nuovo software gestionale. Per farlo, nel seguito di questo articolo, confronteremo Microsoft SQL Server con il database MySQL (e la sua evoluzione MariaDB) che secondo noi è la scelta migliore.

Su internet si trovano vari articoli che confrontano i due RDBMS, ma sono perlopiù datati, con informazioni non più aggiornate, spesso di parte e di carattere promozionale. In questo articolo cercheremo di presentare al lettore un confronto bilanciato, riportando il più possibile dati oggettivi e misurabili.


Partiamo con una panoramica dei due.

Panoramica Microsoft SQL Server#

Microsoft SQL Server è un database relazionale proprietario sviluppato da Microsoft. La prima versione di SQL Server è stata rilasciata nel 1989 ed era basata integralmente sul codice sorgente venduto da Sybase SQL Server a Microsoft, infatti SQL Server 1.0 per OS/2 era praticamente identico a Sybase SQL Server 3.0 per Unix. Da allora lo sviluppo di SQL Server è stato portato avanti da Microsoft.

Panoramica MySQL/MariaDB#

MySQL (o Oracle MySQL) è anch'esso un database relazionale, ma open source. La prima versione di MySQL è stata rilasciata nel 1995 dall'azienda MySQL AB . Nel 2008 MySQL AB è stata acquisita da Sun Microsystems che a sua volta è stata incorporata nel 2009 in Oracle Corporation . Quindi in definitiva MySQL è entrato a far parte delle soluzioni di database offerte dalla Oracle.

Parallelamente lo sviluppatore originario di MySQL e molti altri sviluppatori ex Sun Microsystems, preoccupati dall'acquisizione di Oracle, sono fuoriusciti nel 2009 e hanno fondato il fork MariaDB (sponsorizzato da IBM, Booking.com, Alibaba, Microsoft).

In realtà nel frattempo i due progetti hanno proceduto parallelamente (essendo entrambi Open Source) anche se a partire dal 2014 molte distribuzioni Linux sono passate a MariaDB, prima tra tutte Red Hat (società del gruppo IBM).

MariaDB è compatibile con MySQL e può sostituirlo così com'è (drop-in replacement ) anche per questo i nomi dei due DB sono usati spesso in modo intercambiabile.

Interoperabilità e Piattaforme Supportate#

In pochi sanno che Microsoft SQL Server non è l'unico database di livello enterprise per un S.O. Windows, infatti anche MySQL contrariamente a quello che si potrebbe pensare è perfettamente compatibile con Windows e anzi, stando alle statistiche dei download dal sito di MySQL, la versione più scaricata è proprio quella per Windows. Sicuramente ciò è in parte dovuto al fatto che gli ambienti di test e di sviluppo sono quasi sempre Windows, ma comunque l'uso conferma il pieno supporto ai sistemi operativi Microsoft.

(Fonte: statistiche di download da aprile 2008 ad aprile 2009 )

MySQL, inoltre, supporta molti altri sistemi operativi tra cui Linux.

Diversamente, invece, Microsoft SQL Server supporta unicamente i S.O. Microsoft, con una predilezione per i S.O. Windows Server.

A partire dalla versione 2017 anche Microsoft SQL Server è disponibile per Linux (Microsoft ha infatti dovuto fare un passo indietro e supportare anche Linux, vista la supremazia di Linux nell'ambito dei S.O. per server). C'è da dire però che ad oggi i principali fornitori di soluzioni Cloud prevedono Microsoft SQL Server solo in accoppiata con S.O. Microsoft.

A livello invece di linguaggi di programmazione e ambiente di sviluppo entrambi favoriscono l'interoperabilità. Ad esempio MySQL (oltre ai linguaggi come PHP, Python, ecc.) supporta pienamente l'ambiente di sviluppo .NET di Microsoft attraverso il driver ADO.NET. Similmente Microsoft SQL Server è pienamente supportato in linguaggi come ad esempio PHP ( PDO SQL Server o MSSQL ) e Python ( pymssql o adodbapi ).

Scalabilità#

La scalabilità è la proprietà di un sistema di crescere al crescere delle necessità e delle disponibilità. Un esempio di applicazioni web che nel tempo sono cresciute enormemente sono Facebook, Twitter, Linkedin, ecc.

In modo teorico è difficile misurare la capacità di un sistema di scalare, è molto più facile verificarlo in modo empirico. Per questo motivo è rilevante sapere quali database vengono utilizzati da siti web che immagazzinano grandi quantità di dati.

La tabella seguente è abbastanza autoesplicativa (fonte wikipedia ).

SitoAttivo dalServer PlatformDatabase
Google.comNovembre 1998LinuxMySQL
Facebook.comFebbraio 2004LinuxMySQL
YouTube.comFebbraio 2005LinuxMySQL
Yahoo.comAgosto 1995LinuxMySQL
MSN.com (di Microsoft)Agosto 1995WindowsSQL Server
Live.com (di Microsoft)Agosto 2008WindowsSQL Server
WikipediaGennaio 2001LinuxMySQL
Amazon.comOttobre 1995Linux & SolarisAmazon SimpleDB
WordPress.comNovembre 2005LinuxMySQL

Prestazioni e Velocità di esecuzione#

I risultati di un confronto non di parte e abbastanza recente che analizza le performance dei database più noti sono riportati nel paper A Comparative Study on the Performance of the Top DBMS Systems pubblicato sul Journal of Computer Science & Research.

Lo studio, condotto nel 2011, ha messo a confronto i 5 DB più diffusi ovvero: MS SQL Server 2008, Oracle 11g, IBM DB2, MySQL 5.5 e MS Access 2010.

Il test è stato condotto su un server con CPU Dual-Processor, Intel Xeon E5649, 6×2 Cores, 32 GB di memoria RAM e 2TB di disco. Il sistema operativo usato è stato MS Windows Server 2008, 64-bit.

Per effettuare il confronto il ricercatore ha sviluppato un'applicazione di test, scritta in C#.NET con il .NET Framework 4.0, che aveva il compito di popolare il database posto sotto test con 1'000'000 di record ed effettuare alcune query in linguaggio SQL. Le query erano di complessità crescente e l'analisi ha misurato la velocità di esecuzione, l'uso di CPU e il consumo di RAM. La struttura del database utilizzata invece è stata quella di un tipico software gestionale aziendale (Fatture, Ordini, Clienti, Movimenti di Magazzino ecc.).

Come in tutti i benchmark, qualcuno un po' pignolo potrebbe argomentare che il linguaggio .NET e il S.O. Microsoft possono aver favorito i risultati dei prodotti di casa Microsoft, oppure che le query considerate non sono state pesate per la frequenza con cui vengono utilizzate, o ancora che sono state considerate solo le query di recupero dei dati (SELECT) e non quelle di inserimento e modifica, ecc. Comunque sia i risultati alla fine mostrano che non c'è grande differenza tra le prestazioni dei vari RDBMS (ovviamente tralasciando quelle di Microsoft Access che sono evidentemente fuori gara).

Dal banchmark riportato si vede solo che MySQL è leggermente più lento di SQL Server nell'eseguire le query, ma a suo vantaggio utilizza meno risorse in termini di CPU e RAM.

Comunque in generale quello che non bisogna dimenticare è che le performance di un database dipendono molto dalla struttura di chi ha progettato la base di dati, dagli indici creati dal programmatore e da tutta una serie di dettagli che se conosciuti dal programmatore fanno la differenza. In altri termini per vincere una gara non basta avere una macchina performante, ma bisogna anche essere capaci di guidarla al meglio.

Sicurezza#

Come per tutti i prodotti software, nel tempo sono emerse ed emergeranno delle vulnerabilità sia per MySQL che per Microsoft SQL Server. Una lista di queste vulnerabilità è disponibile ai relativi siti:

Al momento di scrivere questo articolo le vulnerabilità trovate su MySQL sono minori di quelle trovate per Microsoft SQL Server e di conseguenza sembrerebbe che quest'ultimo sia più a rischio sicurezza, ma in realtà le vulnerabilità a livello di RDBMS non sono mai una grossa preoccupazione perché a livello sistemistico il Database non dovrebbe mai essere esposto ad Internet. I dati vengono letti e scritti dalla web application che è l'unico software che deve poter accedere al database. In altri termini la sicurezza di una web application non risiede nella sicurezza del DB, ma solo nel codice della web application stessa.

Tutti gli attacchi a livello SQL come ad esempio una SQL Injection sono sempre portati a termine sfruttando delle falle della web application e mai accedendo al DB direttamente. Per questo motivo la sicurezza di un RDBMS pur essendo importante è meno rilevante della sicurezza a livello applicativo.

Costi#

MySQL è un prodotto Open Source rilasciato con doppia licenza GPL e commerciale, in soldoni vuol dire che può essere utilizzato senza costi a patto di utilizzare la versione di MySQL Community Edition. Ancora meglio è possibile usare il fork MariaDB completamente open source.

Se invece si vuole usufruire del supporto di Oracle o di tool di gestione particolari, è necessario optare per la licenza commerciale. In ogni caso la versione Community Edition non ha limitazioni, inoltre è possibile partire con la versione Community Edition e passare poi in un secondo momento alle versioni commerciali. Maggiori dettagli sulle licenze sono presenti al sito dei prodotti MySQL .

Microsoft SQL Server invece è un prodotto chiuso e a pagamento. Anche per esso esistono varie versioni ad esempio la Microsoft SQL Server 2019 Standard Edition (pacchetto da 2 ccore), al momento di scrivere questo articolo, costa circa 3500€. In teoria esiste anche una versione gratuita di SQL Server che si chiama Microsoft SQL Server Express ed è una versione limitata nelle funzionalità rispetto a quella a pagamento. I limiti però sono piuttosto stringenti anche per un contesto di PMI: viene usata una sola CPU e al massimo 1 GB di RAM e il DB non deve superare i 10GB. Maggiori dettagli sulle versioni di SQL Server sono presenti alla pagina edizioni SQL Server .

Supporto e Risorse#

Entrambi i prodotti hanno una buona documentazione raggiungibile rispettivamente ai seguenti link:

Un'altra buona pratica è quella di permettere alla comunità online di commentare o fare delle aggiunte alle pagine della documentazione in modo collaborativo. Sia Microsoft che MariaDB supportano questa buona abitudine, ma di fatto la cosa funziona molto meglio sulle pagine della documentazione di MariaDB come ad esempio Compound (Composite) Indexes . Per qualche motivo sulla documentazione Microsoft è assai più difficile vedere un contributo degli utenti tra i commenti alla pagina.

Per quanto riguarda il supporto spontaneo della comunità, che poi è l'unico effettivo, online è possibile fare domande e ricevere risposte sui network di Stack Exchange .

Guardando le statistiche dei due prodotti, la comunità più viva è certamente quella di MySQL.

(Fonte: Q\&A MySQL vs Q\&A Sql Server )

Velocità nel Set-Up#

Installare MySQL è un'operazione veloce e abbastanza semplice da compiere. Basta copiare i file e installare il servizio di sistema, un utente di media esperienza lo può fare in pochi minuti. Abbiamo trattato questo argomento nella guida Come installare un ambiente WAMP (Windows, Apache, MySQL, PHP) sul proprio PC (aggiornamento 2014). Inoltre, senza fatica, è possibile eseguire sullo stesso server versioni diverse di MySQL, l'unico requisito è fare in modo che utilizzino porte diverse.

Lo stesso invece non si può dire per Microsoft SQL Server. Ad esempio il download di SQL Server 2008 Enterprise occupa circa 1.6GB, ma per installarlo è necessario prima aver installato il framework .NET il cui download occupa, solo lui, più dell'installer di MySQL.

Popolarità#

Il sito DB-Engines.com ha un bel grafico che mostra la popolarità dei vari RDBMS. I primi tre al momento sono nell'ordine Oracle, MySQL e SQL Server.

Come si vede dal grafico tra i primi tre non c'è una grande diversità in termini di popolarità confermando di fatto che le differenze tra i 3 sono piuttosto piccole.

Conclusione#

In definitiva a livello tecnico sia MySQL/MariaDB che SQL Server sono essenzialmente equivalenti. Scegliere uno o l'altro non farà grande differenza da un punto di vista delle prestazioni o della scalabilità. Ciò che cambia invece è la libertà di scelta. Se si sceglie il mondo Microsoft si è vincolati alle sue licenze e ai suoi sistemi operativi. Scegliere un DB come MySQL/MariaDB invece vuol dire contenere i costi, avere maggiore libertà di manovra e la sicurezza di poter contare sull'aiuto di una community attiva e collaborativa.

Abbiamo trattato l'argomento di quali sono le tecnologie migliori secondo noi nell'articolo: Quali sono le migliori tecnologie con cui sviluppare software?.

La scelta di big player come Google, Facebook, Youtube e Wikipedia è chiara, qual è la tua?

Autore: Giovanni Chiodi
Senior software developer con più di 13 anni di esperienza nello sviluppo di soluzioni web based, enterprise, su misura. Dal 2011 socio fondatore di Garda Informatica Snc condivide questa avventura col fratello Lorenzo.

Che soluzione cerchi?#

Read more!

Newsletter

Ti è piaciuto questo articolo? Iscriviti alla newsletter

Di tanto in tanto pubblichiamo nuovi articoli come questo. Se vuoi essere avvisato lascia il tuo indirizzo e-mail di seguito.

Non invieremo mai SPAM e non condivideremo la tua e-mail con altri. Per maggiori informazioni consulta la privacy policy.

Attendere prego...

closeIcona closesearchIcona searchmore vertIcona more vertmenuIcona menushareIcona sharelinkIcona linkarrow upwardIcona arrow upward