PostgreSQL

Dátový typ a funkcie PostgreSQL JSONB

Dátový typ a funkcie PostgreSQL JSONB

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.

Hry 5 najlepších arkádových hier pre Linux
5 najlepších arkádových hier pre Linux
V dnešnej dobe sú počítače vážne stroje používané na hranie hier. Ak nemôžete dosiahnuť nové najvyššie skóre, budete vedieť, čo tým myslím. V tomto pr...
Hry Battle For Wesnoth 1.13.6 Vývoj uvoľnený
Battle For Wesnoth 1.13.6 Vývoj uvoľnený
Battle For Wesnoth 1.13.6 vydané minulý mesiac, je šiestym vývojovým vydaním v 1.13.séria x a prináša množstvo vylepšení, najmä používateľského rozhra...
Hry Ako nainštalovať League Of Legends na Ubuntu 14.04
Ako nainštalovať League Of Legends na Ubuntu 14.04
Ak ste fanúšikom League of Legends, potom je to pre vás príležitosť otestovať spustenie League of Legends. Upozorňujeme, že program PlayOnLinux podpor...