முக்கிய உள்ளடக்கத்திற்குச் செல்லவும்
தொகுதி 15 · பாடம் 1 இன் 2பாடத்திட்டத்தில் 56/57~15 min
தொகுதி பாடங்கள் (1/2)

JSON மற்றும் JSONB ஒருங்கிணைப்பு

JSON மற்றும் JSONB ஒருங்கிணைப்பு

PostgreSQL ஆனது SQL இன் உறுதியளிக்கும், ராக்-திடமான ACID தன்மையை NoSQL இன் வழக்கமான மாறும், திரவ நெகிழ்வுத்தன்மையுடன் இணைப்பதன் மூலம் தரவுத்தளங்களின் விதிகளை மீண்டும் எழுதுகிறது. இது JSON தரவைச் சேமிப்பதற்காக சொந்தமாக அர்ப்பணிக்கப்பட்ட நெடுவரிசைகளை வழங்குவதன் மூலம் அவ்வாறு செய்தது.

எச்சரிக்கை: Postgres இல் எப்போதும் JSONB ஐப் பயன்படுத்த பரிந்துரைக்கப்படுகிறது. "B" என்பது பைனரியைக் குறிக்கிறது: இந்த நெடுவரிசைகளில் சேமிக்கப்பட்ட JSON ஆவணங்கள் முற்றிலும் உரை வடிவமைப்பை இழக்கின்றன, ஆனால் அவை சரிபார்க்கப்படும், மிக உயர்ந்த செயல்திறனுடன் வினவப்படும், கையாளப்படும் மற்றும் கிளாசிக் B-tree அல்லது GIN INDEX உடன் அட்டவணைப்படுத்தப்படும் திறனைப் பெறுகின்றன.

JSON ஐ வழிநடத்துகிறது: "அம்பு" ஆபரேட்டர்

துரதிர்ஷ்டவசமாக ecommerce தரவுத்தளத்தில் தற்போது முன் வரையறுக்கப்பட்ட தூய JSON நெடுவரிசைகள் இல்லை. எவ்வாறாயினும், தற்காலிக JSON மதிப்புகளை உருவாக்கி அவற்றை உரையிலிருந்து "காஸ்ட்" செய்யலாம்!

JSON உடன் பணிபுரியும் போது, ​​-> (தரவை அதன் தூய jsonb/json வடிவத்தில் வைத்திருக்கும்) அல்லது அதன் "நீட்டிக்கப்பட்ட" பதிப்பு ->> (எதிர்கொண்ட JSON தரவை உரையாக மாற்றும்) ஆபரேட்டர்கள்.

கல்விசார் உதாரணம், "மெட்டாடேட்டா" JSON நெடுவரிசை இருப்பது போல்:

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;
உடற்பயிற்சி#sql.m15.l1.e1
முயற்சிகள்: 0ஏற்றுகிறது…

பறக்கும்போது JSON ஐ வினவலாம். இந்த json ஐ நேரடியாக \`'{"user": {"name": "Mario"}}'::json\` எனத் திட்டமிடவும், மேலும் \`->\` ஆபரேட்டரைப் பயன்படுத்தி உரைப் பதிப்பை (\`->>\`) பிரித்தெடுத்து 'பெயர்' பிரித்தெடுக்கவும், பிரித்தெடுக்கப்பட்ட நெடுவரிசைக்கு 'user_name' என்று பெயரிடவும்.

எடிட்டரை ஏற்றுகிறது…
குறிப்பைக் காட்டு

::json அல்லது ::jsonb க்கு அனுப்பவும், மற்றும் ->'user'->>'name' ஐப் பயன்படுத்தவும்.

3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்

உடற்பயிற்சி#sql.m15.l1.e2
முயற்சிகள்: 0ஏற்றுகிறது…

நாம் ஒரு வரிசையை கடந்து சென்றால் என்ன செய்வது? INDEX (பூஜ்ஜிய அடிப்படையிலான) மூலம் Postgres வேலைகளில் json_b இல் வரிசை அணுகல். \`'["A", "B", "C"]'::json\` இலிருந்து SECOND உறுப்பை உரையாக பிரித்தெடுத்து அதற்கு 'எழுத்து' என்று பெயரிடவும்.

எடிட்டரை ஏற்றுகிறது…
குறிப்பைக் காட்டு

->>1 (இது பூஜ்ஜிய அடிப்படையிலானது!)

3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்