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.