Oracle (va Mobliss)
Magistraturada o‘qib yurganimda Oracle fani kirishni boshlagan. Paradox, Interbase yoki boring ana MySqlni o‘rgangan odam uchun Oracle juda vahimali tuyular edi. Xuddi-ki, 1 qavatli imorat qurmagan odam katta 20 qavatli dom oldida turgandek.
Oracle’ni o‘rganishimga bu ilk turtki bo‘lgan. Oradan 1 yil o‘tib ilk FinTech loyiha boshlaganimizda Oracle men uchun to‘lqinli dengiz, men esa o‘zimni surfing sportchisi kabi his etardim.
Bir kun.
4 ta kursdosh online tolov tizimi ishlab chiqqan edik. Har birimizning vazifamiz bor edi. 2 kishi kodga javob berar edik. Tizimda 5,000dan ortiq foydalanuvchi bor. Har kuni pul o‘tkazmasi va to‘lovlar qilishadi.
Production bazada hisobot olish maqsadida ishlab o‘tiribman.
Hisobot olish ketidan xatoliklarni tuzatishni boshladim. Ba’zi hisoblar noto‘g‘ri saqlangan yoki ikki marta yozilib, hisobot xato chiqayotgan edi.
Select, Update va nihoyat Delete. Eng ko‘p ishlatiladigan buyruqlarim. Va shu payt...
Etim muzlay boshladi. Atrofdagi g‘ala-g‘ovur ovozlar eshitilmay qoldi. Bilaman, bunday vaqtda xotirjamlik kerak. Shoshib bo‘lmaydi. Xato qilib qo‘yish mumkin.
Ekranda TOAD dasturi va so‘nggi yozgan buyrug‘im: Delete.
Soniyalar ichida xayoldan o‘tayotgan o‘ylarim:
- Barcha ma’lumotlar o‘chib ketdi.
- 3 kunlik eski baza bor, uni tiklash mumkin.
- Lekin 3 kun ichida bo‘lgan xarakat 150mln ($100,000). Qayerdan bilaman kimniki qancha bo‘lganini?
- Mijozlar to‘polon boshlasa nima deyman?
- 3 kunlik ma’lumotni har bir mijoz kompyuteridan yig‘sa bo‘ladi. (U vaqt Nokia telefon va desktop kompyuterlar davri.)
- 3 kunlik ma’lumotni tiklash 2 hafta vaqt oladi.
- Shoshma biroz jim tur...
- 1 daqiqa o‘tdi.
- Mijozlar hali to‘polon boshlashmadi.
- Nima uchun tizim hali ham ishlab turibdi?
- Lokal dastur ishlagani uchunmi?
Xayollarim davom etadi:
- Taxminan 5 daqiqa o‘tdi.
- To‘polon hali ham yo‘q.
- Menga faqat Alloh yordam bera oladi.
- Nimadir yechim bo‘lishi kerak.
- Sodda yechim.
- Men uni ko‘rmayapman.
SHU PAYT!!!
Ko‘zimga yashil tugma ko‘rindi.
- Nima uchun bu kulrang emas? - degan xayol o‘tdi.
Yonida qizil tugma ham yonib turibdi.
- Axir bu ikkisi kulrang bo‘lishi...
- To‘xta!
Yuzimga qon yugurdi. Isishni boshlaganimni his etdim.
Chunki yechim ko‘z oldimda edi.
- Xudoga shukr, - dedim va qizil tugmani bosdim.
----
O‘sha kun bitta buyruq bilan ma’lumotlar bazasida asosiy jadvalni tozalab yuborgan edim.
(Delete from table -- where id=1234;).
Agar log yoki qiymati kichik ma’lumot bo‘lsa, ziyoni yo‘q edi. Man har kuni bo‘ladigan kassadagi pul o‘tkazmalari jadvalini tozalagan edim.
Meni nima qutqargan edi?
1. Shoshmaslik. Hech qachon biror muammoga duch kelganda yoki jahl chiqqanida hissiyotga berilish kerak emas.
2. Birov vaqt oling. Chunki yechimni tez izlaganingizda sodda yechimlarni ko‘rmay qolasiz. Miya biroz o‘ziga kelishi kerak. Shuning uchun vaqt oling.
3. Oracle bilan ishlaganda 2 ta buyruq bor: Commit va Rollback.
Ko‘pchilik bu tugmalarni avtomat ishlaydigan qilib qo‘ygan bo‘ladi. Biror buyruq bersangiz darhol ma’lumotlarga ta’sir qiladi.
Men esa buni doim qo‘lda bosish (manual) holatiga qo‘yib qo‘yar edim. Ortiqcha bitta tugma bosaman. Lekin shu odatim ma’lumotlarni saqlab qolgan.
Delete buyrug‘ini berganda, Where qolib ketishi - juda katta xato.
Qo‘limni keyboarddan olib, biroz o‘ylab o‘tirdim. Va Rollback qilish mumkin ekanini ko‘rganimda oxirgi qilgan barcha ishlarimni orqaga qaytardim.
26.04.2025 London
@DrAlgorithm
Magistraturada o‘qib yurganimda Oracle fani kirishni boshlagan. Paradox, Interbase yoki boring ana MySqlni o‘rgangan odam uchun Oracle juda vahimali tuyular edi. Xuddi-ki, 1 qavatli imorat qurmagan odam katta 20 qavatli dom oldida turgandek.
Oracle’ni o‘rganishimga bu ilk turtki bo‘lgan. Oradan 1 yil o‘tib ilk FinTech loyiha boshlaganimizda Oracle men uchun to‘lqinli dengiz, men esa o‘zimni surfing sportchisi kabi his etardim.
Bir kun.
4 ta kursdosh online tolov tizimi ishlab chiqqan edik. Har birimizning vazifamiz bor edi. 2 kishi kodga javob berar edik. Tizimda 5,000dan ortiq foydalanuvchi bor. Har kuni pul o‘tkazmasi va to‘lovlar qilishadi.
Production bazada hisobot olish maqsadida ishlab o‘tiribman.
Agar hozirgi men o‘sha payt yonimda bo‘lganida, rosa kaltak yegan bo‘lar edim. Tirik ishlab turgan ma’lumot ombori bilan ishlab bo‘ladimi?
Hisobot olish ketidan xatoliklarni tuzatishni boshladim. Ba’zi hisoblar noto‘g‘ri saqlangan yoki ikki marta yozilib, hisobot xato chiqayotgan edi.
Select, Update va nihoyat Delete. Eng ko‘p ishlatiladigan buyruqlarim. Va shu payt...
Etim muzlay boshladi. Atrofdagi g‘ala-g‘ovur ovozlar eshitilmay qoldi. Bilaman, bunday vaqtda xotirjamlik kerak. Shoshib bo‘lmaydi. Xato qilib qo‘yish mumkin.
Ekranda TOAD dasturi va so‘nggi yozgan buyrug‘im: Delete.
Where qo‘yish esdan chiqqan edi.
Soniyalar ichida xayoldan o‘tayotgan o‘ylarim:
- Barcha ma’lumotlar o‘chib ketdi.
- 3 kunlik eski baza bor, uni tiklash mumkin.
- Lekin 3 kun ichida bo‘lgan xarakat 150mln ($100,000). Qayerdan bilaman kimniki qancha bo‘lganini?
- Mijozlar to‘polon boshlasa nima deyman?
- 3 kunlik ma’lumotni har bir mijoz kompyuteridan yig‘sa bo‘ladi. (U vaqt Nokia telefon va desktop kompyuterlar davri.)
- 3 kunlik ma’lumotni tiklash 2 hafta vaqt oladi.
- Shoshma biroz jim tur...
- 1 daqiqa o‘tdi.
- Mijozlar hali to‘polon boshlashmadi.
- Nima uchun tizim hali ham ishlab turibdi?
- Lokal dastur ishlagani uchunmi?
Shu payt do‘stim Zafar:
- Hmm, tinchlikmi? - dedi. Xuddi nimanidir sezgandek.
- Ha tinch. O‘ylavomman, - dedim sir boy bermay.
Kulib qo‘ydi va qulog‘iga katta quloqchinni qayta taqib oldi.
Xayollarim davom etadi:
- Taxminan 5 daqiqa o‘tdi.
- To‘polon hali ham yo‘q.
- Menga faqat Alloh yordam bera oladi.
- Nimadir yechim bo‘lishi kerak.
- Sodda yechim.
- Men uni ko‘rmayapman.
Ancha tinchlandim. Lekin hali yechim topmagan edim.
SHU PAYT!!!
Ko‘zimga yashil tugma ko‘rindi.
- Nima uchun bu kulrang emas? - degan xayol o‘tdi.
Yonida qizil tugma ham yonib turibdi.
- Axir bu ikkisi kulrang bo‘lishi...
- To‘xta!
Yuzimga qon yugurdi. Isishni boshlaganimni his etdim.
Chunki yechim ko‘z oldimda edi.
- Xudoga shukr, - dedim va qizil tugmani bosdim.
Yelkamdagi tog‘ ag‘darildi va qushday yengil bo‘ldim.
----
O‘sha kun bitta buyruq bilan ma’lumotlar bazasida asosiy jadvalni tozalab yuborgan edim.
(Delete from table -- where id=1234;).
Agar log yoki qiymati kichik ma’lumot bo‘lsa, ziyoni yo‘q edi. Man har kuni bo‘ladigan kassadagi pul o‘tkazmalari jadvalini tozalagan edim.
Meni nima qutqargan edi?
1. Shoshmaslik. Hech qachon biror muammoga duch kelganda yoki jahl chiqqanida hissiyotga berilish kerak emas.
2. Birov vaqt oling. Chunki yechimni tez izlaganingizda sodda yechimlarni ko‘rmay qolasiz. Miya biroz o‘ziga kelishi kerak. Shuning uchun vaqt oling.
3. Oracle bilan ishlaganda 2 ta buyruq bor: Commit va Rollback.
Ko‘pchilik bu tugmalarni avtomat ishlaydigan qilib qo‘ygan bo‘ladi. Biror buyruq bersangiz darhol ma’lumotlarga ta’sir qiladi.
Men esa buni doim qo‘lda bosish (manual) holatiga qo‘yib qo‘yar edim. Ortiqcha bitta tugma bosaman. Lekin shu odatim ma’lumotlarni saqlab qolgan.
Delete buyrug‘ini berganda, Where qolib ketishi - juda katta xato.
Qo‘limni keyboarddan olib, biroz o‘ylab o‘tirdim. Va Rollback qilish mumkin ekanini ko‘rganimda oxirgi qilgan barcha ishlarimni orqaga qaytardim.
Ko‘za kuniga emas, kunida sinadi.
26.04.2025 London
@DrAlgorithm