PostgreSQL JSONB Datatype e funzioni

PostgreSQL JSONB Datatype e funzioni

Come nel 9.2 Versione, 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 un input JSON corretto simile a XML. Alla fine, il team ha scoperto che il volume dell'elaborazione JSON e la ricerca specializzata necessarie in PostgreSQL sarebbe stato difficile o razionale per far rispettare un tipo testuale di dati. Quindi, hanno creato una rappresentazione binaria del tipo di dati JSON con una gamma completa di operatori e metodi. Ecco che arriva il tipo di dati JSONB. Il tipo di dati JSONB è effettivamente un layout di archiviazione binario versatile con elaborazione completa, indicizzazione e capacità di ricerca. Di conseguenza, pre-elabora le informazioni JSON a un layout interno, che ha un solo valore per chiave e ignora lo spazio bianco o la depressione aggiuntivi, oppure si può dire un rientro. All'interno di questa guida, imparerai come interagire con il modulo dati JSONB in ​​PostgreSQL, nonché alcuni utili operatori e metodi per gestire i dati JSONB.

Il tipo di dati che molto probabilmente richiederai e sceglierai di utilizzare è JSONB, non la prima versione JSON, che viene utilizzata solo per la compatibilità all'indietro. Quindi, apri la shell del comando PostgreSQL e fornisci i nomi, il database, la porta e il nome utente del server.

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 un dati "JSON" come segue:

>> Crea tabella Nuovo (ID Key Serial Primary, Val JSON);

Inserire alcuni valori nella colonna 'Val'.

>> inserisci in nuovi valori (val) ('[1, 2, 3, 4]'), ('[10, 11, 12, 13]'), ('“chiave”: “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 aggiunto di seguito.

>> Seleziona * da nuovo Where Val @> '11';

SÌ. JSON è solo testo e non è molto efficiente e non contiene configurazione dell'operatore. Lascia che il contenuto venga modificato in JSONB.

>> ALTER TABELLA NUOVA MOTORE MOLIGN VAL TIPE JSONB;

Ora esegui la stessa query nella shell e il risultato mostra una riga con il numero '11' nel suo array come indicato di seguito.

>> Seleziona * da nuovo Where Val @> '11';

Esempio 02:

Facciamo una "borsa" del tavolo 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. "Brand" DEVE BE BASI "JSONB" come segue:

>> Crea una borsa da tavolo (ID Key Serial Primary, marchio JSONB non null);

Useremo la seguente dichiarazione di inserto SQL per aggiungere informazioni nella tabella PostgreSQL "borsa":

>> Insert in Bag (Brand) Values ​​('"Nome": "Gucci", "Color": ["Red", "Black"], "Price": 10000, "Sold": True,]') , ('"nome": "allure", "colore": ["rosso", "grigio"], "prezzo": 85000, "venduto": false,]'), ('"nome": "Kidza", "color": ["nero", "bianco"], "prezzo": 75000, "venduto": vero,] ');

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

Gli elementi di questa tabella "borsa" possono essere visti usando una frase selezionata, come mostrato di seguito:

>> Seleziona * dalla borsa;

Uso dell'operatore '->'

Cerchiamo i valori nella colonna "marchio" tramite il tasto "nome" usando l'operatore "->" nella nostra query. Prenderà tutti i record del "nome" chiave dal "marchio" della colonna. L'output verrà mostrato nel nuovo "marchio" della colonna. L'output finale apparirà come aggiunto di seguito. Come puoi vedere, abbiamo tre valori: "Gucci, Allure, Kidza" per "nome" chiave.

>> Seleziona il marchio -> "nome" come marchio da Bag;

Utilizzo dell'operatore '->' utilizzando Where Clauso

Prendiamo tutte quelle righe dalla tabella "borsa" in cui la colonna "marchio" ha il valore "vero" per la sua chiave "venduta". La query per questa selezione è la seguente:

>> Seleziona * da Bag Where Brand -> 'Vold' = 'True';

Eccoti, la query ha preso due righe solo dalla "borsa" del tavolo perché ha solo due righe con valore "vero" per la chiave "venduta".

Funzioni PostgreSQL JSONB:

Con le informazioni JSONB, sembrano esserci una varietà di metodi integrati che possono essere utilizzati. Diamo un'occhiata a uno per uno.

Jsonb ciascuno funzione:

Il JSONB ogni funzione prende i dati e li converte in coppia key_value. Considera la seguente query del metodo JSONB_EACH in cui abbiamo fornito valori. I dati JSON di alto livello sono ampliati in una serie di combinazioni di valore chiave nel risultato. Abbiamo due coppie di valore chiave, come mostrato di seguito.

>> seleziona jsonb_each ('"nome": "allure", "venduto": "vero"' :: jsonb);

Funzione di chiavi oggetto JSONB:

Ora daremo un'occhiata alla funzione JSONB_OBJECT_KEYS. Questa funzione prende i dati e se stessa separa e identifica i valori chiave in essa. Prova la query seleziona di seguito, 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.

>> Seleziona jsonb_object_keys ('"nome": "kidza", "venduto": "vero"' :: jsonb);

Funzione del percorso di estrazione JSONB:

La funzione del percorso di estratto JSONB prende il percorso per mostrare il valore nel risultato. Prova la query seguente nella shell di comando, dove abbiamo fornito il "marchio" come percorso del metodo JSONB JSONB_EXTRATS. Dall'output presentato nell'immagine qui sotto, puoi vedere che il "Gucci" è un valore restituito al percorso "nome".

>> seleziona jsonb_extract_path ('"nome": "gucci", "venduto": true' :: jsonb, 'name');

JSONB Pretty Function:

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

>> seleziona jsonb_pretty ('"nome": "allure", "venduto": false' :: jsonb);

Conclusione:

Quando si archiviano le informazioni JSONB nei database PostgreSQL, si ottiene il miglior risultato possibile: la semplicità e l'affidabilità di un database NOSQL combinato 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 utilizzando le nostre illustrazioni come riferimento.