MySQL è un DBMS, ovvero un Data Base Management System, nato nel 1995 come software open-source, ed è una delle tecnologie più note ed efficienti al mondo.
Facciamo però un passo indietro per capire come funziona un Database Relazionale.
Cos’è un DBMS
Un DBMS è un servizio software che gestisce uno o più database (DB) accedendo alle informazioni e occupandosi delle politiche di sicurezza e gestione dei DB. I programmi quindi dialogano con il DBMS per accedere ai dati.
La maggior parte dei sistemi al giorno d’oggi funziona con DBMS relazionali ovvero RDBMS: costituiti da tabelle legate tra loro da percorsi logici. Per esempio in un e-commerce probabilmente troveremo una tabella con dei prodotti numerati ed una tabella con i nomi dei brand ed esse dialogheranno, ad un brand potrebbero poi ovviamente corrispondere più prodotti. I DB parlano tra loro attraverso il linguaggio SQL (Structured Query Language) che fornisce le indicazioni sulle operazioni da svolgere nei DB, che possono essere di lettura ma anche inserimento, modifica o cancellazione dei dati.
Cos’è MySQL
MySQL è un database relazionale open source e fino al 2010, anno di acquisizione da parte di Oracle, libero. Proprio grazie a queste sue caratteristiche è diventato una delle tecnologie più utilizzate al mondo, in continuo avanzamento e miglioramento. La tecnologia MySQL consente di raggiungere alti livelli di efficienza e si integra con i principali linguaggi di programmazione. Da MySQL sono stati sviluppati dei fork completamente open source come MariaDB e Percona Server.
Percona e MariaDB
- Percona Server: Sostituzione avanzata del drop-in per MySQL basato su motori di storage XtraDB o TokuDB con prestazioni migliorate e funzionalità aggiuntive di diagnostica e gestione.
- MariaDB: RDBMS open source compatibile con le applicazioni MySQL, potenziato con capacità di alta disponibilità, sicurezza, interoperabilità e prestazioni. Con MariaDB ColumnStore è disponibile anche un motore di storage orientato alle colonne.
MySQL, Percona e MariaDB: Le similitudini
Il modello di database primario dei software è il Relational DBMS con licenza Open source, i servizi non sono esclusivamente cloud-based e i linguaggi di programmazione sono C and C++.
Tutti i servizi prevedono: Data scheme, Typing (tipi di dati predefiniti come float o data), supporto XML, indici Secondari, ovviamente supporto SQL, Server-side scripts, Triggers, Foreign keys, Concurrency, Durability e Supporto In-Memory
Nessuno di loro espone un’API per i metodi Map/Reduce definiti dall’utente, mentre tutti e tre hanno come metodi per garantire la coerenza in un sistema distribuito: Immediate Consistency.
Il Concetto di Transazione, ovvero il supporto per garantire l’integrità dei dati dopo manipolazioni non anatomiche è: ACID (Atomicity, Consistency, Isolation, e Durability)
MySQL, Percona e MariaDB: Le differenze
Adesso vediamo le principali differenze, premettiamo già che mentre MySQL e Maria DB sono molto simili tra loro essendo MariaDB il primo fork, Percona è quello che si differenzia di più.
Il Modello Secondario
Innanzitutto abbiamo visto che se il modello primario per tutti e tre i software è il RDBMS, quello secondario è Document store orientato al documento Database key value, per quanto riguarda MySQL mentre per MariaDB sia Document store che Graph DBMS, ovvero un modello di database orientato al documento Database key value orientato alla grafica.
Sistemi Operativi
Per quanto riguarda invece i sistemi operativi del server, MySQL si appoggia su FreeBSD, Linux, OS X, Solaris, Windows. Maria DB invece su tutti questi eccetto OS X, mentre Percona invece solamente su Linux. NB. Attraverso la versione Dockerizzata possono essere utillizzati su TUTTI i sistemi operativi.
Application Programming Interface
Passando alle API e metodi di accesso tutti e tre si interfacciano con ADO.NET, JDBC, ODBC, ma solo MySQL e Percona possiedono API native.
Linguaggi di programmazione
Come linguaggi di programmazione MySQL supporta Ada, C, C#, C++, D, Delphi, Eiffell, Erlang, Go, Haskell, Java, JavaScript (Node.js), Objective-C, OCaml, Perl, PHP, Python, Ruby, Scheme, Tcl, MariaDB tutti eccetto Delphi ma in aggiunta Go, mentre Percona tutti eccetto Delphi e JavaScript (Node.js) e Go.
Metodi di partizionamento
Andiamo ora a vedere i metodi di partizionamento, ovvero i Metodi per la memorizzazione di dati diversi su nodi diversi. In MySQL troviamo Partizionamento orizzontale, sharding con MySQL Cluster o MySQL Fabric,
Mentre in MariaDB: Partizionamento orizzontale, sharding mediante spider, CONNECT o Galera.
Metodi di replica
Infine per quanto riguarda i metodi di replica, ovvero i metodi per la memorizzazione ridondante dei dati su più nodi prevedono: Replica con GTID (Global Transaction Identifier)- Replica Master Master – Replica Master Slave e Percona in aggiunta XtraDB Cluster
Conclusioni
In sostanza, MySQL è ancora oggi una delle tecnologie più utilizzate al mondo e nonostante l’acquisizione da parte di Oracle, ha continuato ad affermarsi come software indipendente che continua a essere mantenuto, sviluppato e migliorato.
MariaDB e Percona Server sono delle valide e serie alternative, sempre più utilizzate. Anche se nate come Fork e versioni free di MySQL, in futuro lo sviluppo di questi progetti software sarà sempre più orientato sulla differenziazione di funzionalità e miglioramenti, dando la possibilità a chi deve scegliere, di scegliere in merito alle proprie esigenze applicative.
E voi? Che DBMS usate?
Per informazioni più dettagliate:
MySQL: https://dev.mysql.com/doc/
MariaDB:https://mariadb.com/kb/en/documentation/
Percona: https://www.percona.com/