Kao i u 9.2 Verzija, PostgreSQL je dodao prilično osnovni JSON tip podataka. Ispod naslovnice, vrsta podataka JSON je tekst, uz provjeru je li izgled možda ispravan JSON unos sličan XML-u. Na kraju je tim otkrio da bi količinu JSON obrade i specijaliziranog pretraživanja potrebnih u PostgreSQL-u bilo teško ili racionalno provesti nad tekstualnom vrstom podataka. Stoga su stvorili binarni prikaz tipa podataka JSON s kompletnim nizom operatora i metoda. Evo tipa podataka JSONB. Tip podataka JSONB doista je svestrani binarni raspored pohrane s potpunom sposobnošću obrade, indeksiranja i pretraživanja. Kao rezultat toga, prethodno obrađuje JSON informacije u unutarnji izgled, koji ima samo jednu vrijednost po ključu i zanemaruje dodatni razmak ili udubljenje, ili možete reći uvlačenje. U ovom vodiču naučit ćete kako komunicirati s JSONB obrascem podataka u PostgreSQL-u, kao i neke korisne operatore i metode za rad s JSONB podacima.
Vrsta podataka koju ćete najvjerojatnije trebati i koju ćete odabrati je JSONB, a ne JSON rana verzija, koja se koristi samo za povratnu kompatibilnost. Dakle, otvorite naredbenu ljusku PostgreSQL i navedite imena poslužitelja, bazu podataka, port i korisničko ime.
Primjer 01:
Evo kratke ilustracije varijacija između dva tipa podataka. Moramo stvoriti tablicu "Novo" s jednim od stupaca koji mora biti "JSON" tip podataka kako slijedi:
>> STVORI TABELU Novo (ID serijski PRIMARNI KLJUČ, Val JSON);
Unesite neke vrijednosti u stupac 'Val'.
>> UMESTI U NOVE (Val) VRIJEDNOSTI ('[1, 2, 3, 4]'), ('[10, 11, 12, 13]'), ('"ključ": "vrijednost"') ;
Upotreba operatora '@>'
Jednom kada pokušamo potražiti unose s cijelim brojem na popisu stupaca 'extra', uvijek dobijemo poruku o pogrešci kao što je dodano u nastavku.
>> ODABERI * OD NOVOG GDJE Val @> '11';
Da. JSON je samo tekst i nije vrlo učinkovit i ne sadrži konfiguraciju operatora. Neka se sadržaj promijeni u jsonb.
>> ALTER TABLA Novi ALTER STOLPAC Val TIP JSONB;
Sada izvršite isti upit u ljusci, a rezultat pokazuje jedan red s brojem '11' u svom nizu kao što je dano dolje.
>> ODABERI * OD NOVOG GDJE Val @> '11';
Primjer 02:
Napravimo tablicu "Torba" koja će se koristiti u našim ilustracijama dok ne počnemo govoriti o metodama i operatorima koji se mogu koristiti za tip podataka PostgreSQL JSONB. Jedan od njegovih stupaca, npr.g. "Robna marka" mora biti "JSONB" vrsta podataka kako slijedi:
>> IZRADI TORBU TORBE (ID serijski PRIMARNI KLJUČ, marka JSONB NIJE NULL);
Koristit ćemo sljedeću SQL INSERT deklaraciju za dodavanje podataka u tablicu PostgreSQL 'Torba':
>> VRIJEME UMETNITE U VRIJEME vrećice (robne marke) ('"name": "Gucci", "color": ["red", "black"], "price": 10000, "sold": true,]')) , ('"name": "Allure", "color": ["red", "Grey"], "price": 85000, "sold": false,]'), ('"name": "Kidza", "color": ["black", "white"], "price": 75000, "sold": true,] ');Možete vidjeti da su podaci dodani u obliku rječnika, npr.g., ključevi i vrijednosti.
Elementi ove tablice 'Torba' mogu se vidjeti pomoću SELECT rečenice, kao što se vidi dolje:
>> ODABERI * IZ Torbe;
Upotreba operatora '->'
Potražimo vrijednosti u stupcu 'Brand' putem ključa 'name' pomoću operatora '->' u našem upitu. Dohvatit će sve zapise ključa 'ime' iz stupca 'Marka'. Izlaz će biti prikazan u novom stupcu 'marka'. Konačni izlaz prikazat će se kao što je dodano u nastavku. Kao što vidite, imamo tri vrijednosti: 'Gucci, Allure, kidza' za ključno 'ime'.
>> ODABERITE marku -> 'naziv' KAO marka IZ torbe;
Upotreba operatora '->' pomoću klauzule WHERE
Dohvatimo sve one retke iz tablice "Torba" gdje je stupac "Brand" za svoj ključ "prodao" dobio vrijednost "true". Upit za ovaj odabir je sljedeći:
>> ODABERITE * FROM Bag WHERE Robna marka -> 'prodano' = 'točno';Eto vidite, upit je dohvatio dva retka samo iz tablice "Torba", jer ima samo dva retka koja imaju vrijednost "true" za ključ "prodano".
PostgreSQL JSONB funkcije:
S JSONB informacijama čini se da postoji niz ugrađenih metoda koje se mogu koristiti. Pogledajmo ih jednog po jednog.
JSONB Svaka funkcija:
JSONB Svaka funkcija uzima podatke i pretvara ih u par key_value. Razmotrite sljedeći upit metode jsonb_each gdje smo naveli vrijednosti. Podaci JSON-a najviše razine proširuju se u niz kombinacija ključ / vrijednost u ishodu. Dobili smo dva para ključ / vrijednost, kao što je prikazano u nastavku.
>> ODABERITE jsonb_each ('"name": "Allure", "sold": "true"' :: jsonb);
Funkcija tipki objekta JSONB:
Sada ćemo pogledati funkciju Jsonb_object_keys. Ova funkcija uzima podatke, a sama odvaja i identificira ključne vrijednosti u njima. Isprobajte donji SELECT upit, u kojem smo koristili metodu jsonb_object_keys i dali neke vrijednosti. Ova metoda vratit će samo ključeve najviše razine JSON dokumenta za određene podatke, kao što je prikazano u nastavku.
>> ODABERITE jsonb_object_keys ('"name": "kidza", "sold": "true"' :: jsonb);
JSONB funkcija ekstrakcije puta:
JSONB Extract Path funkcija zauzima put za prikaz vrijednosti u ishodu. Isprobajte upit ispod u naredbenoj ljusci, gdje smo naveli 'brand' kao put do JSONB jsonb_extract_path metode. Iz rezultata predstavljenih na donjoj slici možete vidjeti da je 'Gucci' vraćena vrijednost staze 'ime'.
>> ODABERITE jsonb_extract_path ('"name": "Gucci", "sold": true' :: jsonb, 'name');
JSONB lijepa funkcija:
Ako svoje JSON datoteke želite prikazati s lako čitljivim izgledom, tada je najbolja opcija funkcija JSONB Pretty. Isprobajte upit u nastavku i dobit ćete jednostavan izlaz.
>> ODABERITE jsonb_pretty ('"name": "Allure", "sold": false' :: jsonb);
Zaključak:
Kada pohranjujete JSONB podatke u PostgreSQL baze podataka, dobivate najbolji mogući ishod: jednostavnost i pouzdanost NoSQL baze podataka u kombinaciji s prednostima relacijske baze podataka. Koristeći brojne operatore i metode, pokazali smo kako se koristi PostgreSQL JSONB. Moći ćete raditi s JSONB podacima koristeći naše ilustracije kao referencu.