మాడ్యూల్ పాఠాలు (1/2)
JSON మరియు JSONB ఇంటిగ్రేషన్
JSON మరియు JSONB ఇంటిగ్రేషన్
PostgreSQL NoSQL యొక్క విలక్షణమైన డైనమిక్, ఫ్లూయిడ్ ఫ్లెక్సిబిలిటీతో SQL యొక్క భరోసా, రాక్-సాలిడ్ ACID స్వభావాన్ని కలపడం ద్వారా డేటాబేస్ల నియమాలను తిరిగి వ్రాసింది. ఇది JSON డేటాను నిల్వ చేయడానికి స్థానికంగా అంకితం చేయబడిన నిలువు వరుసలను అందించడం ద్వారా అలా చేసింది.
హెచ్చరిక: Postgresలో ఇది దాదాపు ఎల్లప్పుడూ JSONBని ఉపయోగించడానికి సిఫార్సు చేయబడింది. "B" అంటే బైనరీ: ఈ నిలువు వరుసలలో నిల్వ చేయబడిన JSON డాక్యుమెంట్లు వాటి పూర్తిగా వచన ఫార్మాటింగ్ను కోల్పోతాయి, అయితే అవి ప్రామాణికమైన, అధిక పనితీరుతో ప్రశ్నించే, మానిప్యులేట్ మరియు క్లాసిక్ B-tree లేదా GIN INDEXతో సూచిక చేయగల సామర్థ్యాన్ని పొందుతాయి.
JSONని నావిగేట్ చేస్తోంది: "బాణం" ఆపరేటర్
దురదృష్టవశాత్తూ ecommerce డేటాబేస్లో ప్రస్తుతం ముందే నిర్వచించబడిన స్వచ్ఛమైన JSON నిలువు వరుసలు లేవు. అయినప్పటికీ, మేము తాత్కాలిక JSON విలువలను సృష్టించవచ్చు మరియు వాటిని టెక్స్ట్ నుండి "ప్రసారం" చేయవచ్చు!
JSONతో పని చేస్తున్నప్పుడు, ఆబ్జెక్ట్లు మరియు శ్రేణుల్లోకి డ్రిల్ చేసే ఆపరేటర్లు -> (డేటాను దాని స్వచ్ఛమైన jsonb/json రూపంలో ఉంచుతుంది) లేదా దాని "ఎక్స్టెండెడ్" వెర్షన్ ->> (ఎదుర్కొన్న JSON డేటాను టెక్స్ట్గా మారుస్తుంది).
విద్యాసంబంధ ఉదాహరణ, "మెటాడేటా" JSON నిలువు వరుస ఉన్నట్లుగా:
-- 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;ప్రయాణంలో JSONని ప్రశ్నిద్దాం. ఈ json అక్షరార్థం \`'{"user": {"name": "Mario"}}'::json\`ని ప్రొజెక్ట్ చేయండి మరియు సంగ్రహించిన నిలువు వరుసకు 'user_name' అని పేరు పెట్టి, 'పేరు'ని సంగ్రహించడానికి వచన వెర్షన్ (\`->>\`)తో కలిపి \`->\` ఆపరేటర్ని ఉపయోగించండి.
సూచనను చూపించు
::json లేదా ::jsonbకి ప్రసారం చేయండి మరియు ->'user'->>'name'ని ఉపయోగించండి.
3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది
మనం శ్రేణిని పాస్ చేస్తే? పోస్ట్గ్రెస్లోని json_bలో అర్రే యాక్సెస్ INDEX ద్వారా పనిచేస్తుంది (సున్నా-ఆధారిత). \`'["A", "B", "C"]'::json\` నుండి SECOND మూలకాన్ని టెక్స్ట్గా సంగ్రహించి దానికి 'అక్షరం' అని పేరు పెట్టండి.
సూచనను చూపించు
->>1 (ఇది సున్నా-ఆధారితం!)
3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది