Indice dei contenuti dell'articolo:
Nell’era digitale in cui viviamo, la velocità e la reattività sono diventate componenti fondamentali per il successo di qualsiasi progetto online. Che si tratti di un sito web istituzionale, un e-commerce o una piattaforma di contenuti, la performance è spesso la chiave per distinguersi dalla concorrenza e fornire un’esperienza utente superiore. Questo è particolarmente vero per i CMS (Content Management System) come WordPress, Joomla e Drupal, nonché per piattaforme e-commerce come WooCommerce, Magento e Prestashop, che richiedono un database robusto e veloce per gestire grandi volumi di dati e transazioni in tempo reale.
La scelta del database giusto può essere la differenza tra il successo e il fallimento di un’operazione online. Oltre a garantire prestazioni elevate, è fondamentale considerare anche l’efficienza in termini di costi, soprattutto per le startup e le piccole imprese che hanno budget limitati. D’altra parte, le grandi imprese cercano soluzioni scalabili che possano crescere insieme a loro, senza compromettere la velocità o la sicurezza.
In questo articolo, proponiamo un’analisi dettagliata e comparativa di tre sistemi di gestione di database relazionali (RDBMS) comunemente utilizzati: MySQL, MariaDB e Amazon Aurora. L’obiettivo è fornire un quadro chiaro delle loro prestazioni, capacità e efficienza economica. Questo vi permetterà di prendere una decisione più informata, adattando la soluzione scelta alle specifiche esigenze del vostro progetto.
Attraverso una serie di test, analizzeremo vari aspetti che includono la velocità di elaborazione, la scalabilità e, naturalmente, il costo. Tali fattori saranno fondamentali per determinare quale sistema di database è il più adatto per supportare un’applicazione web ad alte prestazioni, come potrebbe essere richiesto da un sito WordPress ad alto traffico o da una complessa applicazione web.
I contendenti
MySQL: Il Pioniere che ha Standardizzato i Database
MySQL è uno dei sistemi di gestione di database relazionali più antichi e diffusi nel mondo del web. Inizialmente sviluppato da MySQL AB nel 1995, il software è stato sottoposto a numerose evoluzioni nel corso degli anni. Una delle svolte più significative è stata la sua acquisizione da parte di Sun Microsystems nel 2008 e successivamente da Oracle nel 2010. Se da un lato queste acquisizioni hanno portato ad avanzamenti tecnologici e a una maggiore integrazione con altri prodotti Oracle, dall’altro hanno sollevato diverse questioni. Critiche si sono concentrate, ad esempio, sulla chiusura del codice e sul licenziamento, che hanno eroso la natura open source del progetto. Nonostante ciò, MySQL continua a essere un pilastro nel mondo dei database, utilizzato da giganti del web come Facebook e YouTube.
MariaDB: La Rivoluzione Ideologica
MariaDB è stato concepito come un fork di MySQL nel 2009, principalmente come reazione alle politiche commerciali e di licenza adottate da Oracle. Essenzialmente, rappresenta una sorta di evoluzione “ideologica” del progetto originale, con un focus su un ambiente di sviluppo più aperto e comunitario. MariaDB introduce anche una serie di migliorie tecniche rispetto a MySQL, tra cui una maggiore efficienza e funzioni aggiuntive. Questi vantaggi hanno contribuito a renderlo una scelta sempre più popolare tra gli sviluppatori che cercano un’alternativa solida a MySQL, senza compromettere la compatibilità.
Aurora AWS: La Forza del Cloud al Servizio dei Database
Amazon Aurora è un servizio di database relazionale gestito che offre compatibilità sia con MySQL che con PostgreSQL. Questo motore di database unisce la velocità e la robustezza tipiche dei sistemi commerciali ad alte prestazioni con la flessibilità e l’accessibilità dei database open source. In pratica, tutto il codice, gli strumenti e le applicazioni che stai già utilizzando con MySQL o PostgreSQL possono essere facilmente integrati con Aurora. In alcuni casi, Aurora può fornire un throughput che è fino a cinque volte superiore rispetto a MySQL e tre volte superiore rispetto a PostgreSQL, senza richiedere sostanziali modifiche alle applicazioni esistenti.
Oltre a queste caratteristiche, Aurora si distingue per il suo sistema di storage ad alte prestazioni, ottimizzato per lavorare in sinergia con i suoi motori di database. Questo storage distribuito e veloce è progettato per adattarsi automaticamente alle tue esigenze di scalabilità, con un volume del cluster che può estendersi fino a 128 tebibytes (TiB). Aurora automatizza e standardizza anche le procedure di clustering e replicazione dei database, operazioni che di solito richiedono un notevole sforzo in termini di configurazione e gestione.
Infine, è importante sottolineare che Amazon Aurora è un componente del più ampio servizio Amazon Relational Database Service (Amazon RDS). Amazon RDS è una piattaforma web che facilita la creazione, la manutenzione e lo scaling di database relazionali nel contesto del cloud computing.
Tuttavia, è importante notare che questi benefici vengono con un prezzo. Aurora può essere una soluzione costosa, soprattutto per le aziende più piccole o per progetti con budget limitati, rendendo il fattore costo un elemento decisivo nella scelta di adottarlo o meno.
Metodologia del Test: Confronto tra MySQL, MariaDB e Aurora su un’istanza RDS t4g.medium
AWS RDS (Amazon Web Services Relational Database Service) offre la possibilità di implementare un database gestito e ottimizzato nel cloud. Gli ingegneri di AWS hanno svolto un lavoro eccellente nell’ottimizzare ciascun tipo di istanza in funzione della quantità di RAM e dei core CPU forniti. Questa pre-configurazione effettuata da un team di esperti ci permette di confrontare le prestazioni relative dei motori di database, piuttosto che la nostra capacità di ottimizzare un determinato sistema di database.
Prima Fase del Confronto
La prima parte di questo confronto prevede l’attivazione di ciascun database su un’istanza db.t4g.medium RDS e l’esecuzione di un test con HammerDB, uno strumento di benchmarking per database molto popolare. In seguito, esploreremo istanze di dimensioni minori e maggiori per vedere quale database scala meglio.
L’Infrastruttura Utilizzata
Tutti i database in questa parte del confronto sono stati eseguiti su un’istanza db.t4g.medium dotata di 2 core CPU ARM e 4 GB di RAM. Le impostazioni predefinite includevano la crittografia a riposo e nessuna funzionalità di insight sulle prestazioni o monitoraggio avanzato.
- Aurora
- Versione: Aurora MySQL 3.01.1 (Compatibile con MySQL 8.0.23)
- Configurazione: Singolo master, nessuna replica
- Costo stimato (potrebbe variare a seconda dell’uso): $100 al mese
- MySQL
- Versione: MySQL 8.0.27
- Spazio di archiviazione: 100 GB con storage gp2
- Configurazione: Nessun standby
- Costo stimato: $65,86 al mese
- MariaDB
- Versione: MariaDB 10.5.13
- Spazio di archiviazione: 100 GB con storage gp2
- Configurazione: Nessun standby
- Costo stimato: $65,86 al mese
- HammerDB
- Versione: HammerDB 4.3 Linux
- Sistema operativo: Ubuntu 20.04
- Tipo di istanza: EC2 t3.medium
- Disposizione: Nella stessa zona di disponibilità delle istanze RDS per minimizzare la latenza.
- Connessione: Attraverso VNC a un’interfaccia utente Gnome per avviare i test e acquisire screenshot.
Esecuzione del Test
Abbiamo avviato il contatore delle transazioni e dato il via ai test.
MySQL su istanza RDS t4.g medium
Fin dal primo momento, MySQL ha registrato immediatamente circa 50.000 transazioni al minuto, mantenendo questo livello per tutta la durata del test. Il report sull’utilizzo della CPU mostrato sulla dashboard di AWS ha indicato che MySQL ha utilizzato circa il 90% dei cicli CPU disponibili. Questo è un chiaro segno che il carico di lavoro è limitato dalla CPU piuttosto che dalla memoria, suggerendo che il bottleneck delle prestazioni si trova nella potenza di calcolo e non nella capacità di memoria dell’istanza.
MariaDB su istanza RDS db.t4g.medium
Il profilo ufficiale di HammerDB su Github consiglia di utilizzare il driver MySQL per eseguire i benchmark su MariaDB, nonostante esista un driver specifico per MariaDB. Quindi, manterremo inalterate tutte le impostazioni per MariaDB, ad eccezione del nuovo hostname e delle credenziali.
MariaDB dimostra subito che, con questa dimensione dell’istanza, le sue prestazioni sono superiori. Non appena avviato il test, si nota un aumento della velocità, suggerendo che MariaDB è ottimizzato in modo più efficace per istanze di questa dimensione rispetto a MySQL.
Una cosa che mi ha sorpreso è stata che la velocità ha continuato a salire. Nel corso del test, raggiungeva regolarmente quasi 80,000 transazioni al minuto! Questo suggerisce che MariaDB non solo inizia con prestazioni elevate, ma è anche capace di mantenere e incrementare questo livello di efficienza durante l’intero ciclo del test.
Aurora su istanza RDS db.t4g.medium
Eravamo molto eccitati all’idea di vedere cosa Aurora potesse fare in questo test. Amazon fa molte affermazioni sulla sua velocità; ad esempio, la pagina delle FAQ di Aurora sostiene che sia fino a cinque volte più veloce di MySQL.
Tuttavia, questo benchmark mostra che Aurora era all’incirca veloce quanto MySQL per questo specifico carico di lavoro. Nonostante le alte aspettative alimentate dalle affermazioni di Amazon, le prestazioni effettive non hanno mostrato un vantaggio significativo in termini di velocità rispetto a MySQL nel contesto di questo test.
Aurora sembrava mostrare un utilizzo della CPU leggermente inferiore rispetto agli altri.
Abbiamo anche controllato la quantità di I/O utilizzati da Aurora durante il test, poiché molte persone su Internet si lamentano del fatto che gli I/O siano inaspettatamente costosi. Il nostro test ha raggiunto il picco di 300 IOPS al secondo.
Alla fine, la fattura prevista per questa unità in esecuzione su AWS EU-WEST-2 era di circa $ 100 al mese.
Analisi dei Risultati del Benchmark delle Prestazioni
Prestazioni Misurate
- MySQL: Ha registrato 16,855 ordini elaborati al minuto e 50,945 transazioni al minuto.
- MariaDB: Con 23,347 ordini e 76,866 transazioni al minuto, ha ottenuto risultati significativamente migliori.
- Aurora: Ha totalizzato 15,781 ordini e 47,517 transazioni al minuto.
Analisi Dettagliata delle Prestazioni
MariaDB ha superato entrambi i suoi concorrenti, MySQL e Aurora, sia in termini di ordini che di transazioni elaborate al minuto. Questi dati sono particolarmente sorprendenti per Aurora, che, nonostante le affermazioni di Amazon circa le sue superiori prestazioni, non ha mostrato alcun vantaggio significativo su MySQL.
Confronto sull’Efficienza dei Costi: Ordini Elaborati per Dollaro Speso
Al fine di fornire un’analisi più completa e olistica, abbiamo valutato anche l’efficienza in termini di costi per ciascun database. Abbiamo utilizzato i dati del benchmark e i costi mensili stimati per calcolare il numero di ordini elaborati per ogni dollaro speso:
- Aurora: 6,817,435 ordini per dollaro
- MySQL: 11,052,459 ordini per dollaro
- MariaDB: 15,309,508 ordini per dollaro
In base a questo indicatore, MariaDB è risultato il database più efficiente dal punto di vista dei costi, seguito da MySQL e infine da Aurora.
Conclusione: MariaDB Come Scelta Ottimale
Se l’obiettivo è di massimizzare sia le prestazioni che l’efficienza dei costi per un sistema di database transazionale ad alte prestazioni, MariaDB appare come la scelta più vantaggiosa. Ha superato sia MySQL che Aurora in entrambi gli aspetti nel nostro test.
Mentre MySQL rimane una solida opzione per coloro che sono già ben integrati in quell’ecosistema, se l’efficienza dei costi è una preoccupazione, potrebbe essere prudente considerare un passaggio a MariaDB. Aurora, pur vantando una serie di funzionalità avanzate, non sembra giustificare il prezzo più elevato, almeno per i carichi di lavoro simili a quelli oggetto del nostro test.
In un contesto aziendale dove ogni millisecondo e ogni centesimo hanno un impatto significativo, specialmente per chi è focalizzato su web performance come nel nostro caso, è fondamentale prendere decisioni ben informate. Confidiamo che questo articolo vi fornisca gli strumenti necessari per farlo.