PostgreSQL

Datový typ a funkce PostgreSQL JSONB

Datový typ a funkce PostgreSQL JSONB

Stejně jako v 9.2 Verze PostgreSQL přidala zcela základní datový typ JSON. Pod obálkou je typem dat JSON text, s kontrolou, zda je možná správné rozložení JSON vstupu podobné XML. Nakonec tým zjistil, že objem zpracování JSON a specializovaného vyhledávání potřebného v PostgreSQL by bylo obtížné nebo racionální vynutit přes textový typ dat. Proto vytvořili binární reprezentaci datového typu JSON s kompletní řadou operátorů a metod. Přichází datový typ JSONB. Datový typ JSONB je skutečně univerzální binární úložiště s kompletním zpracováním, indexováním a schopností vyhledávání. Ve výsledku předspracuje informace JSON na vnitřní rozložení, které má na klíč pouze jednu hodnotu a ignoruje další mezery nebo deprese, nebo můžete říci odsazení. V této příručce se naučíte, jak komunikovat s datovým formulářem JSONB v PostgreSQL, stejně jako některé užitečné operátory a metody pro práci s daty JSONB.

Datový typ, který s největší pravděpodobností budete potřebovat a rozhodnete se použít, je JSONB, nikoli dřívější verze JSON, která se používá pouze pro zpětnou kompatibilitu. Takže otevřete příkazový shell PostgreSQL a uveďte jména serveru, databázi, port a uživatelské jméno.

Příklad 01:

Zde je krátká ilustrace variací mezi těmito dvěma datovými typy. Musíme vytvořit tabulku 'New' s jedním z jejích sloupců musí být 'JSON' datový typ takto:

>> CREATE TABLE New (ID serial PRIMARY KEY, Val JSON);

Vložte některé hodnoty do sloupce 'Val'.

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

Použití operátoru „@>“

Jakmile se pokusíme vyhledat záznamy s celým číslem v seznamu sloupců „extra“, vždy se zobrazí chybová zpráva, jak je uvedeno níže.

>> SELECT * FROM New WHERE Val @> '11';

Ano. JSON je jen text a není příliš efektivní a neobsahuje konfiguraci operátora. Nechte obsah změnit na jsonb.

>> ALTER TABLE New ALTER COLUMN Val TYPE JSONB;

Nyní proveďte stejný dotaz v shellu a výsledek ukazuje jeden řádek, který má ve svém poli číslo '11', jak je uvedeno níže.

>> SELECT * FROM New WHERE Val @> '11';

Příklad 02:

Vytvořme tabulku „Bag“, která bude použita v našich ilustracích, dokud nezačneme hovořit o metodách a operátorech použitelných pro datový typ PostgreSQL JSONB. Jeden z jeho sloupců, např.G. „Značka“ musí být datový typ „JSONB“ takto:

>> CREATE TABLE Bag (ID serial PRIMARY KEY, Brand JSONB NOT NULL);

K přidání informací do tabulky „Bag“ PostgreSQL použijeme následující deklaraci 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": ["black", "white"], "price": 75000, "sold": true,] ');

Vidíte, že data byla přidána ve formě slovníku, např.G., klíče a hodnoty.

Prvky této tabulky „Bag“ lze zobrazit pomocí věty SELECT, jak je vidět níže:

>> VYBRAT * Z FOTKY;

Použití operátoru „->“

Podívejme se na hodnoty ve sloupci „Značka“ pomocí klíče „název“ pomocí operátoru „->“ v našem dotazu.  Načte všechny záznamy klíče 'název' ze sloupce 'Značka'. Výstup se zobrazí v novém sloupci „značka“. Konečný výstup se zobrazí, jak je uvedeno níže. Jak vidíte, máme tři hodnoty: „Gucci, Allure, kidza“ pro klíč „name“.

>> VÝBĚR ZNAČKY -> 'název' JAKO značka FROM Bag;

Použití operátoru '->' pomocí klauzule WHERE

Načtěte všechny řádky z tabulky „Bag“, kde má sloupec „Brand“ pro svůj klíč „sold“ hodnotu „true“. Dotaz na tento výběr je následující:

>> SELECT * FROM Bag WHERE Brand -> 'sold' = 'true';

Tam vidíte, že dotaz přinesl dva řádky pouze z tabulky „Bag“, protože má pouze dva řádky s hodnotou „true“ pro klíč „sold“.

Funkce PostgreSQL JSONB:

S informacemi JSONB se zdá, že existuje celá řada vestavěných metod, které lze použít. Pojďme se na ně podívat jeden po druhém.

Každá funkce JSONB:

Každá funkce JSONB převezme data a převede je na pár key_value. Zvažte následující dotaz metody jsonb_each, kde jsme poskytli hodnoty. Data JSON na nejvyšší úrovni se ve výsledku rozšíří do řady kombinací klíč – hodnota. Máme dva páry klíč – hodnota, jak je znázorněno níže.

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

Funkce objektů JSONB:

Nyní se podíváme na funkci Jsonb_object_keys. Tato funkce přebírá data a sama v nich odděluje a identifikuje klíčové hodnoty. Zkuste níže vybraný dotaz, ve kterém používáme metodu jsonb_object_keys a poskytujeme některé hodnoty. Tato metoda vrátí pouze klíče dokumentu nejvyšší úrovně JSON pro konkrétní data, jak je znázorněno níže.

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

Funkce extrakční cesty JSONB:

Funkce JSONB Extract Path má cestu k zobrazení hodnoty ve výsledku. Vyzkoušejte níže uvedený dotaz v příkazovém prostředí, kde jsme jako cestu k metodě JSONB jsonb_extract_path poskytli „značku“. Z výstupu uvedeného na obrázku níže můžete vidět, že výraz „Gucci“ je vrácená hodnota cesty „name“.

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

Funkce JSONB Pretty:

Pokud chcete zobrazit soubory JSON se snadno čitelným rozložením, je nejlepší volbou funkce JSONB Pretty. Zkuste následující dotaz a získáte jednoduchý výstup.

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

Závěr:

Když ukládáte informace JSONB do databází PostgreSQL, získáte nejlepší možný výsledek: jednoduchost a spolehlivost databáze NoSQL v kombinaci s výhodami relační databáze. S využitím mnoha operátorů a metod jsme demonstrovali, jak používat PostgreSQL JSONB. Budete schopni pracovat s daty JSONB pomocí našich ilustrací jako reference.

Hry Porty komerčních her s otevřeným zdrojovým kódem
Porty komerčních her s otevřeným zdrojovým kódem
Zdarma, s otevřeným zdrojovým kódem a multiplatformní herní enginy lze hrát staré i některé z poměrně nedávných herních titulů. Tento článek uvede sez...
Hry Nejlepší hry z příkazového řádku pro Linux
Nejlepší hry z příkazového řádku pro Linux
Příkazový řádek není při používání Linuxu jen vaším největším spojencem - může být také zdrojem zábavy, protože jej můžete použít k hraní mnoha zábavn...
Hry Nejlepší aplikace pro mapování gamepadu pro Linux
Nejlepší aplikace pro mapování gamepadu pro Linux
Pokud rádi hrajete hry na Linuxu s gamepadem místo typického vstupního systému pro klávesnici a myš, máte k dispozici několik užitečných aplikací. Mno...