Som i 9.2 versjon, PostgreSQL la til en ganske grunnleggende JSON -datatype. Under omslaget er JSON -typen data tekst, med en sjekk at kanskje oppsettet er riktig JSON -inngang som ligner på XML. Etter hvert fant teamet at volumet av JSON -prosessering og spesialisert søk som trengs i PostgreSQL ville ha vært vanskelig eller rasjonell å håndheve over en teksttype data. Derfor skapte de en binær representasjon av JSON -datatypen med et komplett utvalg av operatører og metoder. Her kommer JSONB -datatypen. JSONB -datatypen er virkelig en allsidig binær lagringsoppsett med fullstendig behandling, indeksering og søkefunksjon. Som et resultat forhåndsbehandler det JSON-informasjon til en indre layout, som bare har en verdi per nøkkel og ignorerer ekstra hvitrom eller depresjon, eller du kan si innrykk. Innenfor denne guiden lærer du hvordan du kan samhandle med JSONB -dataformen i PostgreSQL, samt noen nyttige operatører og metoder for å håndtere JSONB -data.
Datatypen du mest sannsynlig krever og velger å bruke er JSONB, ikke JSON tidlig versjon, som bare brukes til 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:
>> Lag tabell Ny (ID Serial Primary Key, Val JSON);Sett inn noen verdier i kolonnen 'val'.
>> Sett inn nye (Val) verdier ('[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 heltall i kolonnen 'ekstra', får vi alltid en feilmelding som vedlagt nedenfor.
>> Velg * fra nytt 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 tabell ny alter -kolonne VAL -type JSONB;Utfør nå den samme spørringen i skallet, og resultatet viser at en rad har nummeret '11' i sin matrise som gitt nedenfor.
>> Velg * fra nytt hvor val @> '11';Eksempel 02:
La oss lage en tabell 'pose' som skal brukes i illustrasjonene våre til vi begynner å snakke om metodene og operatørene som er brukbare for PostgreSQL JSONB datatype. En av kolonnene, e.g. 'Merkevare' må være 'jsonb' datatype som følger:
>> Lag bordveske (ID Serial Primary Key, merke JSONB ikke null);Vi bruker følgende SQL Sett inn erklæring for å legge til informasjon i PostgreSQL -tabellen 'Bag':
>> Sett inn i Bag (merkevare) verdier ('"Navn": "Gucci", "Color": ["Red", "Black"], "Price": 10000, "Solgt": True,]') , ('"Navn": "Allure", "Color": ["Red", "Gray"], "Price": 85000, "Solgt": False,]'), ('"Navn": "Kidza", "Color": ["Black", "White"], "Price": 75000, "Solgt": True,] ');Du kan se at dataene er lagt til i form av en ordbok, e.g., Nøkler og verdier.
Elementene i denne tabellen 'Bag' kan sees ved hjelp av en valgt setning, som vist nedenfor:
>> velg * fra vesken;Bruk av '->' operatør
La oss se etter verdiene i kolonnen 'Brand' via nøkkelen 'Navnet' ved hjelp av '->' -operatøren i spørringen vår. Det vil hente alle postene til nøkkelen 'Navn' fra kolonnen 'merke'. Utgangen vil bli vist i den nye kolonnen 'Brand'. Den endelige utgangen vises som vedlagt nedenfor. Som du kan se, har vi tre verdier: 'Gucci, Allure, Kidza' for Key 'Name'.
>> Velg merke -> 'Navn' som merke fra veske;Bruk av '->' operatør ved å bruke hvor leddet
La oss hente alle disse radene fra tabellen 'Bag' der 'merkevare' -kolonnen har fått verdien 'True' for sin nøkkel "solgt". Spørringen for dette valget er som følger:
>> Velg * fra veske der merkevaren -> 'solgt' = 'True';Der du ser, hentet spørringen to rader bare fra tabellen 'veske' fordi den bare har to rader som har verdi '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 Key_Value -paret. Tenk på følgende spørsmål om JSONB_each -metoden der vi har gitt verdier. JSON-dataene på høyeste nivå utvides til en serie nøkkelverdi-kombinasjoner i utfallet. Vi har to nøkkelverdipar, som vist nedenfor.
>> Velg JSONB_each ('"Navn": "Allure", "Solgt": "True"' :: JSONB);JSONB Objektnøkler Funksjon:
Nå vil vi ta en titt på JSONB_OBJECT_KEYS -funksjonen. Denne funksjonen tar dataene, og skiller seg selv og identifiserer nøkkelverdiene i den. Prøv den nedenfor Velg spørring, der vi har brukt JSONB_OBJECT_KEYS -metoden og gitt noen verdier. Denne metoden vil bare returnere JSON-dokumentets nøkler på høyeste nivå for de aktuelle dataene, som vist nedenfor.
>> velg jsonb_object_keys ('"name": "kidza", "solgt": "true"' :: jsonb);JSONB Extract Path -funksjon:
JSONB Extract Path -funksjonen tar banen for å vise verdien i utfallet. Prøv spørringen nedenfor i kommandoskallet, der vi har gitt "merke" som veien til JSONB JSONB_Extract_Path Method. Fra utgangen som presenteres på bildet nedenfor, kan du se at 'Gucci' er en returnert verdi til banen 'navn'.
>> Velg JSONB_Extract_Path ('"Navn": "Gucci", "Solgt": True' :: JSONB, 'Navn');JSONB Pretty Function:
Hvis du vil vise JSON-filene dine med en lettlest oppsett, er JSONB Pretty-funksjonen det beste alternativet. Prøv spørringen nedenfor, så får du en enkel utgang.
>> Velg JSONB_Prety ('"Navn": "Allure", "SOOLD": FALSE' :: JSONB);Konklusjon:
Når du lagrer JSONB -informasjon i PostgreSQL -databasene, får du et best mulig resultat: enkelheten og påliteligheten til en NoSQL -database kombinert med en relasjonsdatabases fordeler. Ved å bruke mange operatører og metoder, demonstrerte vi hvordan vi bruker PostgreSQL JSONB. Du vil være i stand til å jobbe med JSONB -data ved å bruke illustrasjonene våre som referanse.