• postgresql
  • jsonb
  • json
  • database

PostgreSQL JSONB -tyypin hallinta yhdessä artikkelissa

Opi käyttämään PostgreSQL:n JSONB-tyyppiä JSON-datan tehokkaaseen tallentamiseen, hakemiseen ja käsittelyyn.

Yijun
Yijun
Developer

Nykyaikaisessa sovelluskehityksessä käsittelemättömän datan käsittely ja tallentaminen yleistyvät. PostgreSQL:n JSONB-tyyppi tarjoaa kehittäjille tehokkaan työkalun JSON-datan tallentamiseen ja hakemiseen. Tässä artikkelissa perehdymme JSONB-tyypin käsitteeseen ja käyttöön sekä esittelemme sen tehokkaita ominaisuuksia erityisillä koodiesimerkeillä.

Mikä on JSONB?

JSONB on PostgreSQL:n tietotyyppi, joka tallentaa JSON-datan binaarimuodossa. Toisin kuin tavallinen JSON-tyyppi, JSONB on tehokkaampi kyselyissä ja käsittelyssä. Se tukee laajaa joukkoa operaatoreja ja funktioita, jotka yksinkertaistavat JSON-datan käsittelyä. Lisäksi JSONB tukee useita indeksointityyppejä, mukaan lukien B-puu, Hash, GIN ja GiST-indeksit, jotka parantavat entisestään kyselyn suorituskykyä.

JSONB-tyypin luominen

Taulun luominen JSONB-tyypillä

Aloitetaan luomalla taulu, joka sisältää JSONB-sarakkeen. Oletetaan, että meillä on products-taulu, johon tallennamme tuotetietoja, ja tuotetiedot tallennetaan JSONB-tyyppiä käyttäen.

JSONB-datan lisääminen

Voimme lisätä JSON-dataa JSONB-kenttään yksinkertaisella INSERT-lausekkeella.

JSONB-datan hakeminen

Arvojen poimiminen JSONB-kentistä

Voimme käyttää ->>-operaattoria tekstiarvojen poimimiseen JSONB-kentästä. Seuraavassa esimerkissä näytetään, miten tuotemerkin tiedot poimitaan tuotteesta.

Sisäkkäisten arvojen poimiminen JSONB:llä

Voimme käyttää -> ja ->> -operaattoreiden yhdistelmää arvojen poimimiseen sisäkkäisestä JSON-rakenteesta. Seuraavassa esimerkissä näytetään, miten CPU-tietoja poimitaan tuotteesta.

Arvojen poimiminen JSONB-poluilla

Käyttäen #>>-operaattoria, voimme poimia arvoja tietyistä poluista JSON-datassa. Seuraavassa esimerkissä näytetään, miten tallennuskapasiteetin tiedot poimitaan.

Käyttäen @>-operaattoria sisällyttämiskyselyihin

@>-operaattori tarkistaa, sisältääkö JSONB-objekti toisen JSONB-objektin. Seuraavassa esimerkissä näytetään, miten tietyn merkin tuotteita voidaan hakea.

JSONB-datan muokkaaminen

JSONB-datan päivittäminen

Voimme käyttää jsonb_set-funktiota päivittääksemme JSONB-dataa. Tämä funktio päivittää arvon määritetyssä polussa. Seuraavassa esimerkissä näytetään, miten tallennuskapasiteetin tietoja päivitetään.

Ylätason kenttien poistaminen JSONB-datasta

Voimme käyttää --operaattoria poistaaksemme ylätason kenttiä JSONB-datasta. Tämä operaattori poistaa määritetyn avaimen JSONB-objektista. Seuraavassa esimerkissä näytetään, miten ylätason kenttä poistetaan tuotetiedoista.

Sisäkkäisten kenttien poistaminen JSONB-datasta

Voimme käyttää #--operaattoria poistaaksemme tiettyjä polkuja JSONB-datasta. Tämä operaattori poistaa avaimen määritetyssä polussa. Seuraavassa esimerkissä näytetään, miten CPU-tiedot poistetaan tuotteen spesifikaatioista.

Kehittyneet JSONB-kyselyt

JSONB-taulukoiden käyttäminen

JSONB-data voi sisältää taulukoita, ja voimme käyttää taulukkoon liittyviä operaatoreita näiden tietojen käsittelyyn. Seuraavassa esimerkissä näytetään, miten tuotteita, joilla on useita tunnisteita, voidaan tallentaa ja hakea.

Yllä olevassa esimerkissä, voit myös käyttää ?-operaattoria tarkistaaksesi, sisältääkö JSONB-taulukko tietyn elementin:

JSONB-datan yhdistäminen

Voimme käyttää ||-operaattoria yhdistääksemme kaksi JSONB-objektia. Tämä operaattori yhdistää kaksi JSONB-objektia yhdeksi. Seuraavassa esimerkissä näytetään, miten uudet spesifikaatiot yhdistetään olemassa oleviin tuotetietoihin.

JSONB-datan aggregointi

Voimme käyttää aggregaattifunktioita JSONB-datan käsittelyyn, kuten laskea tuotteiden määrä jokaiselle merkille.

JSONB-indeksointi ja suorituskykyä parantava optimointi

Parantaaksemme JSONB-datan kyselyjen suorituskykyä, voimme luoda indeksejä tiettyihin avaimiin JSONB-kentässä. Oikeanlaisen indeksin valitseminen on ratkaisevaa eri kyselytarpeisiin.

  • GIN-indeksi: Sopii monimutkaisiin kyselyihin, jotka sisältävät moniarvoista dataa, taulukoita ja kokotekstihakuja.
  • B-puu-indeksi: Sopii yksinkertaisiin avain-arvo-parikyselyihin, aluekyselyihin ja lajittelutoimintoihin.

Oikein valitut ja luodut indeksit voivat merkittävästi parantaa JSONB-datan kyselyjen suorituskykyä.

GIN-indeksin luominen

GIN-indeksit ovat ihanteellisia nopeuttamaan kyselyjä, joissa on mukana moniarvoista dataa ja taulukoita. Esimerkiksi voimme luoda GIN-indeksin tags-taulukolle, joka mainittiin aiemmin, nopeuttaaksemme kyselyjä taulukoiden elementeistä.

B-puu-indeksin luominen

Hienoille avain-arvo-parikyselyille B-puu-indeksi voi myös merkittävästi parantaa suorituskykyä. B-puu-indeksit sopivat aluekyselyihin ja lajittelutoimintoihin. Seuraava esimerkki näyttää, miten luodaan B-puu-indeksi model-avaimelle details-kentässä.

Yhteenveto

PostgreSQL:n JSONB-tyyppi tarjoaa tehokkaan ja joustavan ratkaisun JSON-datan käsittelyyn. Tässä artikkelissa esitettyjen esimerkkien avulla sinulla on nyt kattava käsitys siitä, miten JSONB-tyyppiä käytetään. Hallitsemalla nämä tekniikat voit käsitellä ja kysellä rakenteettomia tietoja tehokkaasti, parantaen sovellustesi suorituskykyä ja joustavuutta.