Tema: Re: Rekomenduokite asp.net, ms SQL literaturos
Autorius: Arvydas
Data: 2010-02-19 14:52:00
Galiu kalbėti tik apie NHibernate, kas susiję su ORM skirtu .NET, nes jį 
teko kol kas tik realiai čiupinėti tai platformai. Nereiktų pamiršti, 
kad vienas iš straipsnių yra 4 metų senumo, kitas straipsnis ne visai 
teisingai naudojasi ORM ir, beje, ten nėra pateikiamas Cartesian product 
kaip šalutinis efektas.

Imant pateiktą pavyzdį su komentarais ir tinklaraščio įrašais, įprastai 
dirbant su ORM, pirma susirenki visus įrašus ir tada jiems pagal poreikį 
įkrauni komentarus naudodamasis atskirom užklausom. Tai už tave padaro 
ORM. Be vidinio kešavimo ORM yra ne toks efektyvus kai kiekvienam 
puslapiui užkrauti tenka paleisti n+1 kiekį užklausų, bet su kešavimu 
vieną kartą užkrovęs visus įrašus, gali juos laikyti atmintyje ir tik 
siųsti pakeitimus į duomenų bazę. ORM yra tik įrankis, kurio pagalba 
kartu su duomenų ir UI kešavimu galima daug lengviau ir aiškiau 
programuoti.

Naudojantis freimworkais visada bus šalutinių efektų, bet kol kas man 
jie problemų nesukėlė, o tik padėjo greičiau ir lengviau sukurti 
produktą. Nuo kreivų rankų niekas neapsaugos nesvarbu ar naudosi ORM, 
stored procedures ar INSERT/UPDATE/DELETE SQL užklausas, klausimas tik 
kiek tau kodo eilučių teks prirašyti, kad užbaigtum užduotį laiku.

Arvydas
www.arvydas.net

On 18/02/2010 16:45, meska wrote:
> http://ayende.com/Blog/archive/2010/02/04/what-happens-behind-the-scenes-nhibernate-linq-to-sql-entity.aspx
>
> http://ayende.com/Blog/archive/2006/05/02/CombatingTheSelectN1ProblemInNHibernate.aspx
>
>
> :)
>
> "Arvydas" <neturiu@meilo.com> parašė naujienų
> news:hljnfp$pfh$1@trimpas.omnitel.net...
>> Tai niekas ir nesako, kad ORM tinka absoliučiai visom situacijom, bet
>> 99% atvejų jis smarkiai palengvina duomenų saugojimą, validavimą ir
>> kitą CRUD briedą. Kiekvienas padorus ORM turi galimybes gauti duomenis
>> pagal savo sulipdytą SQL užklausą.
>>
>> Gal aš čia mažai patyręs, bet man kažkaip atrodo, kad imti duomenis iš
>> DB naudojantis Cartesian product yra labai neefektyvu, kai yra visam
>> tam sukurti JOIN'ai ir subselectai. Turiu čia priešistoriniam projekte
>> prie kurio dirbu keletą ataskaitų generuojamų naudojantis Cartesian
>> product, tai velnias žino iš viso kam panaudota: nei normaliai
>> atsižvelgiama į DB struktūrą, nei po to lengva maintaininti.
>>
>> Arvydas
>> www.arvydas.net
>>
>> On 18/02/2010 11:57, meska wrote:
>>> "Arvydas" <neturiu@meilo.com> parašė naujienų
>>> news:hlj5a0$s72$1@trimpas.omnitel.net...
>>>> o geriau pasidomėti kas yra ORM ir su kuo jis valgomas. Tada nebeteks
>>>> prasmės kokioj RDBMS duomenys bus saugomi.
>>>
>>> O tada ateis dėdė Cartesian product kartu su n+1 ir pistels per
>>> performance'a :)
>