Da un thread su una delle mailing list ufficiali ho appreso di un tipo di dato a me sconosciuto: ltree.
Un ltree rappresenta un label tree, quello che nei linguaggi di programmazione è un meccanismo di properties. In sostanza
si definiscono delle etichette, ordinate gerarchicamente in base ad un separatore (il carattere
.
) e a queste si associa un valore.
Esistono poi funzioni apposite di utilità per la navigazione e la ricerca nell'albero delle etichette.
Vediamo un esempio pratico: supponiamo di voler catalogare in un albero alcune informazioni basilari riguardo la nostra associazioni
(dati assolutamente casuali e a puro scopo didattico!).
CREATE TABLE
itpug( tipologia ltree, counter integer );
Ora si supponga di voler trovare il dettaglio dei soci, magari la loro somma partendo dalla foglia dell'albero:
SELECT sum( counter )
FROM itpug
WHERE tipologia @> 'itpug.soci';
sum
----
50
(1 row)
Supponiamo di voler trovare tutte le informazioni relativi al
web
(si noti l'uso della tilde):SELECT *
FROM itpug
WHERE tipologia ~ '*.web.*';
tipologia | counter
---------------------------+---------
itpug.web.siti | 3
itpug.web.ssl.certificati | 1
(2 rows)
Insomma, ltree si presenta come estensione sicuramente interessante, anche se forse un po' sorpassata dall'uso di altri formati quali json e jsonb.
Nessun commento:
Posta un commento