Interactive tasks attached to this lesson — complete them in a real Kubernetes environment and check the result.
database
SQL: ikki jadvalni bog'lash (INNER JOIN)
Osonbolt+15 XP
Deploy tarixi servis IDsi bilan yozilgan — hisobotda esa servis NOMI kerak: ikki jadval JOIN qilinadi. Baza services(id, name, env) va deploys(service id, build, status) Vazifa query.sql — har deploy uchun nom|build qatorlarini build tartibida qaytarsin (INNER JOIN) Muvaffaqiyat mezoni (jonli) Deploysiz servislar chiqmaydi (inner semantika)
database
SQL: JOIN va filtr birga — muvaffaqiyatsiz deploylar
Murakkabbolt+25 XP
Incident tahlili: qaysi SERVISLARDA failed deploy bo'lgan — nomlar ro'yxati kerak. Vazifa query.sql — failed deploylarning servis nomlarini (takrorsiz, alifbo tartibida) qaytarsin Muvaffaqiyat mezoni (jonli) ok-deploylar hisobga kirmaydi; bir servisda 2 failed bo'lsa ham nom BIR marta
database
SQL: LEFT JOIN — mosligi yo'qlar ham ko'rinsin
Murakkabbolt+25 XP
To'liq inventar hisobotida HAMMA servislar chiqishi kerak — deploy tarixi bo'lmasa build o'rni bo'sh (NULL) qoladi. Vazifa query.sql — nom|build ro'yxatini LEFT JOIN bilan, nom keyin build tartibida qaytarsin (deploysiz servis ham chiqadi) Muvaffaqiyat mezoni (jonli) Deploysiz servis qatori nom| ko'rinishida (bo'sh build)
database
SQL: anti-join — hech qachon deploy qilinmaganlar
Murakkabbolt+25 XP
Audit: qaysi servislar UMUMAN deploy qilinmagan? LEFT JOIN + IS NULL naqshi (anti-join). Vazifa query.sql — deploy yozuvi YO'Q servislar nomini alifbo tartibida qaytarsin Muvaffaqiyat mezoni (jonli) Kamida bitta deployli servislar chiqmaydi
database
SQL: har servis bo'yicha deploylar soni (JOIN+GROUP BY)
Murakkabbolt+25 XP
Faollik hisoboti: har servis NECHTA marta deploy qilingan (nomi bilan). Vazifa query.sql — nom|soni ni JOIN + GROUP BY bilan, nom alifbo tartibida qaytarsin (faqat deployli servislar) Muvaffaqiyat mezoni (jonli) Sanoqlar servisga to'g'ri biriktirilgan
database
SQL: faol servislar — 2+ deploy (JOIN+HAVING)
Murakkabbolt+25 XP
Faqat 2 va undan ortiq deploy qilingan servislar "faol" hisoblanadi — ro'yxati kerak. Vazifa query.sql — JOIN + GROUP BY + HAVING COUNT( ) = 2 bilan faol servis nomlarini alifbo tartibida qaytarsin Muvaffaqiyat mezoni (jonli) 1 deployli servislar chiqmaydi
database
SQL: uch jadvalni zanjirlab bog'lash
Murakkabbolt+25 XP
To'liq hisobot: deploy → servis → jamoa. Uchala jadval bitta so'rovda zanjirlanadi. Baza services(id, name, env), deploys(service id, build, status), teams(env, team) Vazifa query.sql — har deploy uchun nom|build|jamoa ni build tartibida qaytarsin Muvaffaqiyat mezoni (jonli) Jamoa env orqali to'g'ri biriktiriladi
database
SQL: self-join — bitta muhitdagi servis juftliklari
Murakkabbolt+25 XP
Muhit ichidagi bog'liqlik tahlili: har muhitda qaysi servis JUFTLIKLARI yashaydi (a<b tartibida, takrorsiz)? Vazifa query.sql — services jadvalini O'ZI bilan env bo'yicha bog'lab, a.name < b.name juftliklarni a|b ko'rinishida qaytarsin (a,b tartibida) Muvaffaqiyat mezoni (jonli) (x,y) va (y,x) dublikatlari yo'q; o'z-o'zi bilan juftlik yo'q
database
SQL: har servisning oxirgi build raqami
Murakkabbolt+25 XP
Joriy holat hisoboti: har servisning ENG KATTA (oxirgi) build raqami nomi bilan. Vazifa query.sql — nom|MAX(build) ni JOIN+GROUP BY bilan, nom tartibida qaytarsin Muvaffaqiyat mezoni (jonli) Har servisdan bitta qator, eng katta build
database
SQL: to'liq hisobot — deploysizlarga 0 (LEFT+COALESCE)
Murakkabbolt+25 XP
Boshqaruv hisobotida HAMMA servislar va ularning deploy SONI chiqsin — hech deploy qilinmaganlarga aniq 0 (bo'sh emas). Vazifa query.sql — nom|soni LEFT JOIN bilan; soni COUNT(d.service id) (NULL sanalmaydi) — nom tartibida Muvaffaqiyat mezoni (jonli) Deploysiz servis nom|0 ko'rinishida
database
SQL: yangi yozuv qo'shish (INSERT)
Osonbolt+10 XP
Yangi gateway servisi (prod, 400 CPU) inventarga qo'shilishi kerak. Vazifa query.sql — services jadvaliga ('gateway','prod',400) qatorini qo'shsin Muvaffaqiyat mezoni (jonli) Checker o'z bazasida query'ni qo'llab, yangi qator paydo bo'lganini tekshiradi
database
SQL: bitta buyruqda bir nechta yozuv (INSERT multi-VALUES)
Osonbolt+15 XP
Ikkita yangi worker servisi (worker-1, worker-2, ikkalasi prod, 250 CPU) BITTA statement bilan qo'shilsin. Vazifa query.sql — bitta INSERT'da ikkala qatorni qo'shsin (VALUES ro'yxati vergul bilan) Muvaffaqiyat mezoni (jonli) Ikkala worker bazada
database
SQL: shartli yangilash (UPDATE WHERE)
Osonbolt+15 XP
Kechki rejim: dev muhitidagi barcha servislar CPU talabi 0 ga tushirilsin (to'xtatish rejasi); prod TEGILMASIN. Vazifa query.sql — UPDATE services SET cpu = 0 WHERE env = 'dev' Muvaffaqiyat mezoni (jonli) dev qatorlarida cpu=0, prod qiymatlari o'zgarmagan
database
SQL: qiymatni formulaga ko'ra yangilash
Osonbolt+15 XP
Prod sig'imi ikki baravar oshirilmoqda: prod qatorlarida cpu MAVJUD qiymatidan kelib chiqib 2 ga ko'paytirilsin. Vazifa query.sql — SET cpu = cpu 2 WHERE env = 'prod' Muvaffaqiyat mezoni (jonli) prod: 200→400; dev qiymatlari o'zgarmaydi
database
SQL: shartli o'chirish (DELETE WHERE)
Osonbolt+15 XP
Dev muhiti butunlay yopildi — env='dev' qatorlari jadvaldan O'CHIRILSIN. Vazifa query.sql — DELETE FROM services WHERE env = 'dev' Muvaffaqiyat mezoni (jonli) dev qatorlari yo'q, boshqalar joyida
database
SQL: jadvaldan jadvalga ko'chirish (INSERT SELECT)
Murakkabbolt+25 XP
Arxivlash: dev servislari archive jadvaliga NUSXALANSIN (asl jadval tegilmaydi). Baza services va bo'sh archive (bir xil ustunlar) Vazifa query.sql — INSERT INTO archive SELECT FROM services WHERE env = 'dev' Muvaffaqiyat mezoni (jonli) archive'da dev qatorlari, services to'liq qoladi
database
SQL: bor bo'lsa yangila, yo'q bo'lsa qo'sh (UPSERT)
Murakkabbolt+25 XP
Sozlamalar jadvalida port kaliti YANGI qiymat olishi kerak — kalit bor-yo'qligidan qat'i nazar bitta statement bilan (idempotent). Baza settings(key TEXT PRIMARY KEY, value TEXT) — port=8080 mavjud Vazifa query.sql — INSERT OR REPLACE INTO settings VALUES ('port','9090') Muvaffaqiyat mezoni (jonli) port endi 9090; boshqa kalitlar joyida; qayta ishga tushirish ham xavfsiz
database
SQL: eski muvaffaqiyatsiz yozuvlarni tozalash
Osonbolt+15 XP
Deploy jurnalida failed yozuvlar tahlildan keyin tozalanadi — faqat ular o'chirilsin. Baza deploys(build, status) Vazifa query.sql — failed qatorlarni o'chirsin Muvaffaqiyat mezoni (jonli) ok qatorlar to'liq qoladi
database
SQL: bir statementda tarmoqli yangilash (UPDATE+CASE)
Murakkabbolt+25 XP
Servislar TIER belgisi olishi kerak: cpu 500 va undan katta — high, aks holda low — BITTA UPDATE bilan. Baza services(name, cpu, tier) — tier hozircha NULL Vazifa query.sql — SET tier = CASE WHEN cpu = 500 THEN 'high' ELSE 'low' END Muvaffaqiyat mezoni (jonli) Har qator o'z CPU'siga mos tier oladi
database
SQL: tranzaksiya — ko'chirish atomik bo'lsin
Murakkabbolt+25 XP
sandbox servisi arxivga KO'CHIRILADI: nusxalash + o'chirish IKKI amal, lekin YAXLIT bo'lishi shart — orada uzilsa ma'lumot ikki joyda ham/hech qayerda bo'lib qolmasin. Baza services va archive (bir xil ustunlar) Vazifa query.sql — BEGIN; INSERT INTO archive SELECT...; DELETE...; COMMIT; zanjiri (sandbox qatorini ko'chirish) Muvaffaqiyat mezoni (jonli) archive'da sandbox bor, services'da yo'q