PostgreSQL

PostgreSQL JSONB Datatyp och funktioner

PostgreSQL JSONB Datatyp och funktioner

Som i 9.2 version, PostgreSQL lade till en ganska grundläggande JSON-datatyp. Under omslaget är JSON-datatypen text, med en kontroll av att layouten kanske är korrekt JSON-ingång som liknar XML. Så småningom fann teamet att volymen av JSON-bearbetning och specialsökning som behövdes i PostgreSQL skulle ha varit svårt eller rationellt att genomdriva över en textinformationstyp. Därför skapade de en binär representation av JSON-datatypen med ett komplett utbud av operatörer och metoder. Här kommer datatypen JSONB. JSONB-datatypen är verkligen en mångsidig binär lagringslayout med fullständig bearbetnings-, indexerings- och sökfunktion. Som ett resultat förbehandlar den JSON-information till en inre layout, som bara har ett värde per nyckel och ignorerar ytterligare utrymme eller depression, eller du kan säga indragning. I den här guiden lär du dig hur du interagerar med JSONB-dataformuläret i PostgreSQL, samt några praktiska operatörer och metoder för att hantera JSONB-data.

Datatypen du troligen kommer att behöva och väljer att använda är JSONB, inte JSON tidig version, som endast används för bakåtkompatibilitet. Så öppna PostgreSQL-kommandoskalet och ange serverns namn, databas, port och användarnamn.

Exempel 01:

Här är en kort illustration av variationerna mellan de två datatyperna. Vi måste skapa en tabell "Ny" med en av dess kolumner måste vara "JSON" -datatyp enligt följande:

>> SKAPA TABELL Ny (ID-serie PRIMÄR NYCKEL, Val JSON);

Infoga några värden i kolumnen 'Val'.

>> INSÄTTA I Nya (VAL) VÄRDEN ('[1, 2, 3, 4]'), ('[10, 11, 12, 13]'), ('“tangent”: “värde”') ;

Användning av '@>' operatör

När vi försöker leta efter poster med ett heltal i kolumnlistan "extra" får vi alltid ett felmeddelande som bifogas nedan.

>> VÄLJ * FRÅN Nytt VAR Val @> '11';

Ja. JSON är bara text och är inte särskilt effektivt och innehåller inte operatörskonfiguration. Låt innehållet ändras till jsonb.

>> ALTER TABLE Ny ALTER COLUMN Val TYPE JSONB;

Kör nu samma fråga i skalet, och resultatet visar en rad med siffran '11' i sin matris enligt nedan.

>> VÄLJ * FRÅN Nytt VAR Val @> '11';

Exempel 02:

Låt oss skapa en tabell 'Bag' som ska användas i våra illustrationer tills vi börjar prata om de metoder och operatörer som kan användas för datatypen PostgreSQL JSONB. En av dess kolumner, t.ex.g. 'Märke' måste vara 'JSONB'-datatyp enligt följande:

>> CREATE TABLE Bag (ID-serie PRIMÄR NYCKEL, märke JSONB INTE NULL);

Vi använder följande SQL INSERT-deklaration för att lägga till information i PostgreSQL-tabellen 'Bag':

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

Du kan se att data har lagts till i form av en ordbok, t.ex.g., nycklar och värden.

Elementen i denna tabell "Bag" kan ses med en SELECT-mening, som visas nedan:

>> VÄLJ * FRÅN Väska;

Användning av '->' operatör

Låt oss leta efter värdena i kolumnen "Varumärke" via nyckeln "namn" med hjälp av operatören "->" i vår fråga.  Det kommer att hämta alla poster med nyckeln "namn" från kolumnen "Brand". Produktionen visas i den nya kolumnen "varumärke". Den slutliga utdata visas som bifogas nedan. Som du kan se har vi tre värden: 'Gucci, Allure, kidza' för nyckelnamnet '.

>> VÄLJ varumärke -> 'namn' SOM märke FRÅN väska;

Användning av '->' operatör med WHERE-klausul

Låt oss hämta alla dessa rader från bordet "Bag" där kolumnen "Brand" har fått värdet "true" för sin nyckel "såld". Frågan för detta val är följande:

>> VÄLJ * FRÅN Väska VAR Varumärke -> 'såld' = 'sant';

Där ser du att frågan bara hämtade två rader från tabellen "Bag" eftersom den bara har två rader med värdet "true" för nyckeln "såld".

PostgreSQL JSONB-funktioner:

Med JSONB-information verkar det finnas en mängd inbyggda metoder som kan användas. Låt oss ta en titt på dem en efter en.

JSONB Varje funktion:

JSONB Varje funktion tar data och konverterar den till key_value-paret. Tänk på följande fråga om metoden jsonb_each där vi har angett värden. JSON-data på högsta nivå utökas till en serie kombinationer av nyckel-värde i resultatet. Vi har två nyckel-värdepar, som visas nedan.

>> VÄLJ jsonb_each ('"name": "Allure", "sold": "true"' :: jsonb);

JSONB Objektnycklar Funktion:

Nu ska vi ta en titt på funktionen Jsonb_object_keys. Denna funktion tar data och separerar och identifierar i sig nyckelvärdena i den. Försök med SELECT-frågan nedan, där vi har använt metoden jsonb_object_keys och angett några värden. Den här metoden returnerar endast JSON-dokumentets nycklar på högsta nivå för specifika data, som visas nedan.

>> VÄLJ jsonb_object_keys ('"name": "kidza", "sold": "true"' :: jsonb);

JSONB Extract Path-funktion:

JSONB Extract Path-funktionen tar vägen för att visa värdet i resultatet. Prova frågan nedan i kommandoskalet, där vi har angett 'varumärke' som väg till JSONB jsonb_extract_path-metod. Från produktionen som visas i bilden nedan kan du se att 'Gucci' är ett returnerat värde till sökvägen 'namn'.

>> VÄLJ jsonb_extract_path ('"name": "Gucci", "sold": true' :: jsonb, 'name');

JSONB Pretty Function:

Om du vill visa dina JSON-filer med en lättläst layout är JSONB Pretty-funktionen det bästa alternativet. Prova nedanstående fråga så får du en enkel utdata.

>> VÄLJ jsonb_pretty ('"name": "Allure", "sold": false' :: jsonb);

Slutsats:

När du lagrar JSONB-information i PostgreSQL-databaserna får du bästa möjliga resultat: enkelheten och tillförlitligheten hos en NoSQL-databas i kombination med fördelarna med en relationsdatabas. Med hjälp av många operatörer och metoder visade vi hur man använder PostgreSQL JSONB. Du kommer att kunna arbeta med JSONB-data med våra illustrationer som referens.

Hur man installerar och spelar Doom på Linux
Introduktion till Doom Doom-serien har sitt ursprung på 90-talet efter att den ursprungliga Doom släpptes. Det blev en omedelbar hit och från den tide...
Vulkan för Linux-användare
Med varje ny generation grafikkort ser vi spelutvecklare driva gränserna för grafisk trohet och komma ett steg närmare fotorealism. Men trots all kred...
OpenTTD vs Simutrans
Att skapa din egen transportsimulering kan vara rolig, avkopplande och extremt lockande. Det är därför du måste se till att du testar så många spel so...