Salt la conținutul principal
Modulul 15 · Lecția 1 din 256/57 în curs~15 min
Lecții din modul (1/2)

Integrare JSON și JSONB

Integrare JSON și JSONB

PostgreSQL a rescris regulile bazelor de date combinând natura ACID liniștitoare și solidă a SQL cu flexibilitatea dinamică și fluidă tipică NoSQL. A făcut acest lucru oferind coloane dedicate nativ pentru stocarea datelor JSON.

Atenție: în Postgres este aproape întotdeauna recomandat să utilizați JSONB. „B” înseamnă Binary: documentele JSON stocate în aceste coloane își pierd formatarea pur textuală, dar câștigă capacitatea de a fi validate, interogate cu performanțe foarte ridicate, manipulate și chiar indexate cu clasicul B-tree sau GIN INDEX.

Navigarea JSON: operatorul „Săgeată”.

Din păcate, baza de date ecommerce nu are momentan coloane JSON pure predefinite. Putem, totuși, să creăm valori JSON temporare și să le „pronunțăm” din text!

Când lucrați cu JSON, operatorii care efectuează detalierea obiectelor și matricelor sunt -> (păstrează datele în forma sa pură jsonb/json) sau versiunea sa „extinsă” ->> (convertește datele JSON întâlnite în text).

Exemplu academic, ca și cum ar exista o coloană JSON „metadate”:

SQL
-- Look up the value associated with the info key
SELECT metadata->'info' FROM users;

-- Drill into info, and grab city as text
SELECT metadata->'info'->>'city' FROM users;
Exercițiu#sql.m15.l1.e1
Încercări: 0Se încarcă…

Să interogăm JSON din mers. Proiectați acest json literal \`'{"user": {"name": "Mario"}}'::json\` și utilizați operatorul \`->\` combinat cu versiunea textuală (\`->>\`) pentru a extrage 'name', denumind coloana extrasă 'user_name'.

Se încarcă editorul...
Afișează indiciu

Transmiteți în ::json sau ::jsonb și utilizați ->'user'->>'name'.

Soluție disponibilă după 3 încercări

Exercițiu#sql.m15.l1.e2
Încercări: 0Se încarcă…

Ce se întâmplă dacă trecem o matrice? Accesul la matrice în json_b în Postgres funcționează prin INDEX (bazat pe zero). Extrage AL DOILEA element ca text din \`'["A", "B", "C"]'::json\` și numește-l „litera”.

Se încarcă editorul...
Afișează indiciu

->>1 (este bazat pe zero!)

Soluție disponibilă după 3 încercări