Thuta Learning
ရှာဖွေရန်
AdvancedData & Databasesbeginner

JSONB နှင့် GIN Index

စိတ်လျှော့ပါ။ ဒီခန်းကို စာအုပ်လိုမဟုတ်ဘဲ စကားပြောသလိုပဲ၊ နားလည်လွယ်အောင် ရှင်းပါမယ်။

ဒီခန်းပြီးရင် ဘာတတ်သွားမလဲ

  • JSONB နှင့် GIN Index concept ကို နားလည်ရှင်းပြနိုင်ရန်
  • နမူနာ SQL/command ကို ကိုယ်တိုင် run ပြီး output စစ်နိုင်ရန်
  • Tutorial Platform project နှင့် production scenario တွင် အသုံးချနိုင်ရန်

နားလည်ထားရမယ့် အချက်

JSONB က parsed binary representation ဖြစ်ပြီး operators နဲ့ indexes များကိုပံ့ပိုးပါတယ်။ Stable, required, relational fields ကို JSONB ထဲဝှက်မထားဘဲ real columns/relationships သုံးသင့်ပါတယ်။ JSONB က optional evolving metadata အတွက်ကောင်းပြီး structure validation ကို application သို့ CHECK constraints ဖြင့်သတ်မှတ်ရပါတယ်။

လက်တွေ့ scenario နဲ့ ချိတ်ကြည့်မယ်

Tutorial metadata ထဲ `tags` နှင့် `level` ထည့်ပြီး containment operator `@>` ဖြင့်ရှာမယ်။ General GIN index နှင့် expression index ကြားရွေးချယ်မှုကို actual queries အလိုက်လုပ်ရပါတယ်။

အတူတူ စမ်းရေးကြည့်မယ်

sql
UPDATE app.tutorials
SET metadata = jsonb_build_object(
  'level', 'beginner',
  'tags', jsonb_build_array('postgresql', 'database')
)
WHERE slug = 'postgresql';

CREATE INDEX tutorials_metadata_gin_idx
  ON app.tutorials USING gin (metadata);

SELECT title
FROM app.tutorials
WHERE metadata @> '{"tags": ["postgresql"]}'::jsonb;
You should see
JSONB metadata ထည့်ပြီး indexed containment query run နိုင်မည်။

၅ မိနစ် စမ်းကြည့်

Metadata ထဲ difficulty field ရှိပြီး allowed values သုံးခုထဲပါကြောင်း CHECK constraint စမ်းရေးပါ။

သတိလေးတစ်ချက်

Data အားလုံးကို JSONB column တစ်ခုထဲထည့်ရင် foreign keys၊ type safety နှင့် reporting အားနည်းသွားပါတယ်။

PostgreSQL — JSON TypesPostgreSQL Global Development Group

ဒီနေရာမှာ လူအများမှားတတ်တယ်

  • Data အားလုံးကို JSONB column တစ်ခုထဲထည့်ရင် foreign keys၊ type safety နှင့် reporting အားနည်းသွားပါတယ်။
  • နမူနာ code ကို production data ပေါ် တိုက်ရိုက်မစမ်းဘဲ local/test database နှင့် recoverable backup ပေါ်တွင် အရင်အတည်ပြုပါ။

လေ့ကျင့်ခန်း

Metadata ထဲ difficulty field ရှိပြီး allowed values သုံးခုထဲပါကြောင်း CHECK constraint စမ်းရေးပါ။

You'll know it worked when: JSONB metadata ထည့်ပြီး indexed containment query run နိုင်မည်။

JSONB နှင့် GIN Index | Thuta Learning