MariaDB o MySQL: quale sistema di gestione di database è più all’avanguardia? Sebbene inizialmente, l’obiettivo principale di MariaDB fosse lo sviluppo di un sostituto drop-in con standard elevati per la community open source, ora i due progetti stanno perseguendo obiettivi di sviluppo molto diversi. Scopri quali sono nel nostro articolo.

Managed Database Services
Concentrati sul tuo progetto, noi pensiamo al resto
  • Partner IONOS Cloud
  • Soluzioni flessibili e su misura
  • Data center situati in Europa

MariaDB e MySQL: le caratteristiche principali a confronto

MySQL è un collaudato sistema di gestione di database, disponibile agli utenti come software open source e che può essere integrato con numerose estensioni aziendali. Il team di sviluppo MariaDB, guidato da Michael Widenius, ha adottato il meglio del core software MySQL e l’ha ampliato con numerose funzionalità. La seguente tabella mostra per chi conviene passare da MySQL a MariaDB, mettendo a confronto le caratteristiche principali di entrambi i DBMS.

Caratteristica MySQL 8.0 MariaDB 11
Anno di rilascio 1995 2009
Sviluppatore Oracle MariaDB Corporation/Foundation
Licenza GPL + proprietaria GPL v2
Sistema operativo supportato Linux, Windows, macOS Ampio supporto di Linux
Replica GTID, master/slave GTID, Galera Cluster
Partizione MySQL Cluster Spider, Galera
Controllo basato sui ruoli Da 8.0 Da 10.0.5
Autenticazione SHA-256 ed25519
Crittografia InnoDB InnoDB, Aria, log
Firewall e mascheramento Proprietario Tramite MaxScale (BSL)
Funzioni di analisi ColumnStore
Backup Enterprise Backup MariaDB Backup (GPL)
Motori del database InnoDB, MyISAM … + ColumnStore, MyRocks, Aria …
Interfacce SQL/NoSQL Sì/Sì Sì/Sì
Connettori tra gli altri C, Java, PHP + Excel, Swift, R

Sviluppo di MySQL e MariaDB

Dietro a MariaDB e MySQL si nasconde lo sviluppatore di software finlandese 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 Microsystems.

Nel 2009 Widenius lasciò il progetto del software insieme ad altri sviluppatori e ad altre sviluppatrici di MySQL e si concentrò sullo sviluppo del fork, MariaDB. Il team di sviluppatori temeva che Oracle entrasse in conflitto di interessi se l’impresa avesse sviluppato il software open source MySQL e, al contempo, un software proprietario per database.

Fu la Monty Program AB, fondata nel 2009, a sviluppare inizialmente il fork di MySQL. Nel 2014 questa si fuse con la SkySQL, dando luogo alla MariaDB Corporation. Il progetto di community MariaDB Server è sviluppato dalla MariaDB Foundation. Questo database si concentra sullo sviluppo aperto. Si evidenziano due principi di base:

  • Il codice sorgente delle parti del programma in fase di sviluppo è disponibile tramite archivi pubblici.
  • Tutte le fasi di sviluppo sono documentate pubblicamente.

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 indipendente. Mettiamo a confronto le differenze delle versioni GA (General Availability) 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 estremamente vantaggiose e potenti core dedicati
  • Massima flessibilità senza periodo contrattuale minimo
  • Servizio di assistenza tecnica 24 ore su 24, 7 giorni su 7

Struttura del database

Lo sviluppo di MariaDB si basa sulla volontà di garantire la piena compatibilità della struttura del database e di API e file di configurazione di MySQL per consentire agli utenti un drop-in replacement. Il passaggio da MySQL a MariaDB o viceversa deve essere il più agevole possibile, come un aggiornamento tra due diverse versioni di MySQL.

Innanzitutto, entrambi i sistemi si fondano sulla medesima struttura di database. Entrambi si rifanno al modello di database relazionale. Anche per le attività di amministrazione e di backup con MariaDB, a partire dalla versione 10.5, non si utilizzano più mysqldump o mysqladmin come in MySQL, ma mariadb-dump e mariadb-admin.

Una volta al mese per ridurre al minimo i problemi di compatibilità il team di sviluppatori di MariaDB mette a confronto il codice sorgente del fork con quello MySQL. La compatibilità binaria dei due sistemi di gestione di database termina però con MySQL 8. A partire dalla versione 8.0 MySQL non è più compatibile né con le versioni più vecchie di MySQL né con MariaDB.

N.B.

MariaDB si è consolidato come sostituto totale di MySQL compatibile su base binaria. A partire dalla versione 8.0 di MySQL, tuttavia, questa compatibilità non è più possibile.

Motori del database

In futuro MariaDB punta a differenziarsi da MySQL, soprattutto in termini di flessibilità. Oltre ai motori standard supportati da MySQL, è sempre disponibile un numero crescente di motori di database alternativi per casi speciali.

N.B.

Un motore di database è un sottosistema di salvataggio che consente al sistema di gestione del database la creazione, la lettura, l’aggiornamento e la cancellazione di dati nelle tabelle del database, vedi CRUD.

La seguente tabella mostra i motori di database disponibili per MySQL 8.0.43 e MariaDB 11.8.2 (come riportato nella documentazione).

Motore del database MySQL 8.0.43 MariaDB 11.8.2 Descrizione
InnoDB/XtraDB InnoDB è lo standard per entrambi i sistemi. XtraDB è stato utilizzato in MariaDB fino alla versione 10.1
MyISAM Sistema di archiviazione obsoleto senza supporto alle transazioni
MEMORY Per tabelle temporanee in memoria con accessi rapidi
CSV Salva le tabelle in formato CSV
Archivio Comprime i dati per l’archiviazione 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/FederatedX Accesso a tabelle remote tramite rete (MariaDB: FederatedX)
ColumnStore Motore orientato alle colonne per l’analisi di grandi volumi di dati
Aria Alternativa transazionale sicura a MyISAM per tabelle temporanee
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 transazioni XA

Query di database

Nell’applicazione non ci sono distinzioni tra MySQL e MariaDB. I due DBMS puntano a una compatibilità totale con la lingua del database SQL. Gli utenti sfruttano statement SQL identici per creare, aggiornare, richiamare o cancellare voci di database.

Performance

MariaDB offre una performance migliore rispetto a MySQL? Lo sottolineano i test di benchmark come DBT-3. Tra le altre cose, il fattore decisivo è il motore di database utilizzato. Entrambe le comunità di sviluppatori mettono a disposizione sui rispettivi siti web del progetto i test di benchmark per configurazioni con diversi motori di database.

MariaDB non primeggia solo grazie all’ampia scelta di motori di database alternativi ma anche per l’efficiente ottimizzatore per le richieste SQL. A partire dalla versione 10.0.1 nell’ottimizzazione delle richieste MariaDB non punta più alle statistiche interne del rispettivo motore di database ma a statistiche di tabelle indipendenti dal motore, che vengono salvate come tabelle tradizionali nel database e consentono la registrazione di più valori per individuare un piano ideale per l’esecuzione di dichiarazioni SQL.

N.B.

Nella documentazione di MariaDB si possono trovare diverse guide per l’ottimizzazione delle prestazioni del database. Anche MySQL offre ampio materiale informativo per la messa a punto del database (è necessario un account web Oracle).

Disponibilità elevata

Sia MySQL sia MariaDB si adattano a scenari con database distribuiti. Per poter offrire agli utenti sistemi altamente disponibili con scalabilità lineare i due progetti software mettono a disposizione soluzioni cluster:

MySQL Cluster è un database in tempo reale conforme allo standard ACID con un’architettura multi-master senza un singolo punto di guasto (Single Point of Failure). Offre fino al 99,9999% di disponibilità, scalabilità orizzontale su hardware standard, sharding automatico e interfacce SQL e NoSQL.

MariaDB Galera Cluster è integrato direttamente dalla versione 10.1. È basato anche su un’architettura multi-master e utilizza esclusivamente InnoDB (o XtraDB). Per i database distribuiti viene inoltre utilizzato MaxScale. Il proxy configurabile per la distribuzione del carico offre funzioni come failover, caching, read/write-splitting e misure di protezione contro gli attacchi DoS. I plugin consentono l’adattamento e il filtraggio degli accessi al database.

N.B.

Dalla versione 2, MaxScale è soggetto alla Business Source License (BSL). Il codice sorgente è liberamente disponibile, tuttavia l’uso è limitato. Dopo tre anni, la licenza si trasforma automaticamente 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 memorizzati nel database a livello di tablespace, utilizzando il motore di database InnoDB. Non è possibile una cifratura di singole tabelle di database.

N.B.

Le tablespace (spazi delle tabelle) sono unità di memoria di motori di database relazionali come InnoDB che contengono tutti i dati del sistema di database. Ogni tablespace 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 chiaramente differenziate a partire dalla versione 10.1. Queste includono una cifratura dei data at rest sui seguenti livelli di database:

  • tablespace InnoDB
  • tabelle InnoDB
  • file di log InnoDB
  • tabelle Aria
  • file temporanei
  • dati di log binari

Con le Rolling Encryption 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 supportano il servizio di gestione chiavi Key Management Service (KMS) di Amazon Web Services (AWS) tramite plugin e connessioni SSL crittografate.

Per l’autenticazione utente anche MySQL e MariaDB si affidano a un sistema di plugin. Con sha256\_password e caching\_sha2\_password, il team di sviluppatori di MySQL mette a disposizione degli utenti due plugin di autenticazione. L’ultimo, oltre all’autenticazione standard via Secure Hash Algorithm, offre un caching sul lato server che favorisce una riautenticazione più rapida.

Anche MariaDB ha utilizzato 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’assegnazione manuale dei permessi. MySQL ha tuttavia ora introdotto questa funzionalità: a partire da MySQL 8.0.0 (2018) anche MySQL supporta i ruoli (roles) come parte delle sue funzioni di gestione utenti e permessi.

Ecosistema

Con il doppio sistema di licenze Oracle sta perseguendo una strategia open core con MySQL. Mentre il programma principale MySQL è disponibile gratuitamente come edizione per la community con codice sorgente pubblico, vari miglioramenti al sistema di gestione database sono offerti solo in combinazione con una delle edizioni commerciali. Tuttavia, grazie al forte networking con la community open source, il team di sviluppatori di MariaDB è in grado di implementare interfacce con alternative open source per la maggior parte dei prodotti propri di MySQL in MariaDB.

Funzione MySQL MariaDB Server
Monitoraggio MySQL Enterprise Monitor (proprietario) Webyog Monyog (proprietario)
Backup MySQL Enterprise Backup (proprietario) MariaDB Backup (fork di Percona XtraBackup, GPL)
Gestione SQL MySQL Workbench (GPL/proprietario) Webyog SQLyog (GPL/proprietario)
Load balancing e instradamento MySQL Router (GPL/proprietario) MariaDB MaxScale (BSL)
Firewall MySQL Enterprise Firewall (proprietario) MariaDB MaxScale (BSL)

Assistenza

Il supporto professionale è disponibile 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, aggiornamenti, consulenza tecnica e risoluzione dei problemi da remoto.

La MariaDB Corporation offre, nell’ambito di un abbonamento, supporto 24/7, aggiornamenti di sicurezza, consulenza sulle prestazioni e assistenza per la migrazione, anche per MySQL. Poiché molti sviluppatori e sviluppatrici originariamente di MySQL oggi lavorano da MariaDB, l’azienda pubblicizza la sua conoscenza particolarmente approfondita di entrambi i sistemi.

Documentazione e community

MySQL è proprietà di Oracle Corporation, che pubblica una documentazione completa di tutti i progetti MySQL open source sul sito web ufficiale di MySQL. Inoltre, la comunità degli utenti dispone delle seguenti opzioni per informarsi su MySQL:

Responsabile della documentazione di MariaDB è MariaDB Foundation, che fa affidamento sulla comunità degli utenti. Chi desidera partecipare allo sviluppo e alla documentazione dei server MariaDB o delle applicazioni open source dell’ecosistema MariaDB troverà informazioni sul sito web MariaDB Foundation.

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

MariaDB è adatto per applicazioni aziendali interne che si desidera gestire senza costi di licenza. Molte aziende utilizzano MariaDB su piattaforme web, sistemi di gestione dei contenuti o come database per reportistica e analisi. Anche nei sistemi distribuiti con molti accessi di lettura e scrittura simultanei, MariaDB dimostra le sue potenzialità. Se lavori su server Linux o desideri sostituire un’installazione MySQL, puoi trarre vantaggio dalla compatibilità e dall’espansibilità.

MySQL mette in evidenza i suoi punti di forza in sistemi di produzione grandi e stabili. Gli ambiti tipici di utilizzo sono negozi online, sistemi di prenotazione, piattaforme SaaS o applicazioni finanziarie con elevati requisiti di disponibilità e sicurezza delle transazioni. Se gestisci applicazioni nel cloud, ad esempio su AWS, Google Cloud o Oracle Cloud, spesso utilizzi direttamente MySQL. Anche per la gestione strutturata di JSON, o quando hai bisogno di supporto coperto da SLA, MySQL è la scelta giusta.

Conclusione: MariaDB vs MySQL

MySQL è un sistema di database maturo con una grande diffusione. Tuttavia, molte funzionalità enterprise come il monitoraggio, il backup e la sicurezza sono disponibili solo nelle edizioni a pagamento. MariaDB è nato come fork di MySQL e si è affermato come una valida alternativa open source. Molte distribuzioni Linux lo utilizzano per impostazione predefinita. A dimostrarne la crescente indipendenza ci sono funzionalità esclusive come MaxScale e ColumnStore.

La decisione tra MySQL e MariaDB dipende meno dal nome e più da quale sistema si adatta meglio al tuo scenario applicativo.

Hai trovato questo articolo utile?
Vai al menu principale