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. Con JSON_VALID, MariaDB verifica se il testo JSON è strutturato correttamente e segnala tempestivamente eventuali errori.
Managed Database Services
Concentrati sul tuo progetto, noi pensiamo al resto
  • 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
);
sql

Il 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}'
);
sql

Attenzione: 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;
sql

Il risultato mostra il nome del prodotto e il materiale salvato dal campo JSON.

N.B.

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';
sql

Puoi 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';
sql

Sesto passaggio: cercare valori in JSON

In MariaDB è possibile filtrare le voci con determinati contenuti JSON:

SELECT * FROM products
WHERE JSON_VALUE(properties, '$.material') = 'timber';
sql

Questo è 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;
sql

Un 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);
sql

Questo 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';
sql

In 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.

Compute Engine
La soluzione IaaS ideale per i tuoi carichi di lavoro
  • 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
Hai trovato questo articolo utile?
Vai al menu principale