PostgreSQL

Tipo di dati e funzioni JSONB PostgreSQL

Tipo di dati e funzioni JSONB PostgreSQL

Come nel 9.2, PostgreSQL ha aggiunto un tipo di dati JSON abbastanza semplice. Sotto la copertina, il tipo di dati JSON è testo, con un controllo che forse il layout sia corretto input JSON simile a XML. Alla fine, il team ha scoperto che il volume di elaborazione JSON e la ricerca specializzata necessaria in PostgreSQL sarebbe stato difficile o razionale da applicare su un tipo di dati testuale. Quindi, hanno creato una rappresentazione binaria del tipo di dati JSON con una gamma completa di operatori e metodi. Ecco il tipo di dati JSONB. Il tipo di dati JSONB è davvero un layout di archiviazione binario versatile con capacità di elaborazione, indicizzazione e ricerca complete. Di conseguenza, pre-elabora le informazioni JSON in un layout interno, che ha un solo valore per chiave e ignora spazi bianchi o depressioni aggiuntivi, o potresti dire rientro. All'interno di questa guida imparerai come interagire con il modulo dati JSONB in ​​PostgreSQL, nonché alcuni operatori e metodi utili per gestire i dati JSONB.

Il tipo di dati che molto probabilmente richiederai e sceglierai di utilizzare è JSONB, non la versione precedente di JSON, che viene utilizzata solo per la compatibilità con le versioni precedenti. Quindi, apri la shell dei comandi di PostgreSQL e fornisci i nomi del server, il database, la porta e il nome utente.

Esempio 01:

Ecco una breve illustrazione delle variazioni tra i due tipi di dati. Dobbiamo creare una tabella "Nuovo" con una delle sue colonne deve essere il tipo di dati "JSON" come segue:

>> CREATE TABLE Nuovo (ID seriale PRIMARY KEY, Val JSON);

Inserisci alcuni valori nella colonna 'Val'.

>> INSERT INTO New(Val) VALUES ('[1, 2, 3, 4]'), ('[10, 11, 12, 13]'), ('“key”: “value”') ;

Uso dell'operatore '@>'

Una volta che proviamo a cercare voci con un numero intero nell'elenco delle colonne "extra", riceviamo sempre un messaggio di errore come allegato di seguito.

>> SELECT * FROM Nuovo WHERE Val @> '11';

sì. JSON è solo testo e non è molto efficiente e non contiene la configurazione dell'operatore. Lascia che il contenuto venga modificato in jsonb.

>> ALTER TABLE Nuova COLONNA ALTER Val TYPE JSONB;

Ora esegui la stessa query nella shell e il risultato mostra una riga con il numero "11" nella sua matrice come indicato di seguito.

>> SELECT * FROM Nuovo WHERE Val @> '11';

Esempio 02:

Facciamo una tabella 'Bag' da utilizzare nelle nostre illustrazioni fino a quando non iniziamo a parlare dei metodi e degli operatori utilizzabili per il tipo di dati PostgreSQL JSONB. Una delle sue colonne, e.g. 'Marca' deve essere il tipo di dati 'JSONB' come segue:

>> CREATE TABLE Bag (ID seriale PRIMARY KEY, marca JSONB NON NULL);

Useremo la seguente dichiarazione SQL INSERT per aggiungere informazioni nella tabella PostgreSQL 'Bag':

>> INSERT INTO Bag(Brand) VALUES ('"name": "Gucci", "color": ["red", "black"], "price": 10000,  "sold": true,]') , ('"name": "Allure", "color": ["red", "Grey"], "price": 85000,  "sold": false,]'), ('"name": "Kidza", "color": ["black", "white"], "price": 75000,  "sold": true,]');

Puoi vedere che i dati sono stati aggiunti sotto forma di dizionario, e.g., chiavi e valori.

Gli elementi di questa tabella 'Bag' possono essere visualizzati utilizzando una frase SELECT, come mostrato di seguito:

>> SELEZIONA * DA Borsa;

Uso dell'operatore '->'

Cerchiamo i valori nella colonna 'Marca' tramite la chiave 'nome' utilizzando l'operatore '->' nella nostra query.  Recupererà tutti i record della chiave "nome"  dalla colonna "Marca". L'output verrà mostrato nella nuova colonna 'marca'. L'output finale apparirà come allegato di seguito. Come puoi vedere, abbiamo tre valori: "Gucci, Allure, kidza" per la chiave "nome".

>> SELEZIONA Marca -> 'nome' COME marca DA Borsa;

Utilizzo dell'operatore '->' Utilizzo della clausola WHERE

Recuperiamo tutte quelle righe dalla tabella 'Bag' dove la colonna 'Brand' ha il valore 'true' per la sua chiave 'sold'. La query per questa selezione è la seguente:

>> SELECT * FROM Borsa WHERE  Marchio -> 'venduto' = 'vero';

Lì vedi, la query ha recuperato due righe solo dalla tabella "Bag" perché ha solo due righe con valore "true" per la chiave "venduta".

Funzioni JSONB PostgreSQL:

Con le informazioni JSONB, sembra esserci una varietà di metodi incorporati che possono essere utilizzati be. Vediamoli uno per uno.

JSONB Ogni funzione:

Il JSONB Ogni funzione prende i dati e li converte nella coppia chiave_valore. Considera la seguente query del metodo jsonb_each in cui abbiamo fornito i valori. I dati JSON di livello più alto vengono espansi in una serie di combinazioni chiave-valore nel risultato. Abbiamo due coppie chiave-valore, come mostrato di seguito.

>> SELECT jsonb_each('"name": "Allure", "sold": "true"'::jsonb );

Funzione chiavi oggetto JSONB:

Ora daremo un'occhiata alla funzione Jsonb_object_keys. Questa funzione prende i dati e separa e identifica i valori chiave in essa contenuti. Prova la seguente query SELECT, in cui abbiamo utilizzato il metodo jsonb_object_keys e fornito alcuni valori. Questo metodo restituirà solo le chiavi del documento di livello più alto JSON per i dati particolari, come mostrato di seguito.

>> SELECT jsonb_object_keys('"name": "kidza", "sold": "true"'::jsonb );

Funzione del percorso di estrazione JSONB:

La funzione JSONB Extract Path prende il percorso per mostrare il valore nel risultato. Prova la query seguente nella shell dei comandi, dove abbiamo fornito 'brand' come percorso del metodo JSONB jsonb_extract_path. Dall'output presentato nell'immagine sottostante, puoi vedere che 'Gucci' è un valore restituito al percorso 'nome'.

>> SELECT jsonb_extract_path('"name": "Gucci", "sold": true'::jsonb, 'name');

Funzione graziosa JSONB:

Se desideri visualizzare i tuoi file JSON con un layout di facile lettura, la funzione JSONB Pretty è l'opzione migliore. Prova la query seguente e otterrai un semplice output.

>> SELECT jsonb_pretty('"name": "Allure", "sold": false'::jsonb);

Conclusione:

Quando memorizzi le informazioni JSONB nei database PostgreSQL, ottieni il miglior risultato possibile: la semplicità e l'affidabilità di un database NoSQL combinate con i vantaggi di un database relazionale. Utilizzando numerosi operatori e metodi, abbiamo dimostrato come utilizzare PostgreSQL JSONB. Sarai in grado di lavorare con i dati JSONB usando le nostre illustrazioni come riferimento.

Battaglia per Wesnoth 1.13.6 Sviluppo rilasciato
Battaglia per Wesnoth 1.13.6 rilasciato il mese scorso, è la sesta versione di sviluppo nella 1.13.x e offre una serie di miglioramenti, in particolar...
Come installare League Of Legends su Ubuntu 14.04
Se sei un fan di League of Legends, questa è un'opportunità per testare League of Legends. Nota che LOL è supportato su PlayOnLinux se sei un utente L...
Installa l'ultimo gioco di strategia OpenRA su Ubuntu Linux
OpenRA è un motore di gioco di strategia in tempo reale gratuito/libero che ricrea i primi giochi di Westwood come il classico Command & Conquer: Red ...