PostgreSQL

PostgreSQL JSONB Datatype og funktioner

PostgreSQL JSONB Datatype og funktioner

Som i 9.2 version, PostgreSQL tilføjede en ganske grundlæggende JSON-datatype. Under omslaget er JSON-datatypen tekst, med en kontrol af, at layoutet måske er korrekt JSON-input svarende til XML. Til sidst fandt holdet, at mængden af ​​JSON-behandling og specialsøgning, der var nødvendig i PostgreSQL, ville have været vanskelig eller rationel at håndhæve over en tekstdata. Derfor skabte de en binær repræsentation af JSON-datatypen med et komplet udvalg af operatører og metoder. Her kommer JSONB-datatypen. JSONB-datatypen er faktisk et alsidigt binært lagringslayout med komplet bearbejdnings-, indekserings- og søgefunktion. Som et resultat forbehandler det JSON-information til et indre layout, som kun har en værdi pr. Nøgle og ignorerer yderligere mellemrum eller depression, eller du kan sige indrykning. Inden for denne vejledning lærer du, hvordan du interagerer med JSONB-dataformularen i PostgreSQL, samt nogle praktiske operatører og metoder til at håndtere JSONB-data.

Datatypen, som du sandsynligvis har brug for og vælger at bruge, er JSONB, ikke JSON tidlig version, som kun bruges til bagudkompatibilitet. Så åbn PostgreSQL-kommandoskallen, og angiv serverens navne, database, port og brugernavn.

Eksempel 01:

Her er en kort illustration af variationerne mellem de to datatyper. Vi er nødt til at oprette en tabel 'Ny' med en af ​​dens kolonner skal være 'JSON' datatype som følger:

>> Opret TABEL Ny (ID seriel PRIMÆR NØGLE, Val JSON);

Indsæt nogle værdier i kolonnen 'Val'.

>> INDSÆT I Nye (Val) VÆRDIER ('[1, 2, 3, 4]'), ('[10, 11, 12, 13]'), ('“nøgle”: “værdi”') ;

Brug af '@>' operatør

Når vi først forsøger at søge efter poster med et heltal i kolonnen 'ekstra', får vi altid en fejlmeddelelse som tilføjet nedenfor.

>> VÆLG * FRA Nyt HVOR Val @> '11';

Ja. JSON er bare tekst og er ikke særlig effektiv, og den indeholder ikke operatørkonfiguration. Lad indholdet ændres til jsonb.

>> ALTER TABLE Ny ALTER COLUMN Val TYPE JSONB;

Udfør nu den samme forespørgsel i skallen, og resultatet viser en række med nummeret '11' i sit array som angivet nedenfor.

>> VÆLG * FRA Nyt HVOR Val @> '11';

Eksempel 02:

Lad os lave en tabel 'Bag', der skal bruges i vores illustrationer, indtil vi begynder at tale om de metoder og operatører, der kan bruges til datatypen PostgreSQL JSONB. En af kolonnerne, f.eks.g. 'Brand' skal være 'JSONB'-datatype som følger:

>> OPRET TABELpose (ID-serie PRIMÆR NØGLE, mærke JSONB IKKE NULL);

Vi bruger følgende SQL INSERT-erklæring til at tilføje oplysninger til PostgreSQL-tabellen 'Bag':

>> INSERT INTO Bag (Brand) VALUES ('"name": "Gucci", "color": ["red", "black"], "price": 10000, "sold": true,]') , ('"name": "Allure", "color": ["red", "Gray"], "price": 85000, "sold": false,]'), ('"name": "Kidza", "color": ["sort", "hvid"], "pris": 75000, "solgt": sandt,] ');

Du kan se, at dataene er tilføjet i form af en ordbog, f.eks.g., nøgler og værdier.

Elementerne i denne tabel 'Bag' kan ses ved hjælp af en SELECT-sætning som vist nedenfor:

>> VÆLG * FRA taske;

Brug af '->' operatør

Lad os se efter værdierne i kolonnen 'Mærke' via nøglen 'navn' ved hjælp af '->' operatoren i vores forespørgsel.  Den henter alle poster med nøglen 'navn' fra kolonnen 'Brand'. Outputtet vises i den nye kolonne 'brand'. Den endelige output vises som tilføjet nedenfor. Som du kan se, har vi tre værdier: 'Gucci, Allure, kidza' for nøglen 'navn'.

>> VÆLG mærke -> 'navn' SOM mærke FRA taske;

Brug af '->' operatør ved anvendelse af WHERE-klausul

Lad os hente alle disse rækker fra tabellen 'Taske', hvor kolonnen 'Brand' har fået værdien 'sand' for sin nøgle 'solgt'. Forespørgslen for dette valg er som følger:

>> VÆLG * FRA taske HVOR Brand -> 'solgt' = 'sandt';

Der ser du, forespørgslen hentede kun to rækker fra tabellen 'Taske', fordi den kun har to rækker med værdi 'sand' for nøglen 'solgt'.

PostgreSQL JSONB-funktioner:

Med JSONB-oplysninger synes der at være en række indbyggede metoder, der kan bruges. Lad os se på dem en efter en.

JSONB Hver funktion:

JSONB Hver funktion tager dataene og konverterer dem til nøgleværdipar. Overvej følgende forespørgsel af metoden jsonb_each, hvor vi har angivet værdier. JSON-data på højeste niveau udvides til en række nøgleværdikombinationer i resultatet. Vi har to nøgleværdipar som vist nedenfor.

>> VÆLG jsonb_each ('"name": "Allure", "sold": "true"' :: jsonb);

JSONB objektnøglefunktion:

Nu ser vi på funktionen Jsonb_object_keys. Denne funktion tager dataene og adskiller og identificerer selv nøgleværdierne i dem. Prøv nedenstående SELECT-forespørgsel, hvor vi har brugt metoden jsonb_object_keys og givet nogle værdier. Denne metode returnerer kun JSON dokumentnøgler på højeste niveau for de bestemte data som vist nedenfor.

>> VÆLG jsonb_object_keys ('"name": "kidza", "sold": "true"' :: jsonb);

JSONB Extract Path-funktion:

JSONB Extract Path-funktionen tager stien til at vise værdien i resultatet. Prøv nedenstående forespørgsel i kommandoskallen, hvor vi har angivet 'brand' som stien til JSONB jsonb_extract_path-metoden. Fra output vist i billedet nedenfor kan du se, at 'Gucci' er en returneret værdi til stien 'navn'.

>> VÆLG jsonb_extract_path ('"name": "Gucci", "sold": true' :: jsonb, 'name');

JSONB Pretty funktion:

Hvis du gerne vil vise dine JSON-filer med et letlæseligt layout, er JSONB Pretty-funktionen den bedste mulighed. Prøv nedenstående forespørgsel, så får du en simpel output.

>> VÆLG jsonb_pretty ('"name": "Allure", "sold": false' :: jsonb);

Konklusion:

Når du gemmer JSONB-oplysninger i PostgreSQL-databaser, får du det bedst mulige resultat: enkelheden og pålideligheden af ​​en NoSQL-database kombineret med fordelene til en relationsdatabase. Ved hjælp af adskillige operatører og metoder demonstrerede vi, hvordan man bruger PostgreSQL JSONB. Du kan arbejde med JSONB-data ved hjælp af vores illustrationer som reference.

Bedste kommandoliniespil til Linux
Kommandolinjen er ikke kun din største allierede, når du bruger Linux, den kan også være kilde til underholdning, fordi du kan bruge den til at spille...
Bedste apps til Gamepad Mapping til Linux
Hvis du kan lide at spille spil på Linux med en gamepad i stedet for et typisk tastatur- og musesystem, er der nogle nyttige apps til dig. Mange pc-sp...
Nyttige værktøjer til Linux-spillere
Hvis du kan lide at spille spil på Linux, er chancerne for, at du måske har brugt apps og hjælpeprogrammer som Wine, Lutris og OBS Studio for at forbe...