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”:
-- 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;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'.
Afișează indiciu
Transmiteți în ::json sau ::jsonb și utilizați ->'user'->>'name'.
Soluție disponibilă după 3 încercări
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”.
Afișează indiciu
->>1 (este bazat pe zero!)
Soluție disponibilă după 3 încercări