PostgreSQL

PostgreSQL JSONB-gegevenstype en -functies

PostgreSQL JSONB-gegevenstype en -functies

Zoals in de 9.2-versie, PostgreSQL heeft een vrij eenvoudig JSON-gegevenstype toegevoegd. Onder de omslag is het JSON-type gegevens tekst, met een controle of de lay-out misschien correct is JSON-invoer vergelijkbaar met XML. Uiteindelijk ontdekte het team dat de hoeveelheid JSON-verwerking en gespecialiseerde zoekacties die nodig zijn in PostgreSQL moeilijk of rationeel te handhaven zou zijn over een tekstueel type gegevens. Daarom creëerden ze een binaire weergave van het JSON-gegevenstype met een compleet scala aan operators en methoden. Hier komt het JSONB-gegevenstype:. Het JSONB-gegevenstype is inderdaad een veelzijdige binaire opslaglay-out met volledige verwerkings-, indexerings- en zoekmogelijkheden. Dientengevolge verwerkt het JSON-informatie vooraf naar een interne lay-out, die slechts één waarde per sleutel heeft en extra witruimte of depressie negeert, of je zou kunnen zeggen inspringing. In deze handleiding leert u hoe u omgaat met het JSONB-gegevensformulier in PostgreSQL, evenals enkele handige operators en methoden voor het omgaan met JSONB-gegevens.

Het gegevenstype dat u waarschijnlijk nodig hebt en wilt gebruiken, is JSONB, niet de vroege JSON-versie, die alleen wordt gebruikt voor achterwaartse compatibiliteit. Open dus de PostgreSQL-opdrachtshell en geef de servernamen, database, poort en gebruikersnaam op server.

Voorbeeld 01:

Hier is een korte illustratie van de variaties tussen de twee gegevenstypen. We moeten een tabel 'Nieuw' maken waarvan een van de kolommen als volgt het gegevenstype 'JSON' moet zijn:

>> TABEL MAKEN Nieuw (ID seriële PRIMARY KEY, Val JSON);

Voeg enkele waarden in de kolom 'Val' in.

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

Gebruik van '@>'-operator

Zodra we proberen te zoeken naar items met een geheel getal in de 'extra' kolomlijst, krijgen we altijd een foutmelding zoals hieronder toegevoegd.

>> SELECTEER * VAN Nieuw WAAR Val @> '11';

Ja. JSON is gewoon tekst en is niet erg efficiënt, en bevat geen operatorconfiguratie. Laat de inhoud worden gewijzigd in jsonb.

>> ALTER TABEL Nieuw ALTER COLUMN Val TYPE JSONB;

Voer nu dezelfde query uit in de shell, en het resultaat toont één rij met het nummer '11' in de array zoals hieronder weergegeven.

>> KIES * VAN Nieuw WAAR Val @> '11';

Voorbeeld 02:

Laten we een tabel 'Bag' maken om te gebruiken in onze illustraties totdat we beginnen te praten over de methoden en operators die bruikbaar zijn voor het PostgreSQL JSONB-gegevenstype. Een van de kolommen, e.g. 'Merk' moet als volgt het gegevenstype 'JSONB' zijn:

>> MAAK TAFEL Tas (ID seriële PRIMAIRE SLEUTEL, Merk JSONB NIET NULL);

We gebruiken de volgende SQL INSERT-declaratie om informatie toe te voegen aan de PostgreSQL-tabel 'Bag':

>> INSERT INTO Bag(Merk) VALUES ('"name": "Gucci", "color": ["red", "black"], "price": 10000,  "sold": true,]') , ('"name": "Allure", "color": ["red", "Grey"], "price": 85000,  "sold": false,]'), ('"name": "Kidza", "kleur": ["zwart", "wit"], "prijs": 75000,  "verkocht": waar,]');

U kunt zien dat de gegevens zijn toegevoegd in de vorm van een woordenboek, e.g., sleutels en waarden.

De elementen van deze tabel 'Bag' kunnen worden bekeken met behulp van een SELECT-zin, zoals hieronder te zien is:

>> KIES * UIT Tas;

Gebruik van '->' operator

Laten we de waarden in de kolom 'Merk' zoeken via de sleutel 'naam' met behulp van de operator '->' in onze zoekopdracht.  Het haalt alle records van de sleutel 'naam' op uit de kolom 'Merk'. De output wordt getoond in de nieuwe kolom 'merk'. De uiteindelijke uitvoer zal verschijnen zoals hieronder bijgevoegd:. Zoals je kunt zien, hebben we drie waarden: 'Gucci, Allure, kidza' voor sleutel 'naam'.

>> KIES Merk -> 'naam' ALS merk VANAF Tas;

Gebruik van '->'-operator met behulp van WHERE-clausule

Laten we al die rijen uit de tabel 'Bag' halen waar de kolom 'Merk' de waarde 'true' heeft voor de sleutel 'sold'. De query voor deze selectie is als volgt:

>> SELECTEER * UIT Tas WAAR Merk -> 'sold' = 'true';

Daar zie je dat de query alleen twee rijen uit de tabel 'Bag' heeft opgehaald omdat deze slechts twee rijen heeft met de waarde 'true' voor de sleutel 'sold'.

PostgreSQL JSONB-functies:

Met JSONB-informatie lijken er verschillende ingebouwde methoden te zijn die kunnen worden gebruikt. Laten we ze een voor een bekijken.

JSONB Elke Functie:

De JSONB Each-functie neemt de gegevens en converteert deze naar het key_value-paar. Overweeg de volgende query van de jsonb_each-methode waarbij we waarden hebben opgegeven:. De JSON-gegevens op het hoogste niveau worden in de uitkomst uitgebreid tot een reeks sleutel-waarde-combinaties. We hebben twee sleutel-waardeparen, zoals hieronder weergegeven:.

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

JSONB-objecttoetsen Functie:

Nu zullen we de functie Jsonb_object_keys bekijken. Deze functie neemt de gegevens en scheidt en identificeert de sleutelwaarden erin in. Probeer de onderstaande SELECT-query, waarin we de jsonb_object_keys-methode hebben gebruikt en enkele waarden hebben opgegeven. Deze methode retourneert alleen de sleutels van het JSON-document op het hoogste niveau voor de specifieke gegevens, zoals hieronder weergegeven:.

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

JSONB Extract Pad Functie:

De JSONB Extract Path-functie neemt het pad om de waarde in uitkomst weer te geven. Probeer de onderstaande query in de opdrachtshell, waar we 'brand' hebben opgegeven als het pad naar de JSONB jsonb_extract_path-methode. Uit de uitvoer in de onderstaande afbeelding kunt u zien dat de 'Gucci' een geretourneerde waarde is naar het pad 'naam'.

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

JSONB Pretty-functie:

Als u uw JSON-bestanden met een gemakkelijk leesbare lay-out wilt weergeven, dan is de JSONB Pretty-functie de beste optie. Probeer de onderstaande query en je krijgt een eenvoudige uitvoer.

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

Conclusie:

Wanneer u JSONB-informatie opslaat in de PostgreSQL-databases, krijgt u het best mogelijke resultaat: de eenvoud en betrouwbaarheid van een NoSQL-database gecombineerd met de voordelen van een relationele database. Met behulp van talloze operators en methoden hebben we gedemonstreerd hoe de PostgreSQL JSONB . te gebruiken. Je zult in staat zijn om met JSONB-gegevens te werken met behulp van onze illustraties als referentie.

Linkermuisknop werkt niet op Windows 10
Als u een speciale muis gebruikt met uw laptop of desktopcomputer, maar de linkermuisknop werkt niet not op Windows 10/8/7 om wat voor reden dan ook, ...
Cursor springt of beweegt willekeurig tijdens het typen in Windows 10
Als u merkt dat uw muiscursor vanzelf springt of beweegt, automatisch, willekeurig tijdens het typen op een Windows-laptop of -computer, dan kunnen en...
De scrollrichting van de muis en touchpads omkeren in Windows 10
Muis en Touchpads maken computergebruik niet alleen eenvoudig, maar ook efficiënter en minder tijdrovend. We kunnen ons een leven zonder deze apparate...