1. Introduzione
1.1 L’Importanza di JSON
Nello sviluppo web moderno, lo scambio di dati sta diventando sempre più complesso. JSON (JavaScript Object Notation) è ampiamente utilizzato per il trasferimento e l’archiviazione dei dati grazie al suo formato leggero e strutturato. Dalla versione 5.7, MySQL supporta il tipo di dati JSON, rendendo più facile gestire i dati JSON direttamente all’interno dei database.
1.2 Utilizzo di JSON in MySQL
Questo articolo fornisce una spiegazione dettagliata di JSON in MySQL, coprendo operazioni di base, considerazioni sulle prestazioni e tecniche di utilizzo pratiche. Offre conoscenze essenziali per utilizzare efficacemente JSON in MySQL, sia che siate principianti o utenti avanzati.
2. Cos’è JSON in MySQL?
2.1 Nozioni di Base su JSON
JSON è un formato semplice che struttura i dati come coppie chiave-valore. È ampiamente utilizzato nelle API web e nel trasferimento di dati grazie alla sua natura leggera e leggibilità. In MySQL, è possibile utilizzare il tipo di dati JSON per archiviare e manipolare i dati JSON direttamente all’interno del database.
2.2 Il Tipo di Dati JSON in MySQL
Il tipo di dati JSON introdotto in MySQL 5.7 richiede spazio su disco simile a LONGBLOB o LONGTEXT. Per garantire l’integrità dei dati, MySQL valida i documenti JSON al momento dell’inserimento. Questo impedisce l’archiviazione di dati JSON non validi nel database.
2.3 Casi d’Uso Comuni per JSON
Gli scenari principali per l’utilizzo di JSON in MySQL includono i seguenti:
- Archiviazione di strutture dati complesse
- Salvataggio di risposte API senza modifiche
- Gestione di dati con schemi in evoluzione
3. Operazioni di Base su JSON in MySQL
3.1 Creazione di una Colonna JSON
Per creare una colonna per archiviare dati JSON, specificare il tipo di dati JSON come mostrato di seguito:
CREATE TABLE json_data (
doc JSON
);
3.2 Inserimento di Dati JSON
Utilizzare l’istruzione INSERT per inserire dati JSON come mostrato di seguito. MySQL verifica se i dati sono in formato JSON valido al momento dell’inserimento e restituisce un errore se non lo sono.
INSERT INTO json_data(doc) VALUES ('{"a": {"b": ["c", "d"]}, "e": "f"}');
È possibile anche generare un oggetto JSON da coppie chiave-valore utilizzando la funzione JSON_OBJECT.
INSERT INTO json_data(doc) VALUES (JSON_OBJECT('key1', 'value1', 'key2', 'value2'));
3.3 Interrogazione di Dati JSON
Per recuperare i dati JSON inseriti, utilizzare la funzione JSON_EXTRACT. Questa funzione estrae i dati da un percorso specificato all’interno di un oggetto JSON.
SELECT * FROM json_data WHERE JSON_EXTRACT(doc, '$.e') = 'f';
È possibile anche utilizzare l’operatore shortcut ->.
SELECT * FROM json_data WHERE doc->'$.e' = 'f';
3.4 Aggiornamento di Dati JSON
Per aggiornare parzialmente i dati JSON, utilizzare la funzione JSON_SET. Questa funzione aggiorna il percorso specificato e restituisce un nuovo oggetto JSON.
UPDATE json_data SET doc = JSON_SET(doc, '$.a.b[0]', 'new_value');
4. Considerazioni sulle Prestazioni
4.1 Prestazioni di Inserimento
Quando si inseriscono dati in una colonna JSON di MySQL, c’è poca differenza di prestazioni tra il tipo TEXT e il tipo JSON. I test di runtime mostrano che l’inserimento di 50.000 record utilizzando il tipo JSON si completa approssimativamente nello stesso tempo dell’utilizzo del tipo TEXT.
4.2 Prestazioni di Aggiornamento
Quando si aggiornano i dati JSON, l’utilizzo di JSON_SET consente aggiornamenti parziali efficienti. Invece di sovrascrivere l’intero documento, è possibile aggiornare solo campi specifici, il che migliora le prestazioni. Anche quando si aggiornano parzialmente 50.000 record, JSON_SET consente un’esecuzione efficiente.

5. Migliori Pratiche per l’Utilizzo di JSON in MySQL
5.1 Quando Utilizzare JSON Appropriatamente
JSON è adatto per archiviare strutture dati complesse e dati con schemi in evoluzione. Tuttavia, per dati altamente strutturati, l’utilizzo di tabelle relazionali standard è generalmente più efficiente.
5.2 Indicizzazione di Dati JSON
In MySQL, è possibile creare indici sulle colonne JSON utilizzando Colonne Virtuali. Questo consente di migliorare le prestazioni delle query quando si lavora con dati JSON.
ALTER TABLE json_data
ADD COLUMN e_value VARCHAR(255) AS (doc->'$.e'),
ADD INDEX (e_value);
5.3 Evitare gli errori comuni
- Evita di utilizzare eccessivamente le colonne JSON e sfrutta i punti di forza dei database relazionali.
- Configura indici appropriati per garantire query efficienti.
- Impedisci che i dati JSON diventino eccessivamente grandi e normalizza i dati quando necessario.
6. Funzioni JSON avanzate in MySQL
6.1 Funzioni JSON aggiuntive
MySQL offre molte funzioni per manipolare i dati JSON. Ad esempio, è possibile aggiungere nuovi dati a un array JSON usando JSON_APPEND, o rimuovere campi specifici usando JSON_REMOVE.
-- Append data
UPDATE json_data SET doc = JSON_APPEND(doc, '$.a.b', 'new_element');
-- Remove data
UPDATE json_data SET doc = JSON_REMOVE(doc, '$.a.b[0]');
6.2 Combinare JSON con le funzioni SQL
Le funzioni JSON possono essere combinate con le funzioni SQL tradizionali per creare query più complesse. Ad esempio, è possibile utilizzare i dati JSON nelle clausole GROUP BY o ORDER BY.
SELECT JSON_EXTRACT(doc, '$.e') AS e_value, COUNT(*)
FROM json_data
GROUP BY e_value;
7. Conclusione
In questo articolo, abbiamo coperto tutto, dalle operazioni JSON di base in MySQL alle funzionalità avanzate. Sfruttando le caratteristiche JSON di MySQL, è possibile memorizzare e manipolare facilmente strutture dati complesse all’interno del tuo database. Applica le conoscenze relative alle considerazioni sulle prestazioni e alle migliori pratiche discusse qui per ottenere una gestione dei dati più efficiente.


