Vai a

Che cos'è MySQL?

MySQL è uno dei database relazionali open source più popolari al mondo Deve questa popolarità al suo ampio utilizzo su siti web di e-commerce, social media e applicazioni tra cui Drupal, Joomla, Magento e WordPress. È inoltre una parte essenziale dello diffusissimo stack di applicazioni web Linux-Apache-MySQL-PHP/Perl/Python (LAMP), che è alla base di un'ampia gamma di applicazioni, siti web e servizi popolari. È il secondo database più popolare al mondo, secondo la classifica di DB-Engines.

Scopri in che modo Cloud SQL per MySQL, il database relazionale gestito di Google Cloud, può aiutarti a ridurre i costi operativi e migliorare l'efficienza.

Definizione di MySQL

MySQL è un sistema di gestione di database relazionali open source. Come con altri database relazionali, MySQL archivia i dati in tabelle composte da righe e colonne. Gli utenti possono definire, manipolare, controllare ed eseguire query sui dati utilizzando il linguaggio SQL (Structured Query Language). Dato che MySQL è open source, include numerose funzionalità sviluppate in stretta collaborazione con gli utenti da oltre 25 anni.

Il software MySQL è open source

MySQL è open source, il che significa che può essere utilizzato senza costi in base ai termini della GNU General Public License. Inoltre, chiunque può modificare il codice sorgente del software per proprio uso. Ciò ha portato al fork di MySQL per creare altre varianti del database, come MariaDB e Percona Server for MySQL. MySQL è disponibile anche con altre licenze per uso commerciale.

Database relazionale

MySQL appartiene a una categoria di database chiamata sistemi di gestione di database relazionali (RDBMS). Un database relazionale è una raccolta di informazioni che organizza i dati in relazioni predefinite in cui i dati vengono archiviati in una o più tabelle (o "relazioni") di colonne e righe, semplificando la visualizzazione e la comprensione di come le diverse strutture di dati sono correlate tra loro. Le relazioni sono una connessione logica tra le diverse tabelle, stabilite sulla base dell'interazione tra queste.

Storia

MySQL è stato creato come estensione del linguaggio di programmazione commerciale, SQL, e si basava sul modello relazionale descritto nel documento di Edgar F. Codd. L'azienda svedese MySQL AB, fondata da David Axmark, Allan Larsson e Michael Widenius, sviluppò e rilasciò MySQL nel 1995. Il nome "MySQL" è una combinazione del nome della figlia di Michael Wildenius "My" e di "SQL", che fa riferimento allo Structured Query Language. Sun Microsystems ha acquisito MySQL AB nel 2008. MySQL è attualmente di proprietà di Oracle Corporation dopo l'acquisizione di Sun Microsystems nel 2010.

MySQL è stato sviluppato originariamente nei linguaggi di programmazione C e C++. Nel corso degli anni ha goduto di grande popolarità per le sue numerose versioni poiché era disponibile su molti sistemi operativi proprietari e open source. L'ultima versione del database, MySQL 8.0, è stata rilasciata nel 2018.

Fork

Il progetto MySQL è stato soggetto a fork più volte nel corso degli anni a causa di vari motivi. Alcuni di questi fork non esistono più. Tra i progetti rimanenti dopo il fork, quelli più popolari sono MariaDB e Percona Server for MySQL. MariaDB è un fork creato dai fondatori originali di MySQL per assicurarsi che rimanesse open source dopo i problemi di commercializzazione nati in seguito all'acquisizione da parte di Oracle. Percona Server for MySQL è un'altra distribuzione open source di MySQL che intende mantenere una stretta compatibilità con MySQL. Scopri di più sulle versioni di MySQL e sull'ecosistema completo riguardante MySQL.

Interfaccia utente

È possibile accedere a MySQL tramite una GUI (Graphic User Interface) o strumenti di interfaccia a riga di comando. 

GUI (Graphical User Interface)

Le GUI offrono un ambiente integrato costituito da pulsanti e widget di interazione che rendono l'esecuzione di query e lo sviluppo di applicazioni un'esperienza visiva, al contrario di quanto accade con l'utilizzo di comandi basati su testo in un'interfaccia a riga di comando. Esistono molte GUI di MySQL sviluppate sia dal progetto open source MySQL sia da integratori di terze parti. Uno dei più popolari è MySQL Workbench, che è anche open source e sviluppato da MySQL AB. Altre GUI molto note sono phpMyAdmin, uno strumento di amministrazione popolare per lo sviluppo di applicazioni web, e HeidiSQL, uno strumento di amministrazione open source utile per amministrare altri database oltre a MySQL.

Riga di comando

È possibile accedere a MySQL anche tramite strumenti a riga di comando. Questi strumenti, chiamati anche utilità MySQL, vengono forniti con la distribuzione MySQL e vengono richiamati con comandi di testo nella shell MySQL o in altri strumenti con interfaccia a riga di comando come Percona Toolkit

Deployment di MySQL

Un utente può eseguire il deployment di MySQL manualmente sulla propria macchina fisica utilizzando il codice open source oppure scaricando una delle distribuzioni in pacchetto. Nella maggior parte dei casi, MySQL viene installato su una singola istanza o macchina e la scalabilità verticale è il metodo principale per migliorare le prestazioni. Tuttavia, MySQL può essere impostato in una configurazione replicata con un nodo primario e molti nodi secondari, che possono essere promossi a nodo primario in caso di errore dell'istanza.

Un altro modo sempre più diffuso di ospitare MySQL è tramite provider di servizi cloud (CSP). Esistono un paio di modi per eseguire il deployment di MySQL nell'ambiente di un provider di servizi cloud. Il primo è installare MySQL direttamente su una macchina virtuale e gestirla autonomamente. L'altro è attraverso l'uso di offerte gestite di provider di servizi cloud che rendono l'amministrazione di MySQL molto più semplice e si occupano di molti aspetti operativi della gestione di MySQL. Il servizio gestito di Google Cloud si chiama Cloud SQL. Cloud SQL per MySQL è un servizio di database completamente gestito che consente di configurare, mantenere, gestire e amministrare i database relazionali MySQL su Google Cloud, riducendo il lavoro manuale degli amministratori di database e aiutando le organizzazioni a innovare mediante l'offerta di servizi a valore aggiunto per sicurezza, alta disponibilità e osservabilità. Scopri come configurare un'istanza Cloud SQL di MySQL da questo articolo sulle best practice per la configurazione di un'istanza Cloud SQL per MySQL. La migrazione a Cloud SQL per MySQL da MySQL on-premise o da un altro database in un provider di servizi cloud è molto semplice grazie a molti strumenti e opzioni disponibili per l'utente.

Per conoscere i vantaggi e le differenze tra l'offerta completamente gestita di Cloud SQL per MySQL e MySQL autogestito, consulta l'articolo sulle opzioni di hosting di MySQL.

Vantaggi di MySQL

MySQL è veloce, affidabile, scalabile e facile da usare. MySQL può essere eseguito comodamente su computer o laptop insieme ad altre applicazioni, server web e così via. Richiede poca o nessuna attenzione. Se si dedica un'intera macchina a MySQL, è possibile regolare le impostazioni per sfruttare tutta la memoria, la potenza della CPU e la capacità di I/O disponibili. MySQL può anche fare lo scale up a cluster di macchine collegate in rete.

L'utilizzo di MySQL per gestire e archiviare i dati offre molti altri vantaggi, tra cui:

Alta disponibilità

L'alta disponibilità (HA) in MySQL si riferisce alla capacità del motore del database di funzionare per un tempo prolungato senza errori. L'alta disponibilità in MySQL può essere abbastanza complessa da configurare e dipende dai requisiti di disponibilità specifici di ciascun utente e dal modo in cui viene eseguito il deployment di MySQL. Per configurare l'alta disponibilità in MySQL, gli utenti devono preoccuparsi di aspetti come replica dei dati, rilevamento degli errori e meccanismi di failover e failback, nonché il reindirizzamento del traffico del database all'istanza secondaria dopo un failover. Cloud SQL per MySQL rende l'alta disponibilità un processo semplice. Scopri di più sull'alta disponibilità per MySQL su Google Compute Engine o sull'esperienza ad alta disponibilità completamente gestita di Cloud SQL per MySQL.

Sicurezza

Le considerazioni sulla sicurezza di MySQL possono riguardare un'ampia gamma di fattori. Alcuni sono importanti in materia di protezione dei dati, ad esempio evitare che vengano danneggiati tramite meccanismi di ridondanza dei dati e processi di sicurezza generali come password e privilegi, controllo dell'accesso e sicurezza della rete. Scopri di più sulla sicurezza in Cloud SQL per MySQL, l'offerta MySQL completamente gestita di Google Cloud.

Backup e ripristino

MySQL supporta il backup e il recupero dei dati tramite vari meccanismi, tra cui strumenti di terze parti. Esistono vari metodi per eseguire il backup e il ripristino di MySQL, ad esempio l'utilità mysqldump, i backup incrementali con i log binari e la replica. Cloud SQL per MySQL offre funzionalità integrate di backup e ripristino che consentono i backup automatici o on demand. Scopri di più qui.

Flessibilità

È facile aggiungere, aggiornare o eliminare tabelle, relazioni e apportare altre modifiche ai dati ogni volta che ne hai bisogno, senza modificare la struttura complessiva del database o senza interferire con le applicazioni esistenti.

Facilità di utilizzo

È facile eseguire query complesse utilizzando il linguaggio SQL, che permette anche agli utenti meno esperti di interagire in modo intuitivo con il database.

Prestazioni

L'ottimizzazione delle prestazioni è un aspetto critico della gestione di qualsiasi database. MySQL semplifica lo sviluppo di applicazioni ad alte prestazioni grazie a molte funzionalità e opzioni di ottimizzazione. Scopri di più su queste funzionalità in questo articolo sui suggerimenti per l'ottimizzazione delle prestazioni di MySQL. Anche questo altro articolo sull'ottimizzazione delle query fornisce best practice specifiche per le prestazioni.

MySQL supporta le proprietà ACID (Atomicità, Coerenza, Isolamento, Durabilità) che garantiscono la validità dei dati indipendentemente da errori, guasti o altri potenziali incidenti.

Casi d'uso

Grazie alla sua versatilità, MySQL può essere utilizzato per molti casi d'uso diversi. Di seguito ne sono riportati alcuni.

Applicazioni web

MySQL è una parte essenziale di molte applicazioni web che vengono sviluppate oggi mediante lo stack LAMP open source. LAMP include Linux come sistema operativo, Apache come server web, MySQL come database e PHP, Python o Perl come linguaggio di programmazione. LAMP aiuta gli sviluppatori a creare applicazioni web dinamiche che richiedono il recupero di informazioni aggiornate da un database come MySQL. Queste possono includere account utente, dettagli degli utenti, nomi dei prodotti, record dei clienti, vendite e altro ancora. Utilizzando il linguaggio SQL, gli utenti possono accedere facilmente alle informazioni archiviate nel database e manipolarle. Per saperne di più, consulta gli articoli su LAMP e su come utilizzarlo per creare applicazioni web.

Elaborazione delle transazioni online

Al momento, molte applicazioni richiedono un database come MySQL per gestire rapidamente una grande quantità di transazioni di database generate da un numero elevato di persone. I database OLTP come MySQL sono la base per molte transazioni web quotidiane tra cui movimenti finanziari, prenotazioni di viaggi, tenuta dei registri contabili e altro ancora. Per supportare i casi d'uso relativi all'elaborazione delle transazioni online, MySQL è conforme ai principi ACID, al supporto per XML e JSON, alle stored procedure, al clustering e al partizionamento. Offre inoltre la possibilità di scegliere tra vari motori di archiviazione per avere la flessibilità necessaria al fine di integrare i dati di un'ampia gamma di tipi di tabelle.

E-commerce

MySQL è un database molto diffuso per le applicazioni di e-commerce che richiedono gestione degli utenti, informazioni sui consumatori, dati finanziari e analisi delle tendenze per prevenire attività fraudolente. Un database relazionale come MySQL può essere utilizzato per organizzare le informazioni in tabelle (prodotti, clienti, ordini) e consente anche di aggiungere ulteriori tabelle in base alle necessità. Alcune delle più grandi organizzazioni al mondo come Airbnb, Uber, Netflix, Booking.com, eBay e Spotify utilizzano MySQL per potenziare le loro applicazioni di e-commerce. Inoltre, MySQL può essere implementato in un deployment ibrido per supportare completamente i casi d'uso di e-commerce. MySQL può essere utilizzato come database relazionale per dati strutturati e come database non relazionale per dati non strutturati come dettagli dei prodotti o informazioni di marketing. 

Applicazioni SaaS

Le applicazioni SaaS in genere sono sempre attive, perciò richiedono tempi di inattività minimi, sicurezza e capacità di scalabilità a seconda delle esigenze. MySQL è diventato come un'opzione di database molto diffusa per la creazione di applicazioni SaaS grazie alla facilità di deployment, gestione e scalabilità. Poiché è open source, gli sviluppatori possono iniziare rapidamente senza dover pagare tariffe per le licenze del software proprietario. La community globale di MySQL è molto attiva e ha contribuito allo sviluppo di plug-in che forniscono funzionalità aggiuntive.

Gestione dei contenuti

MySQL è una scelta di database popolare per i sistemi di gestione dei contenuti (CMS), ad esempio WordPress e Drupal. I CMS archiviano post, pagine, immagini, commenti, categorie, tag, campi personalizzati, utenti e altre impostazioni nel database MySQL. Poiché i CMS hanno spesso migliaia o addirittura milioni di account ogni giorno, MySQL è in grado di gestire tabelle di grandi dimensioni e più query contemporaneamente. Man mano che il pubblico cresce, MySQL può scalare verticalmente o orizzontalmente per soddisfare le esigenze aziendali. 

Social media

Un aspetto importante delle applicazioni per i social media è la necessità di connessioni tra vari datastore, come utenti, gruppi e commenti. In questo tipo di caso d'uso, i database relazionali sono la scelta preferita per le applicazioni di social media e MySQL è quello più diffuso. Alcuni esempi degni di nota sono Twitter, Pinterest e LinkedIn.

Vuoi provare MySQL?

Google Cloud offre un'offerta completamente gestita di MySQL: Cloud SQL per MySQL
Scopri di più su Cloud SQL

Scopri come Cloud SQL per MySQL ti aiuta a innovare. Visualizza la documentazione

Google Cloud offre un database MySQL gestito che è stato creato per soddisfare le tue esigenze aziendali, dal ritiro del data center on-premise all'esecuzione di applicazioni SaaS, fino alla migrazione dei sistemi aziendali principali.