Rovnako ako v 9.Verzia 2, PostgreSQL pridal celkom základný datový typ JSON. Pod obalom sú typom údajov JSON text, s kontrolou, či je pravdepodobne rozloženie správne zadané ako formát XML. Tím nakoniec zistil, že objem spracovania JSON a špecializovaného vyhľadávania potrebný v PostgreSQL by bolo ťažké alebo racionálne presadiť cez textový typ údajov. Preto vytvorili binárnu reprezentáciu dátového typu JSON s kompletným rozsahom operátorov a metód. Prichádza dátový typ JSONB. Dátový typ JSONB je skutočne všestranné rozloženie binárneho ukladania s možnosťou úplného spracovania, indexovania a vyhľadávania. Vo výsledku predspracuje informácie JSON na vnútorné rozloženie, ktoré má iba jednu hodnotu na kľúč a ignoruje ďalšie medzery alebo depresie, alebo môžete povedať odsadenie. V tejto príručke sa naučíte, ako interagovať s dátovým formulárom JSONB v PostgreSQL, ako aj niektorými praktickými operátormi a metódami na prácu s dátami JSONB.
Dátový typ, ktorý s najväčšou pravdepodobnosťou budete vyžadovať a rozhodnete sa použiť, je JSONB, nie skorá verzia JSON, ktorá sa používa iba na spätnú kompatibilitu. Takže otvorte príkazový shell PostgreSQL a zadajte názvy servera, databázu, port a používateľské meno.
Príklad 01:
Tu je krátka ilustrácia rozdielov medzi týmito dvoma typmi údajov. Musíme vytvoriť tabuľku 'New' s jedným z jej stĺpcov, ktorý musí byť 'JSON' dátový typ takto:
>> CREATE TABLE New (ID serial PRIMARY KEY, Val JSON);
Vložte niektoré hodnoty do stĺpca „Val“.
>> INSERT INTO New (Val) VALUES ('[1, 2, 3, 4]'), ('[10, 11, 12, 13]'), ('„key“: „value“') ;
Použitie operátora „@>“
Keď sa pokúsime v zozname stĺpcov „extra“ vyhľadať položky s celým číslom, vždy sa zobrazí chybové hlásenie, ako je uvedené nižšie.
>> SELECT * FROM New WHERE Val @> '11';
Áno. JSON je iba text, nie je príliš efektívny a neobsahuje konfiguráciu operátora. Nech sa obsah zmení na jsonb.
>> ALTER TABLE Nový ALTER COLUMN Val TYPE JSONB;
Teraz vykonajte ten istý dotaz v škrupine a výsledok ukazuje, že jeden riadok má v poli číslo '11', ako je uvedené nižšie.
>> SELECT * FROM New WHERE Val @> '11';
Príklad 02:
Vytvorme tabuľku „Bag“, ktorá sa bude používať v našich ilustráciách, až kým nezačneme hovoriť o metódach a operátoroch použiteľných pre dátový typ PostgreSQL JSONB. Jeden z jeho stĺpcov, napr.g. „Značka“ musí byť dátový typ „JSONB“ nasledovne:
>> CREATE TABLE Bag (ID serial PRIMARY KEY, značka JSONB NIE NULL);
Na doplnenie informácií do tabuľky „Bag“ v tabuľke PostgreSQL použijeme nasledujúcu deklaráciu SQL INSERT:
>> INSERT INTO Bag (Brand) VALUES ('"name": "Gucci", "color": ["red", "black"], "price": 10 000, "sold": true,]') , ('"name": "Allure", "color": ["red", "Gray"], "price": 85000, "sold": false,]'), ('"name": "Kidza", "color": ["čierna", "biela"], "cena": 75000, "predané": true,] ');Vidíte, že údaje boli pridané vo forme slovníka, napr.g., kľúče a hodnoty.
Prvky tejto tabuľky „Bag“ možno vidieť pomocou vety SELECT, ako je vidieť nižšie:
>> SELECT * FROM Bag;
Použitie operátora „->“
Pozrime sa na hodnoty v stĺpci „Značka“ pomocou kľúča „názov“ pomocou operátora „->“ v našom dopyte. Načíta všetky záznamy kľúča „meno“ zo stĺpca „Značka“. Výstup sa zobrazí v novom stĺpci „značka“. Konečný výstup sa zobrazí ako pripojený nižšie. Ako vidíte, máme tri hodnoty: „Gucci, Allure, kidza“ pre kľúč „name“.
>> VYBRAŤ značku -> „pomenovať“ AS AS FROM Bag;
Použitie operátora „->“ pomocou klauzuly WHERE
Načítajme všetky tie riadky z tabuľky „Bag“, kde má stĺpec „Brand“ pre svoj kľúč „sold“ hodnotu „true“. Dotaz na tento výber je nasledovný:
>> SELECT * FROM Bag WHERE Značka -> 'sold' = 'true';Tam vidíte, dopyt priniesol dva riadky iba z tabuľky „Bag“, pretože má iba dva riadky s hodnotou „true“ pre kľúč „sold“.
Funkcie PostgreSQL JSONB:
S informáciami JSONB sa zdá, že je možné použiť celý rad zabudovaných metód. Pozrime sa na ne jeden po druhom.
Každá funkcia JSONB:
Každá funkcia JSONB vezme údaje a prevedie ich na pár key_value. Zvážte nasledujúci dotaz metódy jsonb_each, kde sme poskytli hodnoty. Údaje JSON na najvyššej úrovni sa vo výsledku rozšíria do série kombinácií kľúč - hodnota. Máme dva páry kľúč - hodnota, ako je uvedené nižšie.
>> SELECT jsonb_each ('"name": "Allure", "sold": "true"' :: jsonb);
Funkcia JSONB Object Keys:
Teraz sa pozrieme na funkciu Jsonb_object_keys. Táto funkcia preberá údaje a sama v nich oddeľuje a identifikuje kľúčové hodnoty. Vyskúšajte nižšie vybraný dotaz, v ktorom používame metódu jsonb_object_keys a uvádzame niektoré hodnoty. Táto metóda vráti iba kľúče dokumentu najvyššej úrovne JSON pre konkrétne údaje, ako je uvedené nižšie.
>> SELECT jsonb_object_keys ('"name": "kidza", "sold": "true"' :: jsonb);
Funkcia extrakčnej cesty JSONB:
Funkcia cesty extraktu JSONB sa vydá cestou, ktorá ukáže výslednú hodnotu. Vyskúšajte nasledujúci dotaz v príkazovom paneli, kde sme ako cestu k metóde JSONB jsonb_extract_path uviedli „značku“. Z výstupu uvedeného na obrázku nižšie môžete vidieť, že výraz „Gucci“ je vrátená hodnota cesty „name“.
>> SELECT jsonb_extract_path ('"name": "Gucci", "sold": true' :: jsonb, 'name');
Funkcia JSONB Pretty:
Ak chcete zobraziť svoje súbory JSON s ľahko čitateľným rozložením, potom je najlepšou voľbou funkcia JSONB Pretty. Vyskúšajte nasledujúci dotaz a získate jednoduchý výstup.
>> SELECT jsonb_pretty ('"name": "Allure", "sold": false' :: jsonb);
Záver:
Keď uložíte informácie JSONB do databáz PostgreSQL, získate najlepší možný výsledok: jednoduchosť a spoľahlivosť NoSQL databázy v kombinácii s výhodami relačnej databázy. Pomocou mnohých operátorov a metód sme si ukázali, ako používať PostgreSQL JSONB. Budete schopní pracovať s údajmi JSONB pomocou našich ilustrácií ako referencie.