PostgreSQL

Tip de date și funcții PostgreSQL JSONB

Tip de date și funcții PostgreSQL JSONB

Ca și în 9.Versiunea 2, PostgreSQL a adăugat un tip de date JSON destul de simplu. Sub copertă, tipul de date JSON este text, cu o verificare a faptului că aspectul este corect intrarea JSON similară cu XML. În cele din urmă, echipa a descoperit că volumul de procesare JSON și căutare specializată necesare în PostgreSQL ar fi fost dificil sau rațional de aplicat asupra unui tip textual de date. Prin urmare, au creat o reprezentare binară a tipului de date JSON cu o gamă completă de operatori și metode. Aici vine tipul de date JSONB. Tipul de date JSONB este într-adevăr un aspect versatil de stocare binară cu capacitate completă de procesare, indexare și căutare. Ca urmare, pre-procesează informațiile JSON într-un aspect interior, care are o singură valoare pe cheie și ignoră spațiul alb suplimentar sau depresia, sau puteți spune indentare. În cadrul acestui ghid, veți afla cum să interacționați cu formularul de date JSONB în PostgreSQL, precum și cu câțiva operatori și metode utile pentru tratarea datelor JSONB.

Tipul de date pe care cel mai probabil îl veți solicita și pe care alegeți să îl utilizați este JSONB, nu versiunea anterioară JSON, care este utilizată numai pentru compatibilitate inversă. Deci, deschideți shell-ul de comandă PostgreSQL și furnizați numele serverului, baza de date, portul și numele de utilizator.

Exemplul 01:

Iată o scurtă ilustrare a variațiilor dintre cele două tipuri de date. Trebuie să creăm un tabel „Nou” cu una dintre coloanele sale trebuie să fie tipul de date „JSON” după cum urmează:

>> CREARE TABEL Nou (ID-cheie PRIMARĂ cheie, Val JSON);

Introduceți câteva valori în coloana „Val”.

>> INSERĂ ÎN VALOARE noi (Val) ('[1, 2, 3, 4]'), ('[10, 11, 12, 13]'), ('„cheie”: „valoare”') ;

Utilizarea operatorului „@>”

Odată ce încercăm să căutăm intrări cu un număr întreg în lista de coloane „suplimentare”, primim întotdeauna un mesaj de eroare așa cum se adaugă mai jos.

>> SELECT * DE NOI UNDE Val @> '11';

da. JSON este doar text și nu este foarte eficient și nu conține configurația operatorului. Lăsați conținutul să fie schimbat în jsonb.

>> ALTER TABLE Nou ALTER COLUMN Val TIP JSONB;

Acum executați aceeași interogare în shell și rezultatul arată un rând cu numărul '11' în matricea sa, așa cum este dat mai jos.

>> SELECT * DIN Nou WHERE Val @> '11';

Exemplul 02:

Să facem un tabel „Bag” pentru a fi folosit în ilustrațiile noastre până când începem să vorbim despre metodele și operatorii utilizabili pentru tipul de date PostgreSQL JSONB. Una dintre coloanele sale, e.g. „Marca” trebuie să fie tipul de date „JSONB” după cum urmează:

>> CREAȚI Geantă de masă (ID cheie de serie PRIMARĂ, marca JSONB NU NULĂ);

Vom folosi următoarea declarație SQL INSERT pentru a adăuga informații în tabelul PostgreSQL „Bag”:

>> INSERT INTO Bag (Brand) VALUE ('"name": "Gucci", "color": ["red", "black"], "price": 10000, "sold": true,]') , ('"name": "Allure", "color": ["red", "Gray"], "price": 85000, "sold": false,]'), ('"name": "Kidza", "color": ["negru", "alb"], "preț": 75000, "vândut": adevărat,] ');

Puteți vedea că datele au fost adăugate sub formă de dicționar, e.g., chei și valori.

Elementele acestui tabel „Bag” pot fi văzute folosind o propoziție SELECT, așa cum se vede mai jos:

>> SELECT * DIN Geantă;

Utilizarea operatorului '->'

Să căutăm valorile din coloana „Marcă” prin intermediul cheii „nume” folosind operatorul „->” din interogarea noastră.  Va prelua toate înregistrările cheii „nume” din coloana „Marcă”. Rezultatul va fi afișat în noua coloană „marca”. Rezultatul final va apărea după cum se adaugă mai jos. După cum puteți vedea, avem trei valori: „Gucci, Allure, kidza” pentru cheia „nume”.

>> SELECTAȚI marca -> „nume” ca marcă DIN Bag;

Utilizarea operatorului „->” care utilizează clauza WHERE

Să preluăm toate acele rânduri din tabelul „Bag” în care coloana „Brand” are valoarea „true” pentru cheia sa „vândută”. Interogarea pentru această selecție este următoarea:

>> SELECTEAZĂ * DIN Geantă UNDE Marcă -> 'sold' = 'true';

Vedeți, interogarea a preluat două rânduri numai din tabelul „Bag”, deoarece are doar două rânduri cu valoarea „true” pentru cheia „vândut”.

Funcții PostgreSQL JSONB:

Cu informațiile JSONB, par să existe o varietate de metode încorporate care pot fi utilizate. Să le aruncăm o privire una câte una.

Fiecare funcție JSONB:

Fișierul JSONB Fiecare funcție preia datele și le convertește în perechea cheie-valoare. Luați în considerare următoarea interogare a metodei jsonb_each în care am furnizat valori. Datele JSON de cel mai înalt nivel sunt extinse într-o serie de combinații cheie-valoare în rezultat. Avem două perechi cheie-valoare, așa cum se arată mai jos.

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

Funcția tastelor obiect JSONB:

Acum, vom arunca o privire la funcția Jsonb_object_keys. Această funcție preia datele și separă și identifică valorile cheie din ea. Încercați interogarea SELECT de mai jos, în care am folosit metoda jsonb_object_keys și am furnizat câteva valori. Această metodă va returna cheile documentului de cel mai înalt nivel JSON pentru anumite date, așa cum se arată mai jos.

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

Funcția JSONB Extract Path:

Funcția JSONB Extract Path ia calea pentru a arăta valoarea rezultatului. Încercați interogarea de mai jos în shell-ul comenzii, unde am furnizat „marca” ca cale către metoda JSONB jsonb_extract_path. Din rezultatul prezentat în imaginea de mai jos, puteți vedea că „Gucci” este o valoare returnată la calea „nume”.

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

Funcție destul de JSONB:

Dacă doriți să afișați fișierele JSON cu un aspect ușor de citit, atunci funcția JSONB Pretty este cea mai bună opțiune. Încercați interogarea de mai jos și veți obține o ieșire simplă.

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

Concluzie:

Când stocați informații JSONB în bazele de date PostgreSQL, obțineți cel mai bun rezultat posibil: simplitatea și fiabilitatea unei baze de date NoSQL combinate cu avantajele unei baze de date relaționale. Folosind numeroși operatori și metode, am demonstrat cum să folosim PostgreSQL JSONB. Veți putea lucra cu datele JSONB folosind ilustrațiile noastre ca referință.

Vulkan for Linux Users
With each new generation of graphics cards, we see game developers push the limits of graphical fidelity and come one step closer to photorealism. But...
OpenTTD vs Simutrans
Creating your own transport simulation can be fun, relaxing and extremely enticing. That's why you need to make sure that you try out as many games as...
OpenTTD Tutorial
OpenTTD is one of the most popular business simulation games out there. In this game, you need to create a wonderful transportation business. However,...