<?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"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Raportowanie a CQRS</title>
	<atom:link href="http://simon-says-architecture.com/2010/03/11/raportowanie-a-cqrs/feed/" rel="self" type="application/rss+xml" />
	<link>http://simon-says-architecture.com/2010/03/11/raportowanie-a-cqrs/</link>
	<description>Szymon Pobiega about software engineering and architecture</description>
	<lastBuildDate>Fri, 03 Feb 2012 10:29:36 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<meta xmlns="http://www.w3.org/1999/xhtml" name="robots" content="noindex,follow" />
	<item>
		<title>By: Szymon Pobiega</title>
		<link>http://simon-says-architecture.com/2010/03/11/raportowanie-a-cqrs/comment-page-1/#comment-706</link>
		<dc:creator>Szymon Pobiega</dc:creator>
		<pubDate>Thu, 11 Mar 2010 15:43:02 +0000</pubDate>
		<guid isPermaLink="false">http://simon-says-architecture.com/?p=495#comment-706</guid>
		<description>Jak już pisałem, nie jestem ekspertem od BI, ale moje dotychczasowe doświadczenie z systemami OLTP pozwala mi stwierdzić, że gdybym był odpowiedzialny za budowę nowego rozwiązania na pewno oddzieliłbym funkcjonalność raportową do osobnej bazy. Po prostu zbyt wiele problemów powoduje uruchamianie na bazie transakcyjnej bardzo skomplikowanych zapytań dla raportów.

Kwestia, jak często ją aktualizować jest interesująca i zapewne zależy od potrzeb biznesu. W pewnych przypadkach wystarczy raz dziennie i moje rozwiązanie z CQRS byłoby przesadą. W innych natomiast ważne jest, aby raporty agregujące dane były aktualne co do minut.

@Procent

Dlaczego baza do zapytań jest szybsza?
1. Bo jest zdenormalizowana :) i zapytania na potrzeby list/szczegółów mają mniej joinów
2. Bo można uruchomić dowolną ilość serwerów bazodanowych hostujących bazę do odczytu i w ten sposób skalować tę warstwę niemal liniowo

@Gutek

Co jest nie tak z tą normalizacją? Czegoś nie zajarzyłem? ;-)</description>
		<content:encoded><![CDATA[<p>Jak już pisałem, nie jestem ekspertem od BI, ale moje dotychczasowe doświadczenie z systemami OLTP pozwala mi stwierdzić, że gdybym był odpowiedzialny za budowę nowego rozwiązania na pewno oddzieliłbym funkcjonalność raportową do osobnej bazy. Po prostu zbyt wiele problemów powoduje uruchamianie na bazie transakcyjnej bardzo skomplikowanych zapytań dla raportów.</p>
<p>Kwestia, jak często ją aktualizować jest interesująca i zapewne zależy od potrzeb biznesu. W pewnych przypadkach wystarczy raz dziennie i moje rozwiązanie z CQRS byłoby przesadą. W innych natomiast ważne jest, aby raporty agregujące dane były aktualne co do minut.</p>
<p>@Procent</p>
<p>Dlaczego baza do zapytań jest szybsza?<br />
1. Bo jest zdenormalizowana <img src='http://simon-says-architecture.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  i zapytania na potrzeby list/szczegółów mają mniej joinów<br />
2. Bo można uruchomić dowolną ilość serwerów bazodanowych hostujących bazę do odczytu i w ten sposób skalować tę warstwę niemal liniowo</p>
<p>@Gutek</p>
<p>Co jest nie tak z tą normalizacją? Czegoś nie zajarzyłem? <img src='http://simon-says-architecture.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Gutek</title>
		<link>http://simon-says-architecture.com/2010/03/11/raportowanie-a-cqrs/comment-page-1/#comment-705</link>
		<dc:creator>Gutek</dc:creator>
		<pubDate>Thu, 11 Mar 2010 13:25:10 +0000</pubDate>
		<guid isPermaLink="false">http://simon-says-architecture.com/?p=495#comment-705</guid>
		<description>-- uwaga, jezeli dobrze zrozumialem tresc art :) to komentarz jest poprawny :) jezeli nie to sorki ;)

Jezeli chodzi o trzecia baze. IMO do raportow (w sensie prawdziwym) przewaznie powinno sie tworzy baze agregujaca dane na scisle okreslonych zasadach - jak te dane beda agregowane i kiedy to zalezy juz od nas.

@Procent
baza raportowa to nie to samo co baza zwykla. Tutaj istnieje sens pchania danych wtedy kiedy potrzebne (oczywiscie i bez tego co jakis czas ta baza powinna sie aktualizowac). Dodatkowo przewaznie raporty nie stanowia Widoku na dane w bazie, ale jakies konkretne agregacje danych. W tym wypadku moga one znaczaco obciazyc serwer bazodanowy. 

w zaleznosci od projektu albo stosowalem kostki albo osobna baze. sposob aktualizacji bazy raportowej zalezal stricte od ograniczenia wybranego rodzaju rozwiazania.

@Procent i @Szymon
uwazajcie ze slowem normalizacja w bazach danych :)</description>
		<content:encoded><![CDATA[<p>&#8211; uwaga, jezeli dobrze zrozumialem tresc art <img src='http://simon-says-architecture.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  to komentarz jest poprawny <img src='http://simon-says-architecture.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  jezeli nie to sorki <img src='http://simon-says-architecture.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Jezeli chodzi o trzecia baze. IMO do raportow (w sensie prawdziwym) przewaznie powinno sie tworzy baze agregujaca dane na scisle okreslonych zasadach &#8211; jak te dane beda agregowane i kiedy to zalezy juz od nas.</p>
<p>@Procent<br />
baza raportowa to nie to samo co baza zwykla. Tutaj istnieje sens pchania danych wtedy kiedy potrzebne (oczywiscie i bez tego co jakis czas ta baza powinna sie aktualizowac). Dodatkowo przewaznie raporty nie stanowia Widoku na dane w bazie, ale jakies konkretne agregacje danych. W tym wypadku moga one znaczaco obciazyc serwer bazodanowy. </p>
<p>w zaleznosci od projektu albo stosowalem kostki albo osobna baze. sposob aktualizacji bazy raportowej zalezal stricte od ograniczenia wybranego rodzaju rozwiazania.</p>
<p>@Procent i @Szymon<br />
uwazajcie ze slowem normalizacja w bazach danych <img src='http://simon-says-architecture.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Thomas</title>
		<link>http://simon-says-architecture.com/2010/03/11/raportowanie-a-cqrs/comment-page-1/#comment-704</link>
		<dc:creator>Thomas</dc:creator>
		<pubDate>Thu, 11 Mar 2010 09:06:13 +0000</pubDate>
		<guid isPermaLink="false">http://simon-says-architecture.com/?p=495#comment-704</guid>
		<description>Jedyne czego sie obawiam oprocz problemu ktory poruszyl Procent w swoim komentarzu jest takze strafa techniczna ktora ma zajac sie aktualizacja bazy raportowej. W przypadku bardziej skomplikowanych aplikacji mapping pomiedzy baza do zapytan i baza raportowa moze byc bardzo skomplikowany.
Z drugiej strony patrzac na to ze czesto generowanie raportow moze byc traktowane jako inny projekt lub podczesc projektu, dodatkowa praca nad tym aspektem wcale mnie nie przeraza.
Mysle jednak ze trzecia baza bylaby najlepszym rozwiazaniem.</description>
		<content:encoded><![CDATA[<p>Jedyne czego sie obawiam oprocz problemu ktory poruszyl Procent w swoim komentarzu jest takze strafa techniczna ktora ma zajac sie aktualizacja bazy raportowej. W przypadku bardziej skomplikowanych aplikacji mapping pomiedzy baza do zapytan i baza raportowa moze byc bardzo skomplikowany.<br />
Z drugiej strony patrzac na to ze czesto generowanie raportow moze byc traktowane jako inny projekt lub podczesc projektu, dodatkowa praca nad tym aspektem wcale mnie nie przeraza.<br />
Mysle jednak ze trzecia baza bylaby najlepszym rozwiazaniem.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Procent</title>
		<link>http://simon-says-architecture.com/2010/03/11/raportowanie-a-cqrs/comment-page-1/#comment-703</link>
		<dc:creator>Procent</dc:creator>
		<pubDate>Thu, 11 Mar 2010 07:15:45 +0000</pubDate>
		<guid isPermaLink="false">http://simon-says-architecture.com/?p=495#comment-703</guid>
		<description>Czekałem na bardziej odpowiedni post z zadaniem tego pytania, ale jednak zadam teraz:). Odnośnie fragmentu:

&quot;posiadają wbudowany mechanizm wypychania danych z bazy transakcyjnej w czasie rzeczywistym (służący do zasilania bazy dla zapytań)&quot;

No właśnie... jak to się ma do wydajności względem &quot;tradycyjnego&quot; podejścia? Normalnie operacje zapisu/odczytu przeplatają się, a baza &quot;zapytaniowa&quot; teoretycznie ma być szybsza, ponieważ jest tylko do odczytu. Ale przecież nie jest, ponieważ non stop zachodzą w niej takie same zmiany jak w bazie transakcyjnej. Może nawet zachodzi w niej zmian wynikających z jej zdenormalizowanej natury.
Widziałem rozwiązania &quot;optymalizujące&quot; pchające zmiany do bazy raportowej w paczkach jedynie wtedy, gdy przychodzi jakieś żądanie tak aby niepotrzebnie tej bazy nie aktualizować. Ale wydaje mi się to trochę bez sensu - po co wstrzymywać się z aktualizacją bazy do momentu, w którym będzie obciążona zapytaniami? :)
Czy masz jakieś przemyślenia dotyczące właśnie tego tematu - aktualizacji bazy raportowej/zapytaniowej, ew. różnych podejść do tego problemu?</description>
		<content:encoded><![CDATA[<p>Czekałem na bardziej odpowiedni post z zadaniem tego pytania, ale jednak zadam teraz:). Odnośnie fragmentu:</p>
<p>&#8220;posiadają wbudowany mechanizm wypychania danych z bazy transakcyjnej w czasie rzeczywistym (służący do zasilania bazy dla zapytań)&#8221;</p>
<p>No właśnie&#8230; jak to się ma do wydajności względem &#8220;tradycyjnego&#8221; podejścia? Normalnie operacje zapisu/odczytu przeplatają się, a baza &#8220;zapytaniowa&#8221; teoretycznie ma być szybsza, ponieważ jest tylko do odczytu. Ale przecież nie jest, ponieważ non stop zachodzą w niej takie same zmiany jak w bazie transakcyjnej. Może nawet zachodzi w niej zmian wynikających z jej zdenormalizowanej natury.<br />
Widziałem rozwiązania &#8220;optymalizujące&#8221; pchające zmiany do bazy raportowej w paczkach jedynie wtedy, gdy przychodzi jakieś żądanie tak aby niepotrzebnie tej bazy nie aktualizować. Ale wydaje mi się to trochę bez sensu &#8211; po co wstrzymywać się z aktualizacją bazy do momentu, w którym będzie obciążona zapytaniami? <img src='http://simon-says-architecture.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Czy masz jakieś przemyślenia dotyczące właśnie tego tematu &#8211; aktualizacji bazy raportowej/zapytaniowej, ew. różnych podejść do tego problemu?</p>
]]></content:encoded>
	</item>
</channel>
</rss>

