<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
xmlns:rawvoice="http://www.rawvoice.com/rawvoiceRssModule/"
>

<channel>
	<title>Solution Hacker &#187; sql</title>
	<atom:link href="http://www.solutionhacker.com/tag/sql/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.solutionhacker.com</link>
	<description>This blog provides solutions for enterpreneurs!</description>
	<lastBuildDate>Sun, 05 Feb 2012 00:45:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=115</generator>
<!-- podcast_generator="Blubrry PowerPress/2.0.4" -->
	<itunes:summary>This blog provides solutions for enterpreneurs!</itunes:summary>
	<itunes:author>Solution Hacker</itunes:author>
	<itunes:explicit>no</itunes:explicit>
	<itunes:image href="http://www.solutionhacker.com/wp-content/plugins/powerpress/itunes_default.jpg" />
	<itunes:subtitle>This blog provides solutions for enterpreneurs!</itunes:subtitle>
	<image>
		<title>Solution Hacker &#187; sql</title>
		<url>http://www.solutionhacker.com/wp-content/plugins/powerpress/rss_default.jpg</url>
		<link>http://www.solutionhacker.com</link>
	</image>
		<item>
		<title>Reporting solution!</title>
		<link>http://www.solutionhacker.com/implement-your-idea/build-your-website/reporting-solution/</link>
		<comments>http://www.solutionhacker.com/implement-your-idea/build-your-website/reporting-solution/#comments</comments>
		<pubDate>Wed, 21 Jan 2009 08:24:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Site Building]]></category>
		<category><![CDATA[AMF]]></category>
		<category><![CDATA[iBatis]]></category>
		<category><![CDATA[jasper]]></category>
		<category><![CDATA[pagination]]></category>
		<category><![CDATA[pdf generation]]></category>
		<category><![CDATA[pentaho]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[streaming]]></category>

		<guid isPermaLink="false">http://www.solutionhacker.com/?p=205</guid>
		<description><![CDATA[<h2>Open source reporting</h2>
<p>My company needs a reporting engine but it doesn't want to go for the expensive commerical ones like <strong>MicroStrategy</strong>. In fact, I don't know why we need to pay so much because there are tools out there for FREE. As usual, I googled the Net and found out two seemingly promising open source reporting solution.</p>
<ol>
    <li><strong>Pentaho </strong>Reporting</li>
    <li><strong>Jasper </strong>Reporting</li>
</ol>
<p>Both of them are bundled with a suite of tools related to <strong>OLAP</strong>, <strong>Data Mining</strong>, <strong>ETL</strong>.. etc. To me, I just want an non-invasive reporting engine that can easily integrate into our architecture. To my dismay, I found out Pentaho doesn't go this route. It basically gives you a reporting server configured. You could build your reports and deploy them following the manual. However, I hardly see a reporting solution that could satisfy all the business requirements without customization. All I expected from Pentaho is a jar file with documents that shows me how to use its api to generate reports in different formats and how to integrate with our database. I have attempted to look into the code and extracted the stuff I want from Pentaho. However, I found out the engine is actually not powerful. To strip out the workflow part, it is basically a simple SQL executor that later on will render the result according to the UI info embedded in the report definition. What is wrong with that?</p>
<p><!--more--></p>
<ol>
    <li>We want to handle <strong>pagination </strong>and <strong>data streaming</strong> as our data volume is huge. In Pentaho, you need to take care these yourself. So, you write your own sql, paginate yourself, stream it yourself if the resultset is huge. Isn't it what we are doing without it? Apart from that, each report in Pentaho needs a report definition. It supports dynamic sql via token replacement. It is primitive as I want it to support control flow because I may decide what tables to join based on the input filters.</li>
    <li>On the UI side, Pentaho helps you to render your result into graph, table...etc. Again, I don't like this UI solution as well. I found that <strong>JFreeChart </strong>is not as powerful as the Flex solution. I am adopting Flex and it gives me much powerful visualization tool. All I want is to ship my Flex app the data from my query's result.</li>
</ol>
<p>How about <strong>Japser</strong>? Pretty much the same but the good thing of Jasper is that it gives you the jar and document of how to use it instead of a reporting server like Pentaho. So, I can use it as report renderer to generate PDF and Excel like other utility libraries I use. So, what is my final solution?</p>
<p>I finally decide to create my own report definition that my Flex UI can take and render out the reporting interface. So, I don't need to create form for each report. Apart from that, in my report definition, I have iBatis SQL template embedded. So, I can leverage its dynamic sql feature that supports control flow logic and the auto result class population. Yes, I still need to handle pagination and streaming myself. But, at least, it already saves up my time. The result object populated will return to Flex via AMF. So, I don't need to marshal and de-marshal it in xml. It saves the processing time and costs less bandwidth. At the end, my solution combines the best in the market:</p>
<ol>
    <li>Powerful reporting widgets provided by Flex</li>
    <li>Fast streaming and RPC protocol - <strong>AMF</strong></li>
    <li>Good dynamic sql generation and mapping tool from <strong>iBatis</strong></li>
    <li>Good reporting rendering tool from Jasper that helps me to do PDF and Excel generation</li>
</ol>
<p>My solution is more flexible. As I can plugin hibernate map if I don't want to write my own sql at all. Apart from that, no UI work is needed to deploy a new report unless my generic reporting interface is not enough.</p>
<p>Later, if I really need the workflow engine provided by Pentaho, I can plug it in. Again, the document provided doesn't give us clear instruction or APIs of how to do it.</p>
<h2>Reference</h2>
<p>Below are references I used to build my solution:</p>
<ol>
    <li><a href="http://Flexible reporting with JasperReports and iBATIS">Flexible reporting with JasperReport and iBatis</a></li>
    <li><a href="http://e-docs.bea.com/kodo/docs41/full/html/ref_guide_dbsetup_lrs.html">How Kodo JPA handles large result set</a> (its <a href="http://edocs.bea.com/kodo/docs41/full/html/ref_guide_optimization.html">optimization</a> guide is good reference even you may not use Kodo)</li>
    <li><a href="http://my.advisor.com/articles.nsf/aid/14753">Process Large Result Sets in Java Web Application</a></li>
    <li><a href="http://www.ahmadsoft.org/articles/stream/presidents.html">Streaming architecture</a></li>
</ol>
<p>&#160;</p>]]></description>
			<content:encoded><![CDATA[<h2>Open source reporting</h2>
<p>My company needs a reporting engine but it doesn&#8217;t want to go for the expensive commerical ones like <strong>MicroStrategy</strong>. In fact, I don&#8217;t know why we need to pay so much because there are tools out there for FREE. As usual, I googled the Net and found out two seemingly promising open source reporting solution.</p>
<ol>
<li><strong>Pentaho </strong>Reporting</li>
<li><strong>Jasper </strong>Reporting</li>
</ol>
<p>Both of them are bundled with a suite of tools related to <strong>OLAP</strong>, <strong>Data Mining</strong>, <strong>ETL</strong>.. etc. To me, I just want an non-invasive reporting engine that can easily integrate into our architecture. To my dismay, I found out Pentaho doesn&#8217;t go this route. It basically gives you a reporting server configured. You could build your reports and deploy them following the manual. However, I hardly see a reporting solution that could satisfy all the business requirements without customization. All I expected from Pentaho is a jar file with documents that shows me how to use its api to generate reports in different formats and how to integrate with our database. I have attempted to look into the code and extracted the stuff I want from Pentaho. However, I found out the engine is actually not powerful. To strip out the workflow part, it is basically a simple SQL executor that later on will render the result according to the UI info embedded in the report definition. What is wrong with that?</p>
<p><span id="more-205"></span></p>
<ol>
<li>We want to handle <strong>pagination </strong>and <strong>data streaming</strong> as our data volume is huge. In Pentaho, you need to take care these yourself. So, you write your own sql, paginate yourself, stream it yourself if the resultset is huge. Isn&#8217;t it what we are doing without it? Apart from that, each report in Pentaho needs a report definition. It supports dynamic sql via token replacement. It is primitive as I want it to support control flow because I may decide what tables to join based on the input filters.</li>
<li>On the UI side, Pentaho helps you to render your result into graph, table&#8230;etc. Again, I don&#8217;t like this UI solution as well. I found that <strong>JFreeChart </strong>is not as powerful as the Flex solution. I am adopting Flex and it gives me much powerful visualization tool. All I want is to ship my Flex app the data from my query&#8217;s result.</li>
</ol>
<p>How about <strong>Japser</strong>? Pretty much the same but the good thing of Jasper is that it gives you the jar and document of how to use it instead of a reporting server like Pentaho. So, I can use it as report renderer to generate PDF and Excel like other utility libraries I use. So, what is my final solution?</p>
<p>I finally decide to create my own report definition that my Flex UI can take and render out the reporting interface. So, I don&#8217;t need to create form for each report. Apart from that, in my report definition, I have iBatis SQL template embedded. So, I can leverage its dynamic sql feature that supports control flow logic and the auto result class population. Yes, I still need to handle pagination and streaming myself. But, at least, it already saves up my time. The result object populated will return to Flex via AMF. So, I don&#8217;t need to marshal and de-marshal it in xml. It saves the processing time and costs less bandwidth. At the end, my solution combines the best in the market:</p>
<ol>
<li>Powerful reporting widgets provided by Flex</li>
<li>Fast streaming and RPC protocol &#8211; <strong>AMF</strong></li>
<li>Good dynamic sql generation and mapping tool from <strong>iBatis</strong></li>
<li>Good reporting rendering tool from Jasper that helps me to do PDF and Excel generation</li>
</ol>
<p>My solution is more flexible. As I can plugin hibernate map if I don&#8217;t want to write my own sql at all. Apart from that, no UI work is needed to deploy a new report unless my generic reporting interface is not enough.</p>
<p>Later, if I really need the workflow engine provided by Pentaho, I can plug it in. Again, the document provided doesn&#8217;t give us clear instruction or APIs of how to do it.</p>
<h2>Reference</h2>
<p>Below are references I used to build my solution:</p>
<ol>
<li><a href="http://Flexible reporting with JasperReports and iBATIS">Flexible reporting with JasperReport and iBatis</a></li>
<li><a href="http://e-docs.bea.com/kodo/docs41/full/html/ref_guide_dbsetup_lrs.html">How Kodo JPA handles large result set</a> (its <a href="http://edocs.bea.com/kodo/docs41/full/html/ref_guide_optimization.html">optimization</a> guide is good reference even you may not use Kodo)</li>
<li><a href="http://my.advisor.com/articles.nsf/aid/14753">Process Large Result Sets in Java Web Application</a></li>
<li><a href="http://www.ahmadsoft.org/articles/stream/presidents.html">Streaming architecture</a></li>
</ol>
<p>&#160;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.solutionhacker.com/implement-your-idea/build-your-website/reporting-solution/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

