Re: Prvo angazovanje za PHP pocetnike
08.09.2010. u 02:37 · pre 196 meseci
#21
ja bih samo malo da se osvrnem na pricu o ORM-u i da li ga treba koristiti i kad. (mada odosmo malo u offtopic sa tim doctrine-om)
elem, radio sam u firmi koja ima svoj proizvod (cms) koji koristi svoj framework (pisan za taj cms, tako da se vise moze uzeti kao core cms-a a ne kao nesto sto moze da bude stand-alone fwk, ali to je nebitno trenutno) koji koristi ORM.
priznajem da ORM dosta ubrzava posao i olaksava odrzavanje koda (pre rada na tom projektu se nisam sustretao sa ORM-om jer mi je klasican sql uvek bio sasvim dovoljan). e, ali onda dodje novi projekat, da se taj cms koristi za izradu sajta koji barata sa ogromnom kolicinom podataka koji moraju da se serviraju brzo i da reaguju na promene korisnika gotovo real-time. na izradi projekta je radjeno mozda dva meseca. na kraju kad su svi zahtevi bili ispunjeni i svi test case-ovi prolazili bez problema dosao je red na benchmarking. pustili smo siege da simulira posetu nesto ispod ocekivane i server se bukvalno zakucavao (nije bila neka azdaja od masine, nas lokalni dev server, ali opet nije bila igracka).
prvi koraci su bili da se poboljsa kesiranje, da se izmene ne rade instant nego da se smestaju u "job poolove" koje kasnije "worker" skripte izvrsavaju sekvencijalno (pri tom se korisniku koji napravi izmenu ona automatski prikazivala tako sto se cuvala u sesiji neko vreme) i to je dalo neke rezultate ali se server i dalje mucio.
na kraju je potroseno mesec dana da se izbaci ORM lejer i da se svi upiti pisu rucno i da se istestiraju valjano. i tako je server na kraju bez vece muke podneo ocekivanu posetu.
dakle, poenta price je - ORM je dobar, fensi, ubrzava izradu aplikacije ali kada su ozbiljne stvari u pitanju, gde je sirova "snaga" (odnosno brzina) aplikacije potrebna tu jednostavno mora da se ide sto je vise "low-level" moguce, da se izbegnu svi moguci wrapperi i da se svaka sitnica optimizuje.
tako da, po mom misljenju treba prvo nauciti sql, nauciti ga dobro i napraviti dosta real-life aplikacija ne koristeci nikakve dodatne wrappere koji generisu kod. a kasnije, kada su u pitanju neki ne toliko zahtevni projekti slobodno moze da se uzme neki ORM (doctrine je sasvim ok) da ubrza posao.
elem, radio sam u firmi koja ima svoj proizvod (cms) koji koristi svoj framework (pisan za taj cms, tako da se vise moze uzeti kao core cms-a a ne kao nesto sto moze da bude stand-alone fwk, ali to je nebitno trenutno) koji koristi ORM.
priznajem da ORM dosta ubrzava posao i olaksava odrzavanje koda (pre rada na tom projektu se nisam sustretao sa ORM-om jer mi je klasican sql uvek bio sasvim dovoljan). e, ali onda dodje novi projekat, da se taj cms koristi za izradu sajta koji barata sa ogromnom kolicinom podataka koji moraju da se serviraju brzo i da reaguju na promene korisnika gotovo real-time. na izradi projekta je radjeno mozda dva meseca. na kraju kad su svi zahtevi bili ispunjeni i svi test case-ovi prolazili bez problema dosao je red na benchmarking. pustili smo siege da simulira posetu nesto ispod ocekivane i server se bukvalno zakucavao (nije bila neka azdaja od masine, nas lokalni dev server, ali opet nije bila igracka).
prvi koraci su bili da se poboljsa kesiranje, da se izmene ne rade instant nego da se smestaju u "job poolove" koje kasnije "worker" skripte izvrsavaju sekvencijalno (pri tom se korisniku koji napravi izmenu ona automatski prikazivala tako sto se cuvala u sesiji neko vreme) i to je dalo neke rezultate ali se server i dalje mucio.
na kraju je potroseno mesec dana da se izbaci ORM lejer i da se svi upiti pisu rucno i da se istestiraju valjano. i tako je server na kraju bez vece muke podneo ocekivanu posetu.
dakle, poenta price je - ORM je dobar, fensi, ubrzava izradu aplikacije ali kada su ozbiljne stvari u pitanju, gde je sirova "snaga" (odnosno brzina) aplikacije potrebna tu jednostavno mora da se ide sto je vise "low-level" moguce, da se izbegnu svi moguci wrapperi i da se svaka sitnica optimizuje.
tako da, po mom misljenju treba prvo nauciti sql, nauciti ga dobro i napraviti dosta real-life aplikacija ne koristeci nikakve dodatne wrappere koji generisu kod. a kasnije, kada su u pitanju neki ne toliko zahtevni projekti slobodno moze da se uzme neki ORM (doctrine je sasvim ok) da ubrza posao.