„PostgreSQL“

„PostgreSQL JSONB“ duomenų tipas ir funkcijos

„PostgreSQL JSONB“ duomenų tipas ir funkcijos

Kaip ir 9.2 versija, „PostgreSQL“ pridėjo gana paprastą JSON duomenų tipą. Po viršeliu JSON duomenų tipas yra tekstas, patikrinant, ar galbūt išdėstymas yra teisingas JSON įvestis, panaši į XML. Galų gale komanda nustatė, kad JSON apdorojimo ir specializuotos paieškos, reikalingos „PostgreSQL“, apimtis būtų buvę sunku ar racionalu įgyvendinti naudojant teksto tipo duomenis. Taigi jie sukūrė dvejetainį JSON duomenų tipą su visais operatoriais ir metodais. Čia pateikiamas JSONB duomenų tipas. JSONB duomenų tipas iš tiesų yra universalus dvejetainio kaupimo išdėstymas su visišku apdorojimo, indeksavimo ir paieškos galimybe. Todėl ji iš anksto apdoroja JSON informaciją iki vidinio išdėstymo, kuriame yra tik viena reikšmė kiekvienam klavišui ir nepaisoma papildomų tarpų ar įdubimų, arba galite sakyti įtrauką. Šiame vadove sužinosite, kaip sąveikauti su JSONB duomenų forma „PostgreSQL“, taip pat keletą patogių operatorių ir metodų, kaip tvarkyti JSONB duomenis.

Duomenų tipas, kurio jums greičiausiai reikės ir kurį pasirinksite naudoti, yra JSONB, o ne ankstesnė JSON versija, naudojama tik atgaliniam suderinamumui užtikrinti. Taigi atidarykite „PostgreSQL“ komandų apvalkalą ir pateikite serverio pavadinimus, duomenų bazę, prievadą ir vartotojo vardą.

01 pavyzdys:

Čia pateikiama trumpa abiejų duomenų tipų skirtumų iliustracija. Turime sukurti lentelę „Nauja“, kurios vienas iš stulpelių turi būti „JSON“ duomenų tipas taip:

>> SUKURTI LENTEL New Nauja („ID“ serijos PAGRINDINIS RAKTAS, Val JSON);

Įterpkite keletą reikšmių į stulpelį „Val“.

>> ĮTERPKITE NAUJAS (Val) VERTYBES ('[1, 2, 3, 4]'), ('[10, 11, 12, 13]'), ('„raktas“: „reikšmė“ ’) ;

Operatoriaus „@>“ naudojimas

Kai „papildomų“ stulpelių sąraše bandysime ieškoti įrašų su sveikuoju skaičiumi, visada gausime klaidos pranešimą, pridedamą žemiau.

>> PASIRINKITE * IŠ NUO KUR „Val @> '11';

Taip. JSON yra tik tekstas ir nėra labai efektyvus, be to, jame nėra operatoriaus konfigūracijos. Tegul turinys pakeičiamas į jsonb.

>> ALTER LENTELĖ Nauja ALTER COLUMN „Val TYPE JSONB“;

Dabar vykdykite tą pačią užklausą apvalkale, o rezultatas rodo vieną eilutę, kurios masyve yra skaičius „11“, kaip nurodyta toliau.

>> PASIRINKITE * IŠ NUO KUR „Val @> '11';

02 pavyzdys:

Padarykime lentelę „Krepšys“, kuri bus naudojama iliustracijose, kol pradėsime kalbėti apie „PostgreSQL JSONB“ duomenų tipui tinkamus metodus ir operatorius. Viena jos kolonų, el.g. „Prekės ženklas“ turi būti „JSONB“ tipo duomenų tipas:

>> SUKURTI STALO krepšį (ID serijos pirminis raktas, prekės ženklas JSONB NOT NULL);

Norėdami įtraukti informaciją į „PostgreSQL“ lentelę „Bag“, naudosime šią SQL INSERT deklaraciją:

>> INSERT INTO Bag (Brand) VALUES ('"name": "Gucci", "color": ["red", "black"], "price": 10000, "parduota": true,]') , ('"name": "Allure", "color": ["raudona", "Pilka"], "kaina": 85000, "parduota": klaidinga,]'), ('"vardas": „Kidza“, „spalva“: [„juoda“, „balta“], „kaina“: 75000, „parduota“: tiesa,] ');

Galite pamatyti, kad duomenys buvo pridėti žodyno pavidalu, t.g., raktai ir reikšmės.

Šios lentelės „Krepšys“ elementus galima pamatyti naudojant SELECT sakinį, kaip parodyta žemiau:

>> SELECT * FROM krepšys;

Operatoriaus '->' naudojimas

Ieškokime reikšmių stulpelyje „Prekės ženklas“ naudodami raktą „vardas“ naudodami užklausoje operatorių „->“.  Jis atneš visus raktų „pavadinimas“ įrašus iš stulpelio „Prekės ženklas“. Rezultatai bus rodomi naujame stulpelyje „prekės ženklas“. Galutinis rezultatas bus pateiktas taip, kaip nurodyta toliau. Kaip matote, mes turime tris vertybes: „Gucci, Allure, kidza“ raktui „vardas“.

>> SELECT Brand -> 'vardas' AS prekės ženklas FROM Bag;

Operatoriaus '->' naudojimas naudojant WHERE sąlygą

Paimkime visas tas eilutes iš lentelės „Krepšys“, kur stulpelis „Prekės ženklas“ savo raktui „parduotas“ turi vertę „tiesa“. Šio pasirinkimo užklausa yra tokia:

>> PASIRINKITE * IŠ krepšio WHERE prekės ženklas -> 'parduota' = 'tiesa';

Čia matote, kad užklausa pateikė dvi eilutes tik iš lentelės „Krepšys“, nes joje yra tik dvi eilutės, kurių reikšmė „tiesa“ raktui „parduota“.

„PostgreSQL JSONB“ funkcijos:

Naudojant JSONB informaciją, atrodo, kad yra įvairių įdiegtų metodų, kuriuos galima naudoti. Pažvelkime į juos po vieną.

Kiekviena funkcija:

JSONB Kiekviena funkcija paima duomenis ir paverčia juos „key_value“ pora. Apsvarstykite šią metodo „jsonb_each“ užklausą, kur mes pateikėme reikšmes. Aukščiausio lygio JSON duomenys išplečiami į svarbiausių verčių rezultatų derinių seriją. Mes turime dvi pagrindines vertės poras, kaip parodyta žemiau.

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

JSONB objekto raktų funkcija:

Dabar mes pažvelgsime į „Jsonb_object_keys“ funkciją. Ši funkcija paima duomenis ir pati atskiria bei identifikuoja juose esančias pagrindines vertes. Išbandykite žemiau pateiktą SELECT užklausą, kurioje mes naudojome jsonb_object_keys metodą ir pateikėme keletą reikšmių. Šis metodas grąžins JSON aukščiausio lygio dokumento raktus tik tam tikriems duomenims, kaip parodyta žemiau.

>> PASIRINKITE jsonb_object_keys ('"vardas": "kidza", "parduotas": "tiesa"' :: jsonb);

JSONB ištraukimo kelio funkcija:

„JSONB Extract Path“ funkcija eina keliu, kad parodytų rezultato vertę. Išbandykite žemiau pateiktą užklausą komandų apvalkale, kur mes nurodėme „prekės ženklą“ kaip kelią į JSONB metodą jsonb_extract_path metodas. Iš išvesties, pateiktos žemiau esančiame paveikslėlyje, galite pamatyti, kad „Gucci“ yra grąžinta kelio „name“ vertė.

>> PASIRINKITE jsonb_extract_path ('"name": "Gucci", "parduota": true' :: jsonb, 'vardas');

JSONB Pretty funkcija:

Jei norite rodyti JSON failus lengvai įskaitomu išdėstymu, tai geriausia parinktis „JSONB Pretty“. Išbandykite žemiau pateiktą užklausą ir gausite paprastą išvestį.

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

Išvada:

Kai JSONB informaciją saugote „PostgreSQL“ duomenų bazėse, gausite geriausią įmanomą rezultatą: „NoSQL“ duomenų bazės paprastumą ir patikimumą kartu su reliacinės duomenų bazės pranašumais. Naudodami daugybę operatorių ir metodų, mes parodėme, kaip naudoti „PostgreSQL JSONB“. Galėsite dirbti su JSONB duomenimis naudodami mūsų iliustracijas kaip nuorodą.

Naudingi įrankiai „Linux“ žaidėjams
Jei jums patinka žaisti žaidimus „Linux“ sistemoje, yra tikimybė, kad galbūt naudojote tokias programas ir įrankius kaip „Wine“, „Lutris“ ir „OBS Stud...
„HD Remastered“ žaidimai, skirti „Linux“, kurie niekada anksčiau nebuvo išleisti „Linux“
Daugelis žaidimų kūrėjų ir leidėjų siūlo senų žaidimų HD remasterį, kad prailgintų franšizės laiką. Prašome gerbėjų, prašančių suderinamumo su šiuolai...
Kaip naudoti „AutoKey“, norint automatizuoti „Linux“ žaidimus
„AutoKey“ yra darbalaukio automatizavimo įrankis, skirtas „Linux“ ir „X11“, užprogramuotas „Python 3“, „GTK“ ir „Qt“. Naudodami scenarijų ir „MACRO“ f...