PostgreSQL

PostgreSQL JSONB Datatype og funksjoner

PostgreSQL JSONB Datatype og funksjoner

Som i 9.2 versjon, PostgreSQL la til en ganske grunnleggende JSON-datatype. Under omslaget er JSON-typen data tekst, med en sjekk om at oppsettet kanskje er riktig JSON-inngang som ligner på XML. Til slutt fant teamet at volumet av JSON-behandling og spesialisert søk som trengs i PostgreSQL, ville ha vært vanskelig eller rasjonelt å håndheve over en tekstlig type data. Derfor opprettet de en binær representasjon av JSON-datatypen med et komplett utvalg av operatører og metoder. Her kommer JSONB-datatypen. JSONB-datatypen er faktisk et allsidig binært lagringsoppsett med fullstendig prosessering, indeksering og søkefunksjon. Som et resultat forbehandler den JSON-informasjon til et indre oppsett, som bare har en verdi per nøkkel og ignorerer ekstra hvitt mellomrom eller depresjon, eller du kan si innrykk. I denne guiden lærer du hvordan du kan samhandle med JSONB-dataskjemaet i PostgreSQL, samt noen praktiske operatører og metoder for å håndtere JSONB-data.

Datatypen du sannsynligvis trenger og velger å bruke er JSONB, ikke JSON tidlig versjon, som bare brukes for bakoverkompatibilitet. Så åpne PostgreSQL-kommandoskallet og oppgi serverens navn, database, port og brukernavn.

Eksempel 01:

Her er en kort illustrasjon av variasjonene mellom de to datatypene. Vi må lage en tabell 'Ny' med en av kolonnene må være 'JSON' datatype som følger:

>> OPPRETT TABELL Ny (ID seriell PRIMÆR NØKKEL, Val JSON);

Sett inn noen verdier i kolonnen 'Val'.

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

Bruk av '@>' operatør

Når vi prøver å se etter oppføringer med et helt tall i kolonnen 'ekstra', får vi alltid en feilmelding som vedlagt nedenfor.

>> VELG * FRA Ny HVOR Val @> '11';

Ja. JSON er bare tekst og er ikke veldig effektiv, og den inneholder ikke operatørkonfigurasjon. La innholdet endres til jsonb.

>> ALTER TABLE Ny ALTER COLUMN Val TYPE JSONB;

Utfør nå den samme spørringen i skallet, og resultatet viser en rad med tallet '11' i matrisen som gitt nedenfor.

>> VELG * FRA Ny HVOR Val @> '11';

Eksempel 02:

La oss lage en tabell 'Bag' som skal brukes i illustrasjonene til vi begynner å snakke om metodene og operatørene som kan brukes for datatypen PostgreSQL JSONB. En av kolonnene, f.eks.g. 'Merke' må være 'JSONB' datatype som følger:

>> CREATE TABLE Bag (ID serial PRIMARY KEY, Brand JSONB NOT NULL);

Vi bruker følgende SQL INSERT-erklæring for å legge til informasjon i PostgreSQL-tabellen '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,] ');

Du kan se at dataene er lagt til i form av en ordbok, f.eks.g., nøkler og verdier.

Elementene i denne tabellen "Bag" kan sees ved hjelp av en SELECT-setning, som vist nedenfor:

>> VELG * FRA Veske;

Bruk av '->' Operatør

La oss se etter verdiene i kolonnen 'Merke' via nøkkelen 'navn' ved hjelp av '->' operatoren i spørringen vår.  Den vil hente alle postene til nøkkelen 'navn' fra kolonnen 'Merke'. Produksjonen vises i den nye kolonnen 'merke'. Den endelige utgangen vises som vedlagt nedenfor. Som du kan se, har vi tre verdier: 'Gucci, Allure, kidza' for nøkkelen 'navn'.

>> VELG merke -> 'navn' SOM merke FRA Bag;

Bruk av '->' operatør ved bruk av WHERE-klausul

La oss hente alle disse radene fra tabellen "Bag" der "Brand" -kolonnen har verdien "true" for nøkkelen "solgt". Spørsmålet for dette valget er som følger:

>> VELG * FRA Bag WHERE Brand -> 'sold' = 'true';

Der ser du, søket hentet to rader bare fra tabellen "Bag" fordi den bare har to rader med verdien "true" for nøkkelen "solgt".

PostgreSQL JSONB-funksjoner:

Med JSONB-informasjon ser det ut til å være en rekke innebygde metoder som kan brukes. La oss se på dem en etter en.

JSONB Hver funksjon:

JSONB Hver funksjon tar dataene og konverterer dem til nøkkelverdiparet. Vurder følgende spørsmål om metoden jsonb_each der vi har gitt verdier. JSON-dataene på høyeste nivå utvides til en serie nøkkelverdikombinasjoner i utfallet. Vi har to nøkkelverdipar, som vist nedenfor.

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

JSONB Object Keys Funksjon:

Nå vil vi ta en titt på Jsonb_object_keys-funksjonen. Denne funksjonen tar dataene, og i seg selv skiller og identifiserer nøkkelverdiene i den. Prøv SELECT-spørringen nedenfor, der vi har brukt metoden jsonb_object_keys og gitt noen verdier. Denne metoden returnerer bare JSON-dokumentets nøkler for de spesifikke dataene, som vist nedenfor.

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

JSONB Extract Path-funksjon:

JSONB Extract Path-funksjonen tar banen for å vise verdien i resultatet. Prøv spørringen nedenfor i kommandoskallet, der vi har gitt 'merke' som stien til JSONB jsonb_extract_path-metoden. Fra utdataene som er presentert i bildet nedenfor, kan du se at 'Gucci' er en returnert verdi til banen 'navn'.

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

JSONB Pretty Funksjon:

Hvis du vil vise JSON-filene dine med en lettlest layout, er JSONB Pretty-funksjonen det beste alternativet. Prøv spørringen nedenfor, så får du en enkel utgang.

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

Konklusjon:

Når du lagrer JSONB-informasjon i PostgreSQL-databasene, får du best mulig resultat: enkelheten og påliteligheten til en NoSQL-database kombinert med fordelene til en relasjonsdatabase. Ved å bruke mange operatører og metoder demonstrerte vi hvordan du bruker PostgreSQL JSONB. Du kan arbeide med JSONB-data ved å bruke illustrasjonene våre som referanse.

Topp 10 spill å spille på Ubuntu
Windows-plattformen har vært en av de dominerende plattformene for spill på grunn av den enorme andelen spill som utvikles i dag for å støtte Windows ...
5 beste arkadespill for Linux
I dag er datamaskiner seriøse maskiner som brukes til spill. Hvis du ikke kan få den nye høye poengsummen, vil du vite hva jeg mener. I dette innlegge...
Kamp for Wesnoth 1.1. 3.6 Utvikling utgitt
Kamp for Wesnoth 1.1. 3.6 utgitt i forrige måned, er den sjette utgivelsen i 1.1. 3.x-serien, og den leverer en rekke forbedringer, spesielt til bruke...