<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>
<channel>
	<title>Comments on: Mapperid: milliseid on ja miks neid ei kasutata?</title>
	<atom:link href="http://www.dt.ee/blog/kood/net/2009/11/mapperid/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.dt.ee/blog/kood/net/2009/11/mapperid/</link>
	<description>Tarkvara. Veeb. Mobiil. Multimeedia. Tehnoloogia</description>
	<pubDate>Sun, 05 Feb 2012 05:14:51 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6</generator>
		<item>
		<title>By: Bunter</title>
		<link>http://www.dt.ee/blog/kood/net/2009/11/mapperid/#comment-8028</link>
		<dc:creator>Bunter</dc:creator>
		<pubDate>Wed, 02 Dec 2009 02:01:54 +0000</pubDate>
		<guid isPermaLink="false">http://www.dt.ee/blog/?p=2806#comment-8028</guid>
		<description>Kõik rakendused, millega ma töötan on "keerulisema loogikaga" ehk siis vajavad mitme tabeli seostamist. Ei ole märganud mäpperi kasutuks muutumist.</description>
		<content:encoded><![CDATA[<p>Kõik rakendused, millega ma töötan on &#8220;keerulisema loogikaga&#8221; ehk siis vajavad mitme tabeli seostamist. Ei ole märganud mäpperi kasutuks muutumist.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Gunnar</title>
		<link>http://www.dt.ee/blog/kood/net/2009/11/mapperid/#comment-8019</link>
		<dc:creator>Gunnar</dc:creator>
		<pubDate>Thu, 19 Nov 2009 09:08:58 +0000</pubDate>
		<guid isPermaLink="false">http://www.dt.ee/blog/?p=2806#comment-8019</guid>
		<description>Enamasti on mapperitel olemas on ka custom päringute tugi, millele saab ise tagastatavad tüübid vajadusel ette öelda. NHibernate'il on lisaks oma päringute keel, mis on SQL-i sarnane ja toimib üle erinevate andmebaaside (võib muidugi leida asju, mis ühes baasis on ja teises mitte). Sellega annab ka suhteliselt palju ära teha.

Idee poolest saad teha ka read-only objektid, millele vastavad andmed saad kas view või stored procedure abil ette anda.</description>
		<content:encoded><![CDATA[<p>Enamasti on mapperitel olemas on ka custom päringute tugi, millele saab ise tagastatavad tüübid vajadusel ette öelda. NHibernate&#8217;il on lisaks oma päringute keel, mis on SQL-i sarnane ja toimib üle erinevate andmebaaside (võib muidugi leida asju, mis ühes baasis on ja teises mitte). Sellega annab ka suhteliselt palju ära teha.</p>
<p>Idee poolest saad teha ka read-only objektid, millele vastavad andmed saad kas view või stored procedure abil ette anda.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Kuido</title>
		<link>http://www.dt.ee/blog/kood/net/2009/11/mapperid/#comment-8018</link>
		<dc:creator>Kuido</dc:creator>
		<pubDate>Thu, 19 Nov 2009 08:09:55 +0000</pubDate>
		<guid isPermaLink="false">http://www.dt.ee/blog/?p=2806#comment-8018</guid>
		<description>Kõik need mäpperid muutuvad kasutuks, kui sul on süsteemil mingi keerukam loogika, mis nõuab mitme andmetabeli andmete omavahelist loogilist seostamist ehk objektorienteeritud relatsiooniline andmebaas on surnud rakendus. Niipea, kui andmetöötlus kaldub "Batch Processingust" kõrvale on SQL SERVER surmalaps.</description>
		<content:encoded><![CDATA[<p>Kõik need mäpperid muutuvad kasutuks, kui sul on süsteemil mingi keerukam loogika, mis nõuab mitme andmetabeli andmete omavahelist loogilist seostamist ehk objektorienteeritud relatsiooniline andmebaas on surnud rakendus. Niipea, kui andmetöötlus kaldub &#8220;Batch Processingust&#8221; kõrvale on SQL SERVER surmalaps.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Gunnar</title>
		<link>http://www.dt.ee/blog/kood/net/2009/11/mapperid/#comment-8017</link>
		<dc:creator>Gunnar</dc:creator>
		<pubDate>Wed, 18 Nov 2009 22:23:42 +0000</pubDate>
		<guid isPermaLink="false">http://www.dt.ee/blog/?p=2806#comment-8017</guid>
		<description>Mulle on see triggeritesse igasugu tarkuse paigaldamine jätnud koguaeg selle mulje, et mõni SQL-i tasemel n00b püüab midagi uudset, kaasaegset, tarka ja meisterlikku luua. Kindlasti on asju, mida ongi mõistlik triggeritesse paigutada, kuid et igasugu rakenduse loogika seal istuks... ei-ei-ei.</description>
		<content:encoded><![CDATA[<p>Mulle on see triggeritesse igasugu tarkuse paigaldamine jätnud koguaeg selle mulje, et mõni SQL-i tasemel n00b püüab midagi uudset, kaasaegset, tarka ja meisterlikku luua. Kindlasti on asju, mida ongi mõistlik triggeritesse paigutada, kuid et igasugu rakenduse loogika seal istuks&#8230; ei-ei-ei.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Bunter</title>
		<link>http://www.dt.ee/blog/kood/net/2009/11/mapperid/#comment-8009</link>
		<dc:creator>Bunter</dc:creator>
		<pubDate>Wed, 18 Nov 2009 11:59:28 +0000</pubDate>
		<guid isPermaLink="false">http://www.dt.ee/blog/?p=2806#comment-8009</guid>
		<description>Mõnikord tuleb paraku baasist lähtuda, sest rakendust tegema hakates on baas juba olemas ja toodangus. Kuidas kellelgi need rakenduse tegemised kipuvad olema. Samas näiteks pole mul neid stored proccide wrappereid õnnestunud viimased 3-4 aastat õnneks näha. Aga kui neid veel oli, siis eriti mahedaks muutsid asja tavaliselt "parim" meetod äriloogika laiendamiseks, triggerid. Iga operatsioon oli selline pingpongipalli pesumasinasse viskamine.</description>
		<content:encoded><![CDATA[<p>Mõnikord tuleb paraku baasist lähtuda, sest rakendust tegema hakates on baas juba olemas ja toodangus. Kuidas kellelgi need rakenduse tegemised kipuvad olema. Samas näiteks pole mul neid stored proccide wrappereid õnnestunud viimased 3-4 aastat õnneks näha. Aga kui neid veel oli, siis eriti mahedaks muutsid asja tavaliselt &#8220;parim&#8221; meetod äriloogika laiendamiseks, triggerid. Iga operatsioon oli selline pingpongipalli pesumasinasse viskamine.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Gunnar</title>
		<link>http://www.dt.ee/blog/kood/net/2009/11/mapperid/#comment-8008</link>
		<dc:creator>Gunnar</dc:creator>
		<pubDate>Tue, 17 Nov 2009 23:10:10 +0000</pubDate>
		<guid isPermaLink="false">http://www.dt.ee/blog/?p=2806#comment-8008</guid>
		<description>Mapperid üldiselt peaks suutelised olema selleks, et muudatused ühe käsuga teele panna. Ma ei ole väga kindel, et nad 100% optimaalse tulemuse sinu kontekstis genereerivad, kuid flushimine on neil enamasti olemas. Jällegi asi, mida pead lihtsalt proovima ja uurima, et teada saada.

See, et andmebaas ja klientkeskkonda jooksutav arvuti teineteisest kaugel asuvad, on minu arusaama järgi hetkel-on-lihtsalt-nii juhtum (kõik teavad, et see asi peaks olema kuidagi teisiti, aga tänane lahendus on selline). Sellest, et traffic väiksem oleks, siis võib kaaluda näiteks selliseid asju:

1. Andmete puhverdamine kliendi poolel (võimalik siis, kui andmeid teises otsas iga minut ei muutu). See võib vähendada päringute mahtu oluliselt ja objektide konstrueerimine läheb ka kiiremini, sest andmed on kohapeal olemas.
2. Kui on muudatusi, mida tehakse üle suure hulga andmete ja need muudatused on ühised objektidele ja neid muudatusi saab teha andmebaasis, siis võib need muudatused viia ka stored procedure taha peitu. Sellisel juhul on üks pöördumine andmebaasi, mis need muudatused ära teeb.

Kindlasti tasub kaaluda ka teenustele üleminekut, sest võrgu kirjelduse järgi tundub hajusarhitektuuri kohalt teenuste kasutamine naturaalsem. Kui salvestamise tulemused sind kliendipoolel koheselt ei huvita, siis saad kliendi keskkonna kiiremaks tegemiseks kasutada ka teenuste meetodite asünkroonset kutsumist. Teenuste korral saad paika panna andmevahetuskanalid ja vajadusel määrata neile kompressimise ka, et paketid vähem ruumi võtaks.

Mis puutub enda kirjutatud andmekihte, siis need on jõudluse osas (kui me räägime juba tõsisest kasutajate arvust või tõsiselt mahukatest operatsioonides) paremad kui see, mis mapperid pakuvad. Vähemasti on need kiiremad mapperitest, mis reflectioni peal elavad. Sellise tulemuse võib saavutada ka nende mapperitega, mis "teisel pool" kompilaatorit midagi ei loo ja ei tekita - leidub selliseid, mis genereerivad kõik vajaliku koodi valmis enne kui projekt kokku kompileeritakse. Enamasti annab neid laiendada ja nende loodut muuta ja optimeerida vajadustele vastavalt. See on ka variant, mida annab kaaluda, kui mapperite kasutamine mõistlik tundub.</description>
		<content:encoded><![CDATA[<p>Mapperid üldiselt peaks suutelised olema selleks, et muudatused ühe käsuga teele panna. Ma ei ole väga kindel, et nad 100% optimaalse tulemuse sinu kontekstis genereerivad, kuid flushimine on neil enamasti olemas. Jällegi asi, mida pead lihtsalt proovima ja uurima, et teada saada.</p>
<p>See, et andmebaas ja klientkeskkonda jooksutav arvuti teineteisest kaugel asuvad, on minu arusaama järgi hetkel-on-lihtsalt-nii juhtum (kõik teavad, et see asi peaks olema kuidagi teisiti, aga tänane lahendus on selline). Sellest, et traffic väiksem oleks, siis võib kaaluda näiteks selliseid asju:</p>
<p>1. Andmete puhverdamine kliendi poolel (võimalik siis, kui andmeid teises otsas iga minut ei muutu). See võib vähendada päringute mahtu oluliselt ja objektide konstrueerimine läheb ka kiiremini, sest andmed on kohapeal olemas.<br />
2. Kui on muudatusi, mida tehakse üle suure hulga andmete ja need muudatused on ühised objektidele ja neid muudatusi saab teha andmebaasis, siis võib need muudatused viia ka stored procedure taha peitu. Sellisel juhul on üks pöördumine andmebaasi, mis need muudatused ära teeb.</p>
<p>Kindlasti tasub kaaluda ka teenustele üleminekut, sest võrgu kirjelduse järgi tundub hajusarhitektuuri kohalt teenuste kasutamine naturaalsem. Kui salvestamise tulemused sind kliendipoolel koheselt ei huvita, siis saad kliendi keskkonna kiiremaks tegemiseks kasutada ka teenuste meetodite asünkroonset kutsumist. Teenuste korral saad paika panna andmevahetuskanalid ja vajadusel määrata neile kompressimise ka, et paketid vähem ruumi võtaks.</p>
<p>Mis puutub enda kirjutatud andmekihte, siis need on jõudluse osas (kui me räägime juba tõsisest kasutajate arvust või tõsiselt mahukatest operatsioonides) paremad kui see, mis mapperid pakuvad. Vähemasti on need kiiremad mapperitest, mis reflectioni peal elavad. Sellise tulemuse võib saavutada ka nende mapperitega, mis &#8220;teisel pool&#8221; kompilaatorit midagi ei loo ja ei tekita - leidub selliseid, mis genereerivad kõik vajaliku koodi valmis enne kui projekt kokku kompileeritakse. Enamasti annab neid laiendada ja nende loodut muuta ja optimeerida vajadustele vastavalt. See on ka variant, mida annab kaaluda, kui mapperite kasutamine mõistlik tundub.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Leinz</title>
		<link>http://www.dt.ee/blog/kood/net/2009/11/mapperid/#comment-8007</link>
		<dc:creator>Leinz</dc:creator>
		<pubDate>Tue, 17 Nov 2009 20:18:56 +0000</pubDate>
		<guid isPermaLink="false">http://www.dt.ee/blog/?p=2806#comment-8007</guid>
		<description>Mina kasutasin eelnevatel töökohtadel mappereid. Tunnistan ausalt üles, et nende hingeellu polnud aega ega mahti põhjalikult süveneda ning "ise tehtud, hästi tehtud" loogika järgi tegin uues kohas üksi arendades enda andmebaasikihi.
Ma tõesti ei tea, mis loogika järgi need mappereid suure hunniku uusi objekte salvestavad, aga minul juhtus selline probleem:
Minu andmebaasikiht salvestas igat objekti eraldi (transaktsioonis ikka olid). Kõik oli tore, kuni tekkis probleem, et andmebaasist füüsiliselt kaugel asuvas arvutis toimus tuhandete uute objektide salvestamine väga aeglaselt (tuhanded eraldi paketid arvuti ja andmebaasivahel läbi keerulise füüsilise võrgu).
Lahenduseks tegin järgnevat:
Kulus vist pool päeva ja objektide tuhandete objektide salvestamiseks kulus ainult kümmekond päringut - kõik objektid pandi andmebaasi pärinevuse järgi kolme massiivi (iga tabeli kohta massiiv) (update, delete ja insert massiivid), insert jagati gruppidesse (maksimaalse lubatud andmebaasi päringu parameetrite arvu tõttu) ja andmebaasi poole saadetigi kümmekond hiiglaslikku käsku.

Minu küsimus ongi, et kuidas mapperid selliseid andmebaasioperatsioone teevad ning kas nendes annab sellist salvestamise viisi määrata? Mina igatahes olin rahul, et sain 5 minutilise salvestamise 10 sekundiliseks tehtud.

Tean-tean - peaksin kasutama teenuste kihti - tegelen sellega.</description>
		<content:encoded><![CDATA[<p>Mina kasutasin eelnevatel töökohtadel mappereid. Tunnistan ausalt üles, et nende hingeellu polnud aega ega mahti põhjalikult süveneda ning &#8220;ise tehtud, hästi tehtud&#8221; loogika järgi tegin uues kohas üksi arendades enda andmebaasikihi.<br />
Ma tõesti ei tea, mis loogika järgi need mappereid suure hunniku uusi objekte salvestavad, aga minul juhtus selline probleem:<br />
Minu andmebaasikiht salvestas igat objekti eraldi (transaktsioonis ikka olid). Kõik oli tore, kuni tekkis probleem, et andmebaasist füüsiliselt kaugel asuvas arvutis toimus tuhandete uute objektide salvestamine väga aeglaselt (tuhanded eraldi paketid arvuti ja andmebaasivahel läbi keerulise füüsilise võrgu).<br />
Lahenduseks tegin järgnevat:<br />
Kulus vist pool päeva ja objektide tuhandete objektide salvestamiseks kulus ainult kümmekond päringut - kõik objektid pandi andmebaasi pärinevuse järgi kolme massiivi (iga tabeli kohta massiiv) (update, delete ja insert massiivid), insert jagati gruppidesse (maksimaalse lubatud andmebaasi päringu parameetrite arvu tõttu) ja andmebaasi poole saadetigi kümmekond hiiglaslikku käsku.</p>
<p>Minu küsimus ongi, et kuidas mapperid selliseid andmebaasioperatsioone teevad ning kas nendes annab sellist salvestamise viisi määrata? Mina igatahes olin rahul, et sain 5 minutilise salvestamise 10 sekundiliseks tehtud.</p>
<p>Tean-tean - peaksin kasutama teenuste kihti - tegelen sellega.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Gunnar</title>
		<link>http://www.dt.ee/blog/kood/net/2009/11/mapperid/#comment-8006</link>
		<dc:creator>Gunnar</dc:creator>
		<pubDate>Mon, 16 Nov 2009 15:04:19 +0000</pubDate>
		<guid isPermaLink="false">http://www.dt.ee/blog/?p=2806#comment-8006</guid>
		<description>Andmemudelist alustamine tähendab seda, et kogu rakenduse kood kirjutatakse ümber andmebaasist lähtuva loogika ja mängureeglite. Andmebaas ja objektmudel pole enamasti 1:1 kooskõlla kuigi lihtsasti viidavad kui esimene mingit spetsiifikat või nii-saab-mugavamalt-stiilis häkke sisaldab. Kõrvalekaldumine kolmandamast normaalkujust on vaid üks näide. 

Osad karmid mehed kirjutavad rakenduse koodi ja tabelite vahele veel terve spetsiaalse kihi protseduure, mis omakorda maailma paremaks teevad ja väga targad on. Tihti on tegemist wrapperitega kuhu hakkab aja jooksul kuhjuma igasugust töötava koodi mõttes kõrvaltegevust ja kõrvalist loogikat. Tulemuseks jälle see, et koodi tasemel tuleb teha terve rivi mõistusele vastukäivaid häkke, et andmemudel "korrektselt" arvesse saaks võetud.</description>
		<content:encoded><![CDATA[<p>Andmemudelist alustamine tähendab seda, et kogu rakenduse kood kirjutatakse ümber andmebaasist lähtuva loogika ja mängureeglite. Andmebaas ja objektmudel pole enamasti 1:1 kooskõlla kuigi lihtsasti viidavad kui esimene mingit spetsiifikat või nii-saab-mugavamalt-stiilis häkke sisaldab. Kõrvalekaldumine kolmandamast normaalkujust on vaid üks näide. </p>
<p>Osad karmid mehed kirjutavad rakenduse koodi ja tabelite vahele veel terve spetsiaalse kihi protseduure, mis omakorda maailma paremaks teevad ja väga targad on. Tihti on tegemist wrapperitega kuhu hakkab aja jooksul kuhjuma igasugust töötava koodi mõttes kõrvaltegevust ja kõrvalist loogikat. Tulemuseks jälle see, et koodi tasemel tuleb teha terve rivi mõistusele vastukäivaid häkke, et andmemudel &#8220;korrektselt&#8221; arvesse saaks võetud.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Bunter</title>
		<link>http://www.dt.ee/blog/kood/net/2009/11/mapperid/#comment-8005</link>
		<dc:creator>Bunter</dc:creator>
		<pubDate>Mon, 16 Nov 2009 14:19:16 +0000</pubDate>
		<guid isPermaLink="false">http://www.dt.ee/blog/?p=2806#comment-8005</guid>
		<description>Ma olen täheldanud sarnaseid väiteid. Kui inimene on kulutanud tegelikult nädalaid ja kuid oma SQL-i oskuste lihvimiseks sinnajuurde käivate API-dega, siis tundub millegipärast see mõned tunnid kuni päev nhibernatega tohutu koorem. Programmeerijad on loogilised, eks?

Üks täiendav "ei" faktor on andmemudel, mis pole absoluutselt mäpperisõbralik. Tavaliselt tähendab see 3-ndast normaalkujust räigeid kõrvalekaldumisi, halbu võtmestrateegiaid ning kolekeerulisi seosetabeleid (haakub normaalkuju eiramisega).</description>
		<content:encoded><![CDATA[<p>Ma olen täheldanud sarnaseid väiteid. Kui inimene on kulutanud tegelikult nädalaid ja kuid oma SQL-i oskuste lihvimiseks sinnajuurde käivate API-dega, siis tundub millegipärast see mõned tunnid kuni päev nhibernatega tohutu koorem. Programmeerijad on loogilised, eks?</p>
<p>Üks täiendav &#8220;ei&#8221; faktor on andmemudel, mis pole absoluutselt mäpperisõbralik. Tavaliselt tähendab see 3-ndast normaalkujust räigeid kõrvalekaldumisi, halbu võtmestrateegiaid ning kolekeerulisi seosetabeleid (haakub normaalkuju eiramisega).</p>
]]></content:encoded>
	</item>
</channel>
</rss>

