Come usare JSON in MariaDB
A partire dalla versione 10.2, è possibile utilizzare JSON in MariaDB come tipo di dato per salvare e gestire direttamente in tabelle relazionali contenuti flessibili e semi-strutturati. In questa guida ti presentiamo le funzioni principali e i passaggi fondamentali.
Panoramica delle funzioni JSON in MariaDB
MariaDB mette a disposizione diverse funzioni utili per lavorare in modo efficiente con i dati di JSON, direttamente nel database. Non serve una banca dati NoSQL separata: con queste funzioni puoi accedere ai dati, modificarli o verificarli direttamente. Con i seguenti strumenti è possibile accedere in modo mirato alle informazioni, modificare i contenuti o verificare i dati strutturati:
JSON_VALUE(json_doc, json_path): consente di estrarre un valore specifico da un campo JSON, indicandone il percorso. MariaDB restituisce solo il valore richiesto, senza bisogno di analizzare tutto il documento o usare parser esterni.JSON_SET(json_doc, path, value): modifica un campo esistente oppure ne aggiunge uno nuovo. Se il percorso esiste, il valore viene aggiornato; se manca, viene creato.JSON_REMOVE(json_doc, path): consente di rimuovere elementi inutili o obsoleti da un oggetto JSON specificando il percorso da eliminare.JSON_CONTAINS(json_doc, value, path): utile per verifiche e filtri, consente di controllare se un valore specifico è presente nel documento JSON.JSON_VALID(json_doc): prima di elaborare il contenuto JSON, è necessario assicurarsi che sia valido. ConJSON_VALID, MariaDB verifica se il testo JSON è strutturato correttamente e segnala tempestivamente eventuali errori.
- Partner IONOS Cloud
- Soluzioni flessibili e su misura
- Data center situati in Europa
Come usare JSON in MariaDB: guida completa
Qui ti spieghiamo come inserire, leggere e modificare dati JSON in MariaDB.
Primo passaggio: creare una tabella con campo JSON
Per prima cosa, crea una tabella con una colonna di tipo LONGTEXT o JSON. Internamente, MariaDB salva i JSON come testo, ma ne verifica automaticamente la sintassi quando si usano le apposite funzioni JSON.
CREATE TABLE products (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255),
properties JSON
);sqlIl campo properties può contenere oggetti JSON di qualsiasi tipo.
Secondo passaggio: inserire i dati di JSON
Con MariaDB INSERT INTO puoi aggiungere un record con JSON valido:
INSERT INTO products (name, properties) VALUES (
'desk',
'{"color": "brown", "material": "timber", "weight": 12.5}'
);sqlAttenzione: assicurati che la stringa JSON sia formattata correttamente. Deve essere racchiusa tra virgolette e al suo interno le virgolette doppie devono essere precedute da un backslash (\").
Terzo passaggio: leggere dati da una colonna JSON
Per estrarre valori specifici da un oggetto JSON, utilizza JSON_VALUE():
SELECT name, JSON_VALUE(properties, '$.material') AS material
FROM products;sqlIl risultato mostra il nome del prodotto e il materiale salvato dal campo JSON.
JSON_VALUE() è disponibile a partire dalla versione 10.6.1 di MariaDB. Per versioni precedenti, utilizza JSON_UNQUOTE(JSON_EXTRACT(...)).
Quarto passaggio: aggiornare i dati di JSON
Per modificare il contenuto di un campo JSON usa JSON_SET():
UPDATE products
SET properties = JSON_SET(properties, '$.color', 'white')
WHERE name = 'desk';sqlPuoi anche aggiungere nuove coppie chiave-valore non esistenti in precedenza.
Quinto passaggio: rimuovere elementi da JSON
Con JSON_REMOVE() elimini un valore specifico da un oggetto:
UPDATE products
SET properties = JSON_REMOVE(properties, '$.weight')
WHERE name = 'desk';sqlSesto passaggio: cercare valori in JSON
In MariaDB è possibile filtrare le voci con determinati contenuti JSON:
SELECT * FROM products
WHERE JSON_VALUE(properties, '$.material') = 'timber';sqlQuesto è utile, ad esempio, per filtri avanzati nelle ricerche prodotto o nelle personalizzazioni.
Settimo passaggio: validazione e debugging
Per verificare se un campo contiene un JSON valido, usa JSON_VALID():
SELECT name, JSON_VALID(properties) FROM products;sqlUn valore restituito pari a “1” indica che JSON è valido, “0” segnala un errore di sintassi.
Ottavo passaggio: combinare colonne JSON con colonne e indici generati
Poiché MariaDB memorizza i JSON come testo, ogni query deve effettuare l’analisi (o l’elaborazione) del contenuto JSON. Questo può rallentare le prestazioni, soprattutto su tabelle grandi o query ripetute. Per evitare che ciò accada, puoi creare colonne generate che estraggono automaticamente i valori più usati e li memorizzano separatamente, con la possibilità di indicizzarli.
Ad esempio, è possibile estrarre il valore della chiave material dalla colonna JSON properties e salvarlo in una nuova colonna indicizzabile:
ALTER TABLE products
ADD COLUMN material VARCHAR(100) AS (JSON_VALUE(properties, '$.material')) STORED,
ADD INDEX idx_material (material);sqlQuesto comando crea la colonna material, che riprende il valore JSON da $.material. La parola chiave STORED assicura che il valore venga salvato nel database e non solo calcolato durante l’esecuzione. Inoltre, l’indice (idx_material) permette di gestire ricerche precise in maniera efficiente.
Per questo motivo le interrogazioni sono molto più rapide:
SELECT name FROM products WHERE material = 'timber';sqlIn ambienti produttivi con molte letture, questo approccio garantisce migliori prestazioni e tempi di risposta più brevi.
Perché usare JSON in MariaDB?
L’impiego di JSON risulta particolarmente utile per la gestione di strutture di dati flessibili, come configurazioni, risposte API, profili utente o log. JSON conserva contenuti annidati e flessibili direttamente in una colonna, anziché creare colonne aggiuntive per ogni campo possibile. Inoltre, consente di aggiungere nuovi valori direttamente nella struttura JSON. In questo modo è possibile adattare i dati senza modificare lo schema del database.
Soprattutto nei sistemi che richiedono sia strutture di tabella rigide sia una gestione flessibile dei dati, JSON in MariaDB rappresenta una soluzione rapida e semplice. Permette di lavorare con contenuti dinamici senza rinunciare ai vantaggi delle query SQL tradizionali, unendo così la stabilità dei dati relazionali con la flessibilità dei database NoSQL.
- 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

