PostgreSQL

PostgreSQL JSONB andmetüüp ja funktsioonid

PostgreSQL JSONB andmetüüp ja funktsioonid

Nagu 9-s.2 versioon, PostgreSQL lisas üsna lihtsa JSON-i andmetüübi. Katte all on JSON-tüüpi andmeteks tekst, kontrollides, kas küljendus on õige XML-iga sarnane JSON-sisend. Lõpuks leidis meeskond, et PostgreSQL-is vajamineva JSON-i töötlemise ja spetsialiseeritud otsingu mahtu oleks olnud keeruline või ratsionaalne rakendada tekstitüübi andmete puhul. Seega lõid nad JSON-i andmetüübi binaarse esituse koos kõigi operaatorite ja meetoditega. Siit tuleb JSONB andmetüüp. JSONB-i andmetüüp on tõepoolest mitmekülgne binaarne salvestuspaigutus koos täieliku töötlemise, indekseerimise ja otsimise võimalusega. Selle tulemusena töötleb see JSON-i teavet eelnevalt sisemisse paigutusse, millel on võtme kohta ainult üks väärtus ja ignoreeritakse täiendavat tühimärki või depressiooni või võite öelda taande. Selles juhendis saate teada, kuidas suhelda PostgreSQL-i JSONB-i andmevormiga, samuti mõningaid käepäraseid operaatoreid ja meetodeid JSONB-i andmete käsitlemiseks.

Andmetüüp, mida tõenäoliselt vajate ja mille valite, on JSONB, mitte JSONi varane versioon, mida kasutatakse ainult tagasiühilduvuse tagamiseks. Niisiis, avage PostgreSQL käsukoor ja sisestage serveri nimed, andmebaas, port ja kasutajanimi.

Näide 01:

Siin on lühike illustratsioon kahe andmetüübi variatsioonidest. Peame looma tabeli "Uus", mille üks veerg peab olema "JSON" andmetüüp järgmiselt:

>> CREATE TABEL Uus (ID-seeria esmane võti, Val JSON);

Sisestage veergu „Val” mõned väärtused.

>> INSERT INTO new (Val) VALUES ('[1, 2, 3, 4]'), ('[10, 11, 12, 13]'), ('"võti": "väärtus"') ;

Operaatori '@>' kasutamine

Kui proovime veergude loendis 'extra' leida täisarvuga kirjeid, saame alati veateate, nagu on lisatud allpool.

>> VALI * UUEST KUS Val @> '11';

Jah. JSON on lihtsalt tekst ja pole eriti tõhus ning see ei sisalda operaatori konfiguratsiooni. Laske sisu muuta jsonb-ks.

>> ALTER TABEL Uus ALTER COLUMN Val TYPE JSONB;

Nüüd käivitage kestas sama päring ja tulemus näitab ühte rida, mille massiivis on number 11, nagu allpool on.

>> VALI * UUEST KUS KOHAL Val @> '11';

Näide 02:

Tehkem tabel „Kott“, mida saab kasutada meie illustratsioonides, kuni hakkame rääkima PostgreSQL JSONB andmetüübi jaoks kasutatavatest meetoditest ja operaatoritest. Selle üks veerg, e.g. „Bränd” peab olema „JSONB” andmetüüp järgmiselt:

>> CREATE TABLE kott (ID seeria esmane võti, kaubamärk JSONB NOT NULL);

PostgreSQL-i tabelisse „Bag” teabe lisamiseks kasutame järgmist SQL INSERT-deklaratsiooni:

>> INSERT INTO Bag (Brand) VÄÄRTUSED ('"nimi": "Gucci", "värv": ["punane", "must"], "hind": 10000, "müüdud": tõsi,]') , ('"nimi": "Allure", "color": ["punane", "Hall"], "hind": 85000, "müüdud": vale,]'), ('"nimi": "Kidza", "värv": ["must", "valge"], "hind": 75000, "müüdud": tõsi,] ');

Näete, et andmed on lisatud sõnaraamatu kujul, nt.g., võtmed ja väärtused.

Selle tabeli 'Kott' elemente saab vaadata SELECT-lausega, nagu allpool näha:

>> VALI * KOTIST;

Operaatori '->' kasutamine

Otsime veerus „Bränd” olevad väärtused võtme „nimi” kaudu, kasutades meie päringus operaatorit „->”.  See toob kõik võtme "nimi" kirjed veerust "Brand". Väljund kuvatakse uues veerus „brand”. Lõplik väljund ilmub allpool lisatud kujul. Nagu näete, on meil kolm väärtust: „Gucci, Allure, kidza” võtme „nimi” jaoks.

>> SELECT Brand -> 'nimi' AS kaubamärk FROM Bag;

Operaatori '->' kasutamine WHERE klausli abil

Toome tabelist „Kott” kõik need read, kus veerg „Bränd” on oma võtme „müüdud” väärtuse „tõene”. Selle valiku päring on järgmine:

>> SELECT * FROM Bag WHERE kaubamärk -> 'müüdud' = 'tõene';

Seal näete, et päring tõi kaks rida ainult tabelist "kott", kuna sellel on ainult kaks rida, mille väärtus "tõene" on võtme "müüdud" jaoks.

PostgreSQL JSONB funktsioonid:

JSONB-i teabe põhjal näib olevat mitmesuguseid sisseehitatud meetodeid, mida saab kasutada. Vaatame neid ükshaaval.

JSONB iga funktsioon:

JSONB Iga funktsioon võtab andmed ja teisendab need võtmeväärtuste paariks. Mõelge järgmisele meetodi jsonb_each päringule, kus oleme andnud väärtused. JSONi kõrgeima taseme andmed laiendatakse tulemuses võtme-väärtuste kombinatsioonide reaks. Meil on kaks võtmeväärtuste paari, nagu allpool näidatud.

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

JSONB-objekti võtmete funktsioon:

Nüüd vaatame funktsiooni Jsonb_object_keys. See funktsioon võtab andmed, eraldab ja tuvastab ise nende põhiväärtused. Proovige allpool olevat päringut SELECT, milles oleme kasutanud meetodit jsonb_object_keys ja esitanud mõned väärtused. See meetod tagastab konkreetsete andmete jaoks ainult JSON-i kõrgeima taseme dokumendi võtmed, nagu allpool näidatud.

>> SELECT jsonb_object_keys ('"nimi": "kidza", "müüdud": "true"' :: jsonb);

JSONBi ekstrakti tee funktsioon:

Funktsioon JSONB Extract Path kulgeb tulemuse väärtuse näitamiseks. Proovige allolevat päringut käsukooris, kus oleme JSONB-i teekonnana esitanud "brand" jsonb_extract_path. Alloleval pildil esitatud väljundist näete, et 'Gucci' on tagastatav väärtus teele 'nimi'.

>> SELECT jsonb_extract_path ('"nimi": "Gucci", "müüdud": true' :: jsonb, 'nimi');

JSONB päris funktsioon:

Kui soovite oma JSON-faile kuvada hõlpsasti loetava paigutusega, on parim valik JSONB Pretty. Proovige allolevat päringut ja saate lihtsa väljundi.

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

Järeldus:

Kui salvestate JSONB-teavet PostgreSQL-i andmebaasidesse, saate parima võimaliku tulemuse: NoSQL-i andmebaasi lihtsus ja usaldusväärsus koos relatsiooniandmebaasi eelistega. Kasutades arvukaid operaatoreid ja meetodeid, näitasime, kuidas kasutada PostgreSQL JSONB-d. JSONB-andmetega saate töötada, kasutades meie illustratsioone viitena.

5 parimat arkaadmängu Linuxile
Tänapäeval on arvutid tõsised mängimiseks kasutatavad masinad. Kui te ei saa uut rekordit, teate, mida ma mõtlen. Selles postituses saate teada mõnda ...
Lahing Wesnothi eest 1.13.6 Areng vabastati
Lahing Wesnothi eest 1.13.6 ilmus eelmisel kuul, on 1-s kuues arendusversioon.13.x-seeria ja see pakub mitmeid täiustusi, eelkõige kasutajaliidese ja ...
League of Legendsi installimine Ubuntu 14-le.04
Kui olete League of Legends fänn, siis on see teile võimalus proovida League of Legendsit. Pange tähele, et LOL-i toetab PlayOnLinux, kui olete Linuxi...