MariaDB o MySQL: quale sistema di gestione di database è più all’avan­guar­dia? Sebbene ini­zial­men­te, l’obiettivo prin­ci­pa­le di MariaDB fosse lo sviluppo di un sostituto drop-in con standard elevati per la community open source, ora i due progetti stanno per­se­guen­do obiettivi di sviluppo molto diversi. Scopri quali sono nel nostro articolo.

Managed Database Services
Con­cen­tra­ti sul tuo progetto, noi pensiamo al resto
  • Partner IONOS Cloud
  • Soluzioni fles­si­bi­li e su misura
  • Data center situati in Europa

MariaDB e MySQL: le ca­rat­te­ri­sti­che prin­ci­pa­li a confronto

MySQL è un col­lau­da­to sistema di gestione di database, di­spo­ni­bi­le agli utenti come software open source e che può essere integrato con numerose esten­sio­ni aziendali. Il team di sviluppo MariaDB, guidato da Michael Widenius, ha adottato il meglio del core software MySQL e l’ha ampliato con numerose fun­zio­na­li­tà. La seguente tabella mostra per chi conviene passare da MySQL a MariaDB, mettendo a confronto le ca­rat­te­ri­sti­che prin­ci­pa­li di entrambi i DBMS.

Ca­rat­te­ri­sti­ca MySQL 8.0 MariaDB 11
Anno di rilascio 1995 2009
Svi­lup­pa­to­re Oracle MariaDB Cor­po­ra­tion/Foun­da­tion
Licenza GPL + pro­prie­ta­ria GPL v2
Sistema operativo sup­por­ta­to Linux, Windows, macOS Ampio supporto di Linux
Replica GTID, master/slave GTID, Galera Cluster
Par­ti­zio­ne MySQL Cluster Spider, Galera
Controllo basato sui ruoli Da 8.0 Da 10.0.5
Au­ten­ti­ca­zio­ne SHA-256 ed25519
Crit­to­gra­fia InnoDB InnoDB, Aria, log
Firewall e ma­sche­ra­men­to Pro­prie­ta­rio Tramite MaxScale (BSL)
Funzioni di analisi Co­lumn­Sto­re
Backup En­ter­pri­se Backup MariaDB Backup (GPL)
Motori del database InnoDB, MyISAM … + Co­lumn­Sto­re, MyRocks, Aria …
In­ter­fac­ce SQL/NoSQL Sì/Sì Sì/Sì
Con­net­to­ri tra gli altri C, Java, PHP + Excel, Swift, R

Sviluppo di MySQL e MariaDB

Dietro a MariaDB e MySQL si nasconde lo svi­lup­pa­to­re di software fin­lan­de­se Michael “Monty” Widenius. Insieme agli svedesi David Axmark e Alan Larsson, Widenius fondò la società per azioni MySQL AB, che nel 1995 rilasciò la prima versione del sistema di gestione di database open source (DBMS) MySQL. Ciò culminò nel 2008 con la vendita del progetto software a Sun Mi­cro­sy­stems.

Nel 2009 Widenius lasciò il progetto del software insieme ad altri svi­lup­pa­to­ri e ad altre svi­lup­pa­tri­ci di MySQL e si concentrò sullo sviluppo del fork, MariaDB. Il team di svi­lup­pa­to­ri temeva che Oracle entrasse in conflitto di interessi se l’impresa avesse svi­lup­pa­to il software open source MySQL e, al contempo, un software pro­prie­ta­rio per database.

Fu la Monty Program AB, fondata nel 2009, a svi­lup­pa­re ini­zial­men­te il fork di MySQL. Nel 2014 questa si fuse con la SkySQL, dando luogo alla MariaDB Cor­po­ra­tion. Il progetto di community MariaDB Server è svi­lup­pa­to dalla MariaDB Foun­da­tion. Questo database si concentra sullo sviluppo aperto. Si evi­den­zia­no due principi di base:

  • Il codice sorgente delle parti del programma in fase di sviluppo è di­spo­ni­bi­le tramite archivi pubblici.
  • Tutte le fasi di sviluppo sono do­cu­men­ta­te pub­bli­ca­men­te.

Confronto tra MariaDB e MySQL

I sistemi di gestione di database MySQL e MariaDB si basano sul medesimo nucleo di software. MariaDB è un fork di MySQL 5.1 ma, nel corso del tempo, si è distinto come sistema di gestione di database in­di­pen­den­te. Mettiamo a confronto le dif­fe­ren­ze delle versioni GA (General Avai­la­bi­li­ty) attuali di MariaDB e MySQL, MySQL 8.0.43 e MariaDB 11.8.2.

Compute Engine
La soluzione IaaS ideale per i tuoi carichi di lavoro
  • vCPU estre­ma­men­te van­tag­gio­se e potenti core dedicati
  • Massima fles­si­bi­li­tà senza periodo con­trat­tua­le minimo
  • Servizio di as­si­sten­za tecnica 24 ore su 24, 7 giorni su 7

Struttura del database

Lo sviluppo di MariaDB si basa sulla volontà di garantire la piena com­pa­ti­bi­li­tà della struttura del database e di API e file di con­fi­gu­ra­zio­ne di MySQL per con­sen­ti­re agli utenti un drop-in re­pla­ce­ment. Il passaggio da MySQL a MariaDB o viceversa deve essere il più agevole possibile, come un ag­gior­na­men­to tra due diverse versioni di MySQL.

In­nan­zi­tut­to, entrambi i sistemi si fondano sulla medesima struttura di database. Entrambi si rifanno al modello di database re­la­zio­na­le. Anche per le attività di am­mi­ni­stra­zio­ne e di backup con MariaDB, a partire dalla versione 10.5, non si uti­liz­za­no più mysqldump o mysqladmin come in MySQL, ma mariadb-dump e mariadb-admin.

Una volta al mese per ridurre al minimo i problemi di com­pa­ti­bi­li­tà il team di svi­lup­pa­to­ri di MariaDB mette a confronto il codice sorgente del fork con quello MySQL. La com­pa­ti­bi­li­tà binaria dei due sistemi di gestione di database termina però con MySQL 8. A partire dalla versione 8.0 MySQL non è più com­pa­ti­bi­le né con le versioni più vecchie di MySQL né con MariaDB.

N.B.

MariaDB si è con­so­li­da­to come sostituto totale di MySQL com­pa­ti­bi­le su base binaria. A partire dalla versione 8.0 di MySQL, tuttavia, questa com­pa­ti­bi­li­tà non è più possibile.

Motori del database

In futuro MariaDB punta a dif­fe­ren­ziar­si da MySQL, so­prat­tut­to in termini di fles­si­bi­li­tà. Oltre ai motori standard sup­por­ta­ti da MySQL, è sempre di­spo­ni­bi­le un numero crescente di motori di database al­ter­na­ti­vi per casi speciali.

N.B.

Un motore di database è un sot­to­si­ste­ma di sal­va­tag­gio che consente al sistema di gestione del database la creazione, la lettura, l’ag­gior­na­men­to e la can­cel­la­zio­ne di dati nelle tabelle del database, vedi CRUD.

La seguente tabella mostra i motori di database di­spo­ni­bi­li per MySQL 8.0.43 e MariaDB 11.8.2 (come riportato nella do­cu­men­ta­zio­ne).

Motore del database MySQL 8.0.43 MariaDB 11.8.2 De­scri­zio­ne
InnoDB/XtraDB InnoDB è lo standard per entrambi i sistemi. XtraDB è stato uti­liz­za­to in MariaDB fino alla versione 10.1
MyISAM Sistema di ar­chi­via­zio­ne obsoleto senza supporto alle tran­sa­zio­ni
MEMORY Per tabelle tem­po­ra­nee in memoria con accessi rapidi
CSV Salva le tabelle in formato CSV
Archivio Comprime i dati per l’ar­chi­via­zio­ne a lungo termine
BLACKHOLE Riceve dati, ma non li memorizza; serve per il log/test
Merge Unisce più tabelle MyISAM con la stessa struttura
Federated/Fe­de­ra­te­dX Accesso a tabelle remote tramite rete (MariaDB: Fe­de­ra­te­dX)
Co­lumn­Sto­re Motore orientato alle colonne per l’analisi di grandi volumi di dati
Aria Al­ter­na­ti­va tran­sa­zio­na­le sicura a MyISAM per tabelle tem­po­ra­nee
CONNECT Accesso a fonti di dati esterne come CSV, XML, ODBC
Sequence Genera sequenze numeriche (ad esempio 1, 2, 3 …)
Spider Motore di sharding con supporto per tran­sa­zio­ni XA

Query di database

Nell’ap­pli­ca­zio­ne non ci sono di­stin­zio­ni tra MySQL e MariaDB. I due DBMS puntano a una com­pa­ti­bi­li­tà totale con la lingua del database SQL. Gli utenti sfruttano statement SQL identici per creare, ag­gior­na­re, ri­chia­ma­re o can­cel­la­re voci di database.

Per­for­man­ce

MariaDB offre una per­for­man­ce migliore rispetto a MySQL? Lo sot­to­li­nea­no i test di benchmark come DBT-3. Tra le altre cose, il fattore decisivo è il motore di database uti­liz­za­to. Entrambe le comunità di svi­lup­pa­to­ri mettono a di­spo­si­zio­ne sui ri­spet­ti­vi siti web del progetto i test di benchmark per con­fi­gu­ra­zio­ni con diversi motori di database.

MariaDB non primeggia solo grazie all’ampia scelta di motori di database al­ter­na­ti­vi ma anche per l’ef­fi­cien­te ot­ti­miz­za­to­re per le richieste SQL. A partire dalla versione 10.0.1 nell’ot­ti­miz­za­zio­ne delle richieste MariaDB non punta più alle sta­ti­sti­che interne del ri­spet­ti­vo motore di database ma a sta­ti­sti­che di tabelle in­di­pen­den­ti dal motore, che vengono salvate come tabelle tra­di­zio­na­li nel database e con­sen­to­no la re­gi­stra­zio­ne di più valori per in­di­vi­dua­re un piano ideale per l’ese­cu­zio­ne di di­chia­ra­zio­ni SQL.

N.B.

Nella do­cu­men­ta­zio­ne di MariaDB si possono trovare diverse guide per l’ot­ti­miz­za­zio­ne delle pre­sta­zio­ni del database. Anche MySQL offre ampio materiale in­for­ma­ti­vo per la messa a punto del database (è ne­ces­sa­rio un account web Oracle).

Di­spo­ni­bi­li­tà elevata

Sia MySQL sia MariaDB si adattano a scenari con database di­stri­bui­ti. Per poter offrire agli utenti sistemi altamente di­spo­ni­bi­li con sca­la­bi­li­tà lineare i due progetti software mettono a di­spo­si­zio­ne soluzioni cluster:

MySQL Cluster è un database in tempo reale conforme allo standard ACID con un’ar­chi­tet­tu­ra multi-master senza un singolo punto di guasto (Single Point of Failure). Offre fino al 99,9999% di di­spo­ni­bi­li­tà, sca­la­bi­li­tà oriz­zon­ta­le su hardware standard, sharding au­to­ma­ti­co e in­ter­fac­ce SQL e NoSQL.

MariaDB Galera Cluster è integrato di­ret­ta­men­te dalla versione 10.1. È basato anche su un’ar­chi­tet­tu­ra multi-master e utilizza esclu­si­va­men­te InnoDB (o XtraDB). Per i database di­stri­bui­ti viene inoltre uti­liz­za­to MaxScale. Il proxy con­fi­gu­ra­bi­le per la di­stri­bu­zio­ne del carico offre funzioni come failover, caching, read/write-splitting e misure di pro­te­zio­ne contro gli attacchi DoS. I plugin con­sen­to­no l’adat­ta­men­to e il fil­trag­gio degli accessi al database.

N.B.

Dalla versione 2, MaxScale è soggetto alla Business Source License (BSL). Il codice sorgente è li­be­ra­men­te di­spo­ni­bi­le, tuttavia l’uso è limitato. Dopo tre anni, la licenza si trasforma au­to­ma­ti­ca­men­te in una licenza open source simile a quella GPL.

Sicurezza

Sia MySQL che MariaDB offrono funzioni di cifratura per dati inattivi (data at rest). MySQL esegue la cifratura dei dati me­mo­riz­za­ti nel database a livello di ta­ble­spa­ce, uti­liz­zan­do il motore di database InnoDB. Non è possibile una cifratura di singole tabelle di database.

N.B.

Le ta­ble­spa­ce (spazi delle tabelle) sono unità di memoria di motori di database re­la­zio­na­li come InnoDB che con­ten­go­no tutti i dati del sistema di database. Ogni ta­ble­spa­ce contiene almeno un file di dati, un file fisico del sistema operativo di base in cui sono salvati sia le tabelle del database sia gli indici.

MariaDB, invece, offre funzioni di cifratura chia­ra­men­te dif­fe­ren­zia­te a partire dalla versione 10.1. Queste includono una cifratura dei data at rest sui seguenti livelli di database:

  • ta­ble­spa­ce InnoDB
  • tabelle InnoDB
  • file di log InnoDB
  • tabelle Aria
  • file tem­po­ra­nei
  • dati di log binari

Con le Rolling En­cryp­tion Keys MariaDB offre anche una funzione che consente di impostare una data di scadenza per la chiave di cifratura.

Entrambi i sistemi di gestione dei database sup­por­ta­no il servizio di gestione chiavi Key Ma­na­ge­ment Service (KMS) di Amazon Web Services (AWS) tramite plugin e con­nes­sio­ni SSL crit­to­gra­fa­te.

Per l’au­ten­ti­ca­zio­ne utente anche MySQL e MariaDB si affidano a un sistema di plugin. Con sha256\_password e caching\_sha2\_password, il team di svi­lup­pa­to­ri di MySQL mette a di­spo­si­zio­ne degli utenti due plugin di au­ten­ti­ca­zio­ne. L’ultimo, oltre all’au­ten­ti­ca­zio­ne standard via Secure Hash Algorithm, offre un caching sul lato server che favorisce una riau­ten­ti­ca­zio­ne più rapida.

Anche MariaDB ha uti­liz­za­to il Secure Hash Algorithm con SHA-1 fino alla versione 10.1.21. Dalla versione 10.1.22 viene usato il plugin ed25519, uno schema di firma EdDSA che SHA-2 combina a curve25519.

Il punto di forza di MariaDB nel settore della sicurezza del database è il controllo degli accessi basato sui ruoli (Role Based Access Control, RBAC), che dalla versione 10.0.5 è nativo in DMBS e facilita la gestione dei permessi di accesso riducendo gli errori nell’as­se­gna­zio­ne manuale dei permessi. MySQL ha tuttavia ora in­tro­dot­to questa fun­zio­na­li­tà: a partire da MySQL 8.0.0 (2018) anche MySQL supporta i ruoli (roles) come parte delle sue funzioni di gestione utenti e permessi.

Eco­si­ste­ma

Con il doppio sistema di licenze Oracle sta per­se­guen­do una strategia open core con MySQL. Mentre il programma prin­ci­pa­le MySQL è di­spo­ni­bi­le gra­tui­ta­men­te come edizione per la community con codice sorgente pubblico, vari mi­glio­ra­men­ti al sistema di gestione database sono offerti solo in com­bi­na­zio­ne con una delle edizioni com­mer­cia­li. Tuttavia, grazie al forte net­wor­king con la community open source, il team di svi­lup­pa­to­ri di MariaDB è in grado di im­ple­men­ta­re in­ter­fac­ce con al­ter­na­ti­ve open source per la maggior parte dei prodotti propri di MySQL in MariaDB.

Funzione MySQL MariaDB Server
Mo­ni­to­rag­gio MySQL En­ter­pri­se Monitor (pro­prie­ta­rio) Webyog Monyog (pro­prie­ta­rio)
Backup MySQL En­ter­pri­se Backup (pro­prie­ta­rio) MariaDB Backup (fork di Percona Xtra­Bac­kup, GPL)
Gestione SQL MySQL Workbench (GPL/pro­prie­ta­rio) Webyog SQLyog (GPL/pro­prie­ta­rio)
Load balancing e in­stra­da­men­to MySQL Router (GPL/pro­prie­ta­rio) MariaDB MaxScale (BSL)
Firewall MySQL En­ter­pri­se Firewall (pro­prie­ta­rio) MariaDB MaxScale (BSL)

As­si­sten­za

Il supporto pro­fes­sio­na­le è di­spo­ni­bi­le sia per MySQL che per MariaDB solo per i clienti che pagano. MySQL offre, tramite la licenza a pagamento Oracle Premier Support, supporto 24/7, patch, ag­gior­na­men­ti, con­su­len­za tecnica e ri­so­lu­zio­ne dei problemi da remoto.

La MariaDB Cor­po­ra­tion offre, nell’ambito di un ab­bo­na­men­to, supporto 24/7, ag­gior­na­men­ti di sicurezza, con­su­len­za sulle pre­sta­zio­ni e as­si­sten­za per la mi­gra­zio­ne, anche per MySQL. Poiché molti svi­lup­pa­to­ri e svi­lup­pa­tri­ci ori­gi­na­ria­men­te di MySQL oggi lavorano da MariaDB, l’azienda pub­bli­ciz­za la sua co­no­scen­za par­ti­co­lar­men­te ap­pro­fon­di­ta di entrambi i sistemi.

Do­cu­men­ta­zio­ne e community

MySQL è proprietà di Oracle Cor­po­ra­tion, che pubblica una do­cu­men­ta­zio­ne completa di tutti i progetti MySQL open source sul sito web ufficiale di MySQL. Inoltre, la comunità degli utenti dispone delle seguenti opzioni per in­for­mar­si su MySQL:

Re­spon­sa­bi­le della do­cu­men­ta­zio­ne di MariaDB è MariaDB Foun­da­tion, che fa af­fi­da­men­to sulla comunità degli utenti. Chi desidera par­te­ci­pa­re allo sviluppo e alla do­cu­men­ta­zio­ne dei server MariaDB o delle ap­pli­ca­zio­ni open source dell’eco­si­ste­ma MariaDB troverà in­for­ma­zio­ni sul sito web MariaDB Foun­da­tion.

Per quali casi d’uso si adattano MariaDB o MySQL?

MariaDB è adatto per ap­pli­ca­zio­ni aziendali interne che si desidera gestire senza costi di licenza. Molte aziende uti­liz­za­no MariaDB su piat­ta­for­me web, sistemi di gestione dei contenuti o come database per re­por­ti­sti­ca e analisi. Anche nei sistemi di­stri­bui­ti con molti accessi di lettura e scrittura si­mul­ta­nei, MariaDB dimostra le sue po­ten­zia­li­tà. Se lavori su server Linux o desideri so­sti­tui­re un’in­stal­la­zio­ne MySQL, puoi trarre vantaggio dalla com­pa­ti­bi­li­tà e dall’espan­si­bi­li­tà.

MySQL mette in evidenza i suoi punti di forza in sistemi di pro­du­zio­ne grandi e stabili. Gli ambiti tipici di utilizzo sono negozi online, sistemi di pre­no­ta­zio­ne, piat­ta­for­me SaaS o ap­pli­ca­zio­ni fi­nan­zia­rie con elevati requisiti di di­spo­ni­bi­li­tà e sicurezza delle tran­sa­zio­ni. Se gestisci ap­pli­ca­zio­ni nel cloud, ad esempio su AWS, Google Cloud o Oracle Cloud, spesso utilizzi di­ret­ta­men­te MySQL. Anche per la gestione strut­tu­ra­ta di JSON, o quando hai bisogno di supporto coperto da SLA, MySQL è la scelta giusta.

Con­clu­sio­ne: MariaDB vs MySQL

MySQL è un sistema di database maturo con una grande dif­fu­sio­ne. Tuttavia, molte fun­zio­na­li­tà en­ter­pri­se come il mo­ni­to­rag­gio, il backup e la sicurezza sono di­spo­ni­bi­li solo nelle edizioni a pagamento. MariaDB è nato come fork di MySQL e si è affermato come una valida al­ter­na­ti­va open source. Molte di­stri­bu­zio­ni Linux lo uti­liz­za­no per im­po­sta­zio­ne pre­de­fi­ni­ta. A di­mo­strar­ne la crescente in­di­pen­den­za ci sono fun­zio­na­li­tà esclusive come MaxScale e Co­lumn­Sto­re.

La decisione tra MySQL e MariaDB dipende meno dal nome e più da quale sistema si adatta meglio al tuo scenario ap­pli­ca­ti­vo.

Vai al menu prin­ci­pa­le