Ne cuvas slike u bazi vec na nekom storidzu kao fajl, jpg/png/gif/webp, sta god ti radi posao, a u bazi cuvas linkove do tih slika i koristis ih u krajnjoj aplikaciji po potrebi. I ja sam napisao da je "prevara" uciti nekoga da cuva slike na taj nacin. To unistava celu poentu baze podataka. Okej, ima slucajeva gde moooooozda treba, ali to je vrlo retko. Em zauzimas zlata vredan prostor (baza trci po nvme danas, storidz moze i na hdd da bude, pa cak i neki cold storage ako brzina nije bitna), bekapi ti imaju nenormalnu velicinu i ne mozes da tarujes/zipujes... sad ti je najmanji problem to.
Indeksi... nauka sama za sebe i verovatno dok ih ne budes koristio u praksi neces imati pojma sta znace. Zamisli da tih zaposlenih imas milion. Ti sad hoces da nadjes od Petra Petrovica podatke o poslednjih 30 plata. Nemas kompjuter, sve cuvate na papiru. Prvo moras da nadjes u nekoj prostoriji gde je "fascikla" koja sadrzi podatke o Petru Petrovicu. Bez indeksa, ulazis u prostoriju u kojoj su fascikle na sve strane na rafovima. Uzmes jedan raf, ono Ana Nikolic, ispod njene fascikle Marija Nikolic, ispod nje Ivan Ivanovic. Pojma nemas gde vise da trazis fasciklu sa podacima o Petru Petrovicu vise jer vidis da je na sve strane haos.
Lupis indeks na "id" zaposlenog.
Ulazis opet u prostoriju. Sada imas (metaforicki) rafove sa slovima od A do Z, i vidis slovo P. Ides do tog rafa i imas mnogo manje posla da nadjes Petra Petrovica.
I sad idemo na poentu oko indeksa i zasto su po meni besmisleni u ovoj fazi ucenja...
Ti ces logicno skapirati da ti indeks olaksava posao u upitima koje budes pisao. Lupaces indekse ko blesav na sve kolone. Imaces opet prostoriju sa razbacanim stvarima. Ne treba ti to.
Kako zapravo treba da lupis indeks? Vidis koji podaci ti trebaju u upitu koji cesto koristis a zahteva obradu velike kolicine podataka. Onog trenutka kad budes trazio da su ti, recimo po adresi razvrstani na tim rafovima zaposleni, lupices indeks na kolonu "adresa".
Po difoltu vec imas index na PK. Dok ne budes znao sta zapravo treba da radis sa ovim tabelama, nijedan indeks ti nece gotovo nista znaciti. Ali... recimo da hoces da dobijes dopisivanje korisnika 1500 i korisnika 1501. Znaci trebaju ti posiljalac 1501, primalac 1500, i obrnuto. To vec postaje sporo. Onda stavis multi-column (cuo sam razne nazive za ovaj tip indeksa) na (posiljalac_id, primalac_id) i imas brz pristup tim podacima. To ima smisla, a na slepo lupati indekse bez scenarija nema i trosenje je sistemskih resursa gde potencijalno mozes i da usporis celu bazu i da je bloatujes, jer pri svakoj promeni podataka, indeksi moraju da se refreshuju s vremena na vreme (ovo se radi automatski) i to je to.
Full-text index... moze... al' je skup k'o djavo. Po meni su to vec naprednije stvari, gde na primer ja koristim postgreSQL poslednjih x godina, zavisi i koji tip indexa postavljam i sta ti ja znam... zavisi i da li je upit koji radis "jednako" ili "like"...
Jos jedna stvar - indeksi su vrlo, vrlo uprostena stvar, ali vrlo efikasna. Maltene se sve svodi na postavljanje pravog indexa, a to su ti uvek uslovi u upitu. Poenta je kako ih postaviti dovoljno da ih ima, a ne preterano da gube smisao. Sve vise i vise gledam ljude koji bi kesirali u 512GB RAMa celu bazu da mogu i imaju flat tabele odakle odrade jedan select i dobiju sta im treba bez icega.
Ako mozes, idemo lepo redom jedan po jedan zadatak pa cemo da objasnjavamo svi. Petak vece, cime se ES zanima :)
THE ONLY EASY DAY WAS YESTERDAY