মূল কন্টেন্টে যান
মডিউল 15 · 1-এর পাঠ 2কোর্সে 56/57~15 min
মডিউল পাঠ (1/2)

JSON এবং JSONB ইন্টিগ্রেশন

JSON এবং JSONB ইন্টিগ্রেশন

পোস্টগ্রেএসকিউএল এসকিউএল-এর আশ্বস্ত, রক-সলিড এসিআইডি প্রকৃতিকে NoSQL-এর গতিশীল, তরল নমনীয়তার সাথে একত্রিত করে ডাটাবেসের নিয়মগুলি পুনরায় লিখেছে। এটি JSON ডেটা সঞ্চয় করার জন্য নেটিভভাবে নিবেদিত কলামগুলি অফার করে তা করেছে৷

সতর্কতা: Postgres-এ প্রায় সবসময়ই JSONB ব্যবহার করার পরামর্শ দেওয়া হয়। "B" এর অর্থ হল বাইনারি: এই কলামগুলিতে সংরক্ষিত JSON নথিগুলি তাদের সম্পূর্ণরূপে পাঠ্য বিন্যাস হারায়, কিন্তু তারা যাচাই করার ক্ষমতা অর্জন করে, খুব উচ্চ কার্যকারিতা সহ জিজ্ঞাসা করা হয়, ম্যানিপুলেট করা হয় এবং এমনকি ক্লাসিক B-ট্রি বা 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' নামকরণ করে 'name' বের করতে পাঠ্য সংস্করণ (\`->>\`) এর সাথে মিলিত \"->\" অপারেটর ব্যবহার করুন।

সম্পাদক লোড হচ্ছে...
ইঙ্গিত দেখান

::json বা ::jsonb-এ কাস্ট করুন এবং ->'user'->>'name' ব্যবহার করুন।

সমাধান 3 প্রচেষ্টার পরে উপলব্ধ

ব্যায়াম#sql.m15.l1.e2
প্রচেষ্টা: 0লোড হচ্ছে...

যদি আমরা একটি অ্যারে পাস? পোস্টগ্রেসে json_b-এ অ্যারে অ্যাক্সেস INDEX (শূন্য-ভিত্তিক) দ্বারা কাজ করে। দ্বিতীয় উপাদানটিকে \`'["A", "B", "C"]'::json\` থেকে পাঠ্য হিসাবে বের করুন এবং এটিকে 'অক্ষর' নাম দিন।

সম্পাদক লোড হচ্ছে...
ইঙ্গিত দেখান

->>1 (এটি শূন্য-ভিত্তিক!)

সমাধান 3 প্রচেষ্টার পরে উপলব্ধ