Kuten 9.2-versio, PostgreSQL lisäsi melko yksinkertaisen JSON-tietotyypin. Kannen alla JSON-tyyppinen tieto on tekstiä, ja tarkista, että asettelu on ehkä oikea JSON-syöte, joka on samanlainen kuin XML. Lopulta työryhmä havaitsi, että PostgreSQL: ssä tarvittavan JSON-käsittelyn ja erikoistuneen haun määrää olisi ollut vaikea tai järkevä valvoa tekstityyppisten tietojen suhteen. Siksi he loivat binäärisen esityksen JSON-tietotyypistä täydellä operaattorivalikoimalla. Tässä tulee JSONB-tietotyyppi. JSONB-tietotyyppi on todellakin monipuolinen binaarinen tallennustila, jossa on täydellinen käsittely, indeksointi ja hakuominaisuudet. Seurauksena on, että se esikäsittelee JSON-tiedot sisäiseksi asetteluksi, jolla on vain yksi arvo avainta kohden ja joka jättää huomiotta ylimääräisen välilyönnin tai painotuksen, tai saatat sanoa sisennyksen. Tässä oppaassa opit käyttämään JSONB-tietolomaketta PostgreSQL: ssä sekä joitain käteviä operaattoreita ja menetelmiä JSONB-tietojen käsittelemiseksi.
Tietotyyppi, jota todennäköisesti tarvitset ja jonka haluat valita, on JSONB, ei JSON-varhaisversio, jota käytetään vain taaksepäin yhteensopivuuteen. Joten avaa PostgreSQL-komentokuori ja anna palvelimen nimet, tietokanta, portti ja käyttäjänimi.
Esimerkki 01:
Tässä on lyhyt kuvaus kahden tietotyypin vaihteluista. Meidän on luotava taulukko Uusi, jonka yhden sarakkeista on oltava JSON-tietotyyppi seuraavasti:
>> LUO TAULUKKO Uusi (ID-sarja ENSISIJAINEN AVAIN, Val JSON);
Lisää joitain arvoja sarakkeeseen Val.
>> INSERT INTO New (Val) ARVOT ('[1, 2, 3, 4]'), ('[10, 11, 12, 13]'), ('"avain": "arvo"') ;
Käyttäjän '@>' käyttö
Kun yritämme etsiä kokonaislukuja sisältäviä merkintöjä ylimääräisten sarakkeiden luettelosta, saamme aina alla olevan virhesanoman.
>> VALITSE * UUDESTA MISSÄ Val @> '11';
Joo. JSON on vain teksti eikä ole kovin tehokas, eikä se sisällä operaattorin määrityksiä. Anna sisällön muuttaa jsonb: ksi.
>> ALTER-TAULUKKO Uusi ALTER-SARAKE Val TYPE JSONB;
Suorita nyt sama kysely kuoressa, ja tulos näyttää yhden rivin, jonka taulukossa on numero '11', kuten alla on esitetty.
>> VALITSE * UUDESTA MISSÄ Val @> '11';
Esimerkki 02:
Tehkäämme taulukossa oleva laukku, jota käytetään kuvissamme, kunnes alamme puhua PostgreSQL JSONB -tietotyypille käytettävissä olevista menetelmistä ja operaattoreista. Yksi sen sarakkeista, e.g. Tuotemerkin on oltava JSONB-tietotyyppi seuraavasti:
>> LUO PÖYTÄLAUKKU (ID-sarjan PRIMARY KEY, merkki JSONB NOT NULL);
Käytämme seuraavaa SQL INSERT -lauseketta tietojen lisäämiseen PostgreSQL-taulukkoon "Bag":
>> INSERT INTO Bag (Brand) ARVOT ('"nimi": "Gucci", "väri": ["punainen", "musta"], "hinta": 10000, "myyty": tosi,]') , ('"nimi": "viehättää", "väri": ["punainen", "harmaa"], "hinta": 85000, "myyty": väärä,]'), ('"nimi": "Kidza", "color": ["musta", "valkoinen"], "hinta": 75000, "myyty": totta,] ');Voit nähdä, että tiedot on lisätty sanakirjan muodossa, esim.g., avaimet ja arvot.
Tämän taulukon 'Laukku' elementit voidaan nähdä SELECT-lauseella, kuten alla:
>> SELECT * FROM laukku;
Käyttäjän '->' käyttö
Etsitään arvot Brand-sarakkeesta avaimen 'name' kautta käyttämällä kyselyssä operaattoria '->'. Se hakee kaikki avaimen 'nimi' tietueet sarakkeesta 'Brand'. Tuotos näkyy uudessa sarakkeessa 'brand'. Lopullinen tulos näkyy liitteenä alla. Kuten näette, meillä on kolme arvoa: Gucci, Allure, kidza avainnimelle.
>> SELECT Brand -> 'nimi' AS-merkki FROM Bag;
Operaattorin '-> käyttö WHERE-lausekkeen avulla
Haetaan kaikki ne rivit taulukosta 'Laukku', joissa Brand-sarake on saanut arvon 'true' avaimelle 'myydään'. Tämän valinnan kysely on seuraava:
>> SELECT * FROM Bag WHERE Tuotemerkki -> 'myyty' = 'tosi';Sieltä näet, kysely noutaa kaksi riviä vain taulukosta 'Laukku', koska sillä on vain kaksi riviä, joiden arvo 'tosi' avaimelle 'myyty'.
PostgreSQL JSONB -toiminnot:
JSONB-tietojen avulla näyttää olevan erilaisia sisäänrakennettuja menetelmiä, joita voidaan käyttää. Katsotaanpa niitä yksi kerrallaan.
JSONB Jokainen toiminto:
JSONB Jokainen toiminto vie tiedot ja muuntaa ne avainarvopariksi. Harkitse seuraavaa jsonb_each-menetelmän kyselyä, jossa olemme antaneet arvoja. Korkeimman tason JSON-tiedot laajennetaan sarjaan avain-arvo-yhdistelmiä tuloksessa. Meillä on kaksi avainarvoparia alla olevan kuvan mukaisesti.
>> SELECT jsonb_each ('"name": "Allure", "sold": "true"' :: jsonb);
JSONB-objektinäppäintoiminto:
Katsotaan nyt Jsonb_object_keys-funktiota. Tämä toiminto ottaa datan ja erottaa ja tunnistaa itse siinä olevat avainarvot. Kokeile alla olevaa SELECT-kyselyä, jossa olemme käyttäneet jsonb_object_keys-menetelmää ja antaneet joitain arvoja. Tämä menetelmä palauttaa vain JSON: n korkeimman tason asiakirjan avaimet tietyille tiedoille, kuten alla on esitetty.
>> SELECT jsonb_object_keys ('"nimi": "kidza", "myyty": "true"' :: jsonb);
JSONB-purkutien toiminto:
JSONB Extract Path -toiminto näyttää polun näyttää arvon lopputuloksessa. Kokeile alla olevaa kyselyä komentokuoressa, jossa olemme antaneet JSONB-poluksi polun 'brand' jsonb_extract_path. Alla olevan kuvan tuloksesta näet, että Gucci on palautettu arvo polulle 'name'.
>> SELECT jsonb_extract_path ('"name": "Gucci", "sold": true' :: jsonb, 'name');
JSONB Pretty -toiminto:
Jos haluat näyttää JSON-tiedostosi helposti luettavalla asettelulla, JSONB Pretty -toiminto on paras vaihtoehto. Kokeile alla olevaa kyselyä, niin saat yksinkertaisen tuloksen.
>> SELECT jsonb_pretty ('"name": "Allure", "sold": false' :: jsonb);
Päätelmä:
Kun tallennat JSONB-tietoja PostgreSQL-tietokantoihin, saat parhaan mahdollisen lopputuloksen: NoSQL-tietokannan yksinkertaisuus ja luotettavuus yhdistettynä relaatiotietokannan etuihin. Lukuisia operaattoreita ja menetelmiä käyttämällä osoitimme, miten PostgreSQL JSONB: ää käytetään. Pystyt työskentelemään JSONB-datan kanssa käyttämällä viitekuviamme.