A partire dalla versione 10.2, è possibile uti­liz­za­re JSON in MariaDB come tipo di dato per salvare e gestire di­ret­ta­men­te in tabelle re­la­zio­na­li contenuti fles­si­bi­li e semi-strut­tu­ra­ti. In questa guida ti pre­sen­tia­mo le funzioni prin­ci­pa­li e i passaggi fon­da­men­ta­li.

Pa­no­ra­mi­ca delle funzioni JSON in MariaDB

MariaDB mette a di­spo­si­zio­ne diverse funzioni utili per lavorare in modo ef­fi­cien­te con i dati di JSON, di­ret­ta­men­te nel database. Non serve una banca dati NoSQL separata: con queste funzioni puoi accedere ai dati, mo­di­fi­car­li o ve­ri­fi­car­li di­ret­ta­men­te. Con i seguenti strumenti è possibile accedere in modo mirato alle in­for­ma­zio­ni, mo­di­fi­ca­re i contenuti o ve­ri­fi­ca­re i dati strut­tu­ra­ti:

  • JSON_VALUE(json_doc, json_path): consente di estrarre un valore specifico da un campo JSON, in­di­can­do­ne il percorso. MariaDB re­sti­tui­sce solo il valore richiesto, senza bisogno di ana­liz­za­re 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 ag­gior­na­to; se manca, viene creato.
  • JSON_REMOVE(json_doc, path): consente di rimuovere elementi inutili o obsoleti da un oggetto JSON spe­ci­fi­can­do il percorso da eliminare.
  • JSON_CONTAINS(json_doc, value, path): utile per verifiche e filtri, consente di con­trol­la­re se un valore specifico è presente nel documento JSON.
  • JSON_VALID(json_doc): prima di elaborare il contenuto JSON, è ne­ces­sa­rio as­si­cu­rar­si che sia valido. Con JSON_VALID, MariaDB verifica se il testo JSON è strut­tu­ra­to cor­ret­ta­men­te e segnala tem­pe­sti­va­men­te eventuali errori.
Managed Database Services
Con­cen­tra­ti sul tuo progetto, noi pensiamo al resto
  • Partner IONOS Cloud
  • Soluzioni fles­si­bi­li e su misura
  • Data center situati in Europa

Come usare JSON in MariaDB: guida completa

Qui ti spie­ghia­mo come inserire, leggere e mo­di­fi­ca­re 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. In­ter­na­men­te, MariaDB salva i JSON come testo, ma ne verifica au­to­ma­ti­ca­men­te 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 ag­giun­ge­re un record con JSON valido:

INSERT INTO products (name, properties) VALUES (
    'desk',
    '{"color": "brown", "material": "timber", "weight": 12.5}'
);
sql

At­ten­zio­ne: as­si­cu­ra­ti che la stringa JSON sia for­mat­ta­ta cor­ret­ta­men­te. Deve essere racchiusa tra vir­go­let­te e al suo interno le vir­go­let­te 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() è di­spo­ni­bi­le a partire dalla versione 10.6.1 di MariaDB. Per versioni pre­ce­den­ti, utilizza JSON_UNQUOTE(JSON_EXTRACT(...)).

Quarto passaggio: ag­gior­na­re i dati di JSON

Per mo­di­fi­ca­re il contenuto di un campo JSON usa JSON_SET():

UPDATE products
SET properties = JSON_SET(properties, '$.color', 'white')
WHERE name = 'desk';
sql

Puoi anche ag­giun­ge­re nuove coppie chiave-valore non esistenti in pre­ce­den­za.

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 de­ter­mi­na­ti contenuti JSON:

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

Questo è utile, ad esempio, per filtri avanzati nelle ricerche prodotto o nelle per­so­na­liz­za­zio­ni.

Settimo passaggio: va­li­da­zio­ne e debugging

Per ve­ri­fi­ca­re se un campo contiene un JSON valido, usa JSON_VALID():

SELECT name, JSON_VALID(properties) FROM products;
sql

Un valore re­sti­tui­to 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 ef­fet­tua­re l’analisi (o l’ela­bo­ra­zio­ne) del contenuto JSON. Questo può ral­len­ta­re le pre­sta­zio­ni, so­prat­tut­to su tabelle grandi o query ripetute. Per evitare che ciò accada, puoi creare colonne generate che estrag­go­no au­to­ma­ti­ca­men­te i valori più usati e li me­mo­riz­za­no se­pa­ra­ta­men­te, con la pos­si­bi­li­tà di in­di­ciz­zar­li.

Ad esempio, è possibile estrarre il valore della chiave material dalla colonna JSON properties e salvarlo in una nuova colonna in­di­ciz­za­bi­le:

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’ese­cu­zio­ne. Inoltre, l’indice (idx_material) permette di gestire ricerche precise in maniera ef­fi­cien­te.

Per questo motivo le in­ter­ro­ga­zio­ni sono molto più rapide:

SELECT name FROM products WHERE material = 'timber';
sql

In ambienti pro­dut­ti­vi con molte letture, questo approccio ga­ran­ti­sce migliori pre­sta­zio­ni e tempi di risposta più brevi.

Perché usare JSON in MariaDB?

L’impiego di JSON risulta par­ti­co­lar­men­te utile per la gestione di strutture di dati fles­si­bi­li, come con­fi­gu­ra­zio­ni, risposte API, profili utente o log. JSON conserva contenuti annidati e fles­si­bi­li di­ret­ta­men­te in una colonna, anziché creare colonne ag­giun­ti­ve per ogni campo possibile. Inoltre, consente di ag­giun­ge­re nuovi valori di­ret­ta­men­te nella struttura JSON. In questo modo è possibile adattare i dati senza mo­di­fi­ca­re lo schema del database.

So­prat­tut­to nei sistemi che ri­chie­do­no sia strutture di tabella rigide sia una gestione fles­si­bi­le dei dati, JSON in MariaDB rap­pre­sen­ta una soluzione rapida e semplice. Permette di lavorare con contenuti dinamici senza ri­nun­cia­re ai vantaggi delle query SQL tra­di­zio­na­li, unendo così la stabilità dei dati re­la­zio­na­li con la fles­si­bi­li­tà dei database NoSQL.

Compute Engine
La soluzione IaaS ideale per i tuoi carichi di lavoro
  • vCPU estre­ma­men­te van­tag­gio­se e potenti core dedicati
  • Massima fles­si­bi­li­tà senza periodo con­trat­tua­le minimo
  • Servizio di as­si­sten­za tecnica 24 ore su 24, 7 giorni su 7
Vai al menu prin­ci­pa­le