20 subscribers
90 photos
33 videos
27 files
176 links
Download Telegram
1
Forwarded from JR TwitGram 🥂
Forwarded from JavaHere's Blogs 🚀
Optimizatsiya 2 (72h -> 1h)

Pipeline bor. Bu pipeline har kuni bir kunlik ma'lumotlarni process qilib turishi kerak edi. Har safar 8 soat run bo'lardi.

U bir databasedan bir nechta table larni olib, birlashtirib, filterlab, boshqa bir databasedagi bir table ga yozadi.

Menga yangi bir column qo'shib uni kerakli ma'lumot bilan to'ldirishimni so'radi.

Shunday qildim, code ham review va approve bo'ldi.

Lekin kod pre-prod environmentga yetganda, naqd 72 soatdan ko'proq ishlab, time out bo'ldi.

Sababi, menga kerakli ma'lumotni query qilish uslubim xato bo'lgan ekan.

Qanday xato? Agar kerakli ma'lumot juda katta bo'lsa uni bir dona query orqali olib kelmasdan, alohida kichik pipeline bilan olib kelinadi.

Menga kerakli ma'lumot kichik (bir necha yuz megabayt) bo'lgani uchun uni batch emas streaming orqali, ya'ni, bitta queryda olib kelinadigan qildik.

Shunda 72h -> 25h bo'ldi.

Lekin bu ham yaxshi natija emasdi.

Hammani o'zini ishi bor, buniyam kimdir to'g'irlash kerak.

2 ta yo'limiz bor edi,
1. Kompyuterlarni kuchaytirish (cpu, ram)
2. Kodni optimizatsiya qilish

Mendan kodni optimizatsiya qilishimni so'radi.

Muammo - menga kerakli bir necha yuz megabaytli data bilan bir necha terabayatli datani join qilishda edi.

Shu qismini o'zi 17soat olayotgandi.

Men qilgan yechim:
Join qilish o'rniga, haligi kichik datani hashmapga soldim. Terabayt datani parallel yurib chiqib, har bir row uchun o'ziga mos datani hashmapdan olib to'ldirib chiqdim.

Qarasam huddi shunday ishni qilishim mumkin bo'lgan yana bir joy bor ekan. Uniyam shunday qildim.

Natija:
Endi pipeline ~1soat da ishni tugatyabdi, hamma xursand.

Olovni yondirgan menman. Lekin ayb menga yuklanmaydi, sababi jamoam bu kodni review qilib tasdiqlagan. Endi ayb hammaniki.

Optimizatsiyani men qildim, bu jamoaniki emas. Qiziq vaziyat.

Bu ishni qilish davomida Partitioning, Shuffling degan tushunchalar bilan tanishdim.

Balkim bular haqida alohida post yozarman.

Shunday qilib: 72h -> 1h.

Zo'r natija.

#tajriba

JavaHere
17.06.2026
Ishxona, Polsha
1
👍1
1
1
Channel name was changed to «q»
1
You can’t have easy life in great character
1
The most we want is what we cant have, and what we cant have is what we already had and lost

from the odyssey
1