terminal
JSONB ustaxonasi: operatorlar, o'zgartirish va ikki indeks
Easybolt+20 XPflagRequired
Bazani yoqish: baza-start (har lab boshida server o'chiq bo'ladi). psql'ga kirish: hn (bu psql -h /tmp -U postgres -d hn uchun qisqartma; fayl bajarish: hn -f fayl.sql, bitta so'rov: hn -c "..."). hodisa(id, malumot jsonb) — webhook yozuvlari: {"xizmat": ..., "daraja": ..., "kontekst": {"ip": ..., "urinish": N}, "teglar": [...]}. Vazifa (/root/db/) q1.sql — xizmat = 'api' VA kontekst.urinish = 3 bo'lgan hodisalar idsi, tartib bilan. Darsdagi ikki operator: - (matn) va (malumot '{kontekst,urinish}')::int (::intsiz matn solishtiriladi va '9' '10' rost bo'lib qoladi!). q2.sql — teglar statistikasi: jsonb array elements text(malumot- 'teglar') bilan har teg soni, soni desc, teg tartibida. o1.sql — bazada bajaring: id = 7 yozuvda darajani "kritik"ga o'zgartiring (jsonb set) va kontekst kalitini olib tashlang (- 'kontekst'). q3.sql — daraja = 'yoq-daraja' bo'yicha coalesce(jsonb agg(malumot- 'xizmat'), '[]'::jsonb) — bo'sh to'plamda [] qaytishi kerak (NULL emas). Ikki xil indeks yarating: GIN butun malumotga va ifoda indeksi ((malumot- 'xizmat'))ga — darsdagi qoida: biri ikkinchisini almashtira olmaydi. Muvaffaqiyat mezoni q1/q2/q3 jonli referens bilan aynan; o1 natijasi bazadan jonli tekshiriladi; katalogda ham GIN, ham ifoda indeksi bo'lishi shart.