<?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/"
	>

<channel>
	<title>instantOLAP &#187; Stores</title>
	<atom:link href="http://www.instantolap.com/tag/stores/feed" rel="self" type="application/rss+xml" />
	<link>http://www.instantolap.com</link>
	<description>Business intelligence for the Java Platform</description>
	<lastBuildDate>Thu, 12 Aug 2010 18:53:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>OLAP Cube, ROLAP, MOLAP, HOLAP: How to use Stores</title>
		<link>http://www.instantolap.com/howtos/olap-rolap-molap-holap-how-to-use-stores#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://www.instantolap.com/howtos/olap-rolap-molap-holap-how-to-use-stores#comments</comments>
		<pubDate>Thu, 08 Jul 2010 20:20:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[HowTos]]></category>
		<category><![CDATA[HOLAP]]></category>
		<category><![CDATA[MOLAP]]></category>
		<category><![CDATA[OLAP]]></category>
		<category><![CDATA[OLAP Cube]]></category>
		<category><![CDATA[ROLAP]]></category>
		<category><![CDATA[Stores]]></category>

		<guid isPermaLink="false">http://www.instantolap.com/?p=916</guid>
		<description><![CDATA[In instantOLAP, Stores can be used to aggregate ROLAP Cubes into their MOLAP form or into hybrid mixtures of ROLAP and MOLAP (HOLAP). This article describes how to create and manage Stores in instantOLAP.]]></description>
			<content:encoded><![CDATA[<p>The built in Offline Stores in instantOLAP allow to aggregate the classical cubes fully or partwise into light speed local data stores. With Offline Stores, you can realize all modern forms of OLAP storage: <strong>ROLAP </strong>(direct access to relational databases when querying data), <strong>MOLAP </strong>(fully aggregated cubes with high performance) or <strong>HOLAP </strong>(a hybrid mixture of both).</p>
<p><span id="more-916"></span></p>
<div class='toc wptoc'>
<h2>Contents</h2>
<ol class='toc-odd level-1'>
	<li>
		<a href="#Classical_ROLAP_Cubes">Classical ROLAP Cubes</a>
	</li>
	<li>
		<a href="#Building_MOLAP_Cubes">Building MOLAP Cubes</a>
		<ol class='toc-even level-2'>
			<li>
				<a href="#Creating_a_new_Store">Creating a new Store</a>
			</li>
			<li>
				<a href="#Filling_the_Store_with_the_Model_Manager">Filling the Store with the Model Manager</a>
			</li>
			<li>
				<a href="#How_to_change_the_aggregation_scheme_for_dimensions_and_facts">How to change the aggregation scheme for dimensions and facts</a>
			</li>
			<li>
				<a href="#Resolving_errors_in_Stores">Resolving errors in Stores</a>
			</li>
			<li>
				<a href="#Combining_multiple_Stores">Combining multiple Stores</a>
			</li>
		</ol>
	<li>
		<a href="#Building_HOLAP_Cubes">Building HOLAP Cubes</a>
	</li>
	<li>
		<a href="#Refreshing_Offline_Stores">Refreshing Offline Stores</a>
		<ol class='toc-even level-2'>
			<li>
				<a href="#Automatic_refresh">Automatic refresh</a>
			</li>
			<li>
				<a href="#Crontab_refresh">Crontab refresh</a>
			</li>
</ol>
</ol>
</ol>
</div>
<div class='wptoc-end'>&nbsp;</div>
<span id="Classical_ROLAP_Cubes"><h2>Classical ROLAP Cubes</h2></span>
<p>In instantOLAP, every Cube is by default a ROLAP cube. This is because we believe creating a new cube is very productive with adhoc cubes: You can add new dimensions to cubes or modify mappings and then instantly test the new results without any aggregation process (which may take time).</p>
<p>After you finished the first production quality version of your cube it is time to test its performance and to improve it if neccesary. This is when Offline Stores come into sight.</p>
<span id="Building_MOLAP_Cubes"><h2>Building MOLAP Cubes</h2></span>
<span id="Creating_a_new_Store"><h3>Creating a new Store</h3></span>
<p>Since version 2.6 building offline stores is very easy and comfortable: Use the context menu of the cube to add a new Offline Store to it. Then you must decide, which dimensions you want to add to the cube and how you want them to be loaded.</p>
<p><a href="http://www.instantolap.com/wp-content/uploads/2010/07/addstore.png#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed"><img class="alignnone size-full wp-image-931" title="addstore" src="http://www.instantolap.com/wp-content/uploads/2010/07/addstore.png" alt="OLAP Cube, ROLAP, MOLAP, HOLAP: How to use Stores" width="600" height="518" /></a></p>
<p>After you added the store, a new column will appear right to the mappings. In this new column you can define, which dimensions and facts you want to be added to the new Store.</p>
<p>Now it&#8217;s time to create the most simple form of a store: Add every dimension and fact to the store by clicking into the related cells of the column. A checkmark will show that the dimension or fact is now part of the Store.</p>
<p><a href="http://www.instantolap.com/wp-content/uploads/2010/07/firststore.png#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed"><img class="alignnone size-full wp-image-932" title="firststore" src="http://www.instantolap.com/wp-content/uploads/2010/07/firststore.png" alt="OLAP Cube, ROLAP, MOLAP, HOLAP: How to use Stores" width="600" height="519" /></a></p>
<span id="Filling_the_Store_with_the_Model_Manager"><h3>Filling the Store with the Model Manager</h3></span>
<p>Now you should open the Model Manager and fill the Store with data. Locate the Model in the Manager, open the Model Information dialog for &#8220;demo/demo&#8221; by double clicking the model and switch to the Cubes tab in the dialog.</p>
<p><a href="http://www.instantolap.com/wp-content/uploads/2010/07/modelinfo.png#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed"><img class="alignnone size-full wp-image-933" title="modelinfo" src="http://www.instantolap.com/wp-content/uploads/2010/07/modelinfo.png" alt="OLAP Cube, ROLAP, MOLAP, HOLAP: How to use Stores" width="598" height="261" /></a></p>
<p>Here you can see the new Store which replaced its source cube in the Cubes tab. The most important information for Stores is the &#8220;State&#8221; columns which shows if the Store is currently available (online), not available (offline) or building (online + building or offline + building).</p>
<p>Because our cube is not loaded yet, its state is &#8220;offline&#8221;. To load the Store, select it and use the &#8220;Rebuild&#8221; button from the toolbar at the right side. Then wait a few seconds and use the &#8220;Refresh&#8221; button from the toolbar to view the current state.</p>
<p><a href="http://www.instantolap.com/wp-content/uploads/2010/07/loadedstore.png#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed"><img class="alignnone size-full wp-image-934" title="loadedstore" src="http://www.instantolap.com/wp-content/uploads/2010/07/loadedstore.png" alt="OLAP Cube, ROLAP, MOLAP, HOLAP: How to use Stores" width="598" height="261" /></a></p>
<p>Now the store is loaded and the execution time of the demo reports will shrink from seconds to milliseconds. There are a couple of new informations in the table: The build time, the error message for the case the build process stopped with an error, the number of raised warning while loading the data and the Store size.</p>
<p>The Store size, the last reload timestamp and the build time are simple informations from the loading process. The build time show how long it took to load and aggregate the source data and the size shows the effective (compressed) size of the Store. This is not the number of cells the Store can deliver but the number of informations instantOLAP wrote to the local disk. In this oexample, the Store needs 73,863 records to deliver data for 151,632,000 cells, a compression of 2000:1!</p>
<p>The error message and the warnings are very important informations for the case your cube delivers no or wrong data or didn&#8217;t load at all.</p>
<span id="How_to_change_the_aggregation_scheme_for_dimensions_and_facts"><h3>How to change the aggregation scheme for dimensions and facts</h3></span>
<p>There are two different ways how to aggregate the values for higher levels of a dimension: By doing a rollup or by querying each single level.</p>
<p>Rolling up means that the system will only query the lowest level and single mapped keys from the database and calculate every upper level manually. Querying the levels means the system will perform one SQL query per level.</p>
<p>Be careful with the query scheme, because usually your Store contains more than one dimension. E.g. if you have three dimensions with three levels, this will perform 27 queries to the database. Ten dimensions with three levels means 118.000 queries, one for each possible combination of each dimension level!</p>
<p>But why should you use the query scheme? There are some reasons you might need this:</p>
<ul>
<li>One of your facts uses a COUNT DISTINCT aggregation, and this cannot be calculate by performing a rollup in some cases</li>
<li>Your hierarchy cannot be calculated by rolling up data because a key value is not the SUM, AVG or else of its children</li>
<li>Sometimes it can be faster to perform many small queries than a single, large one</li>
</ul>
<p>Also for facts you can change the aggregation scheme, but here you can change the aggregation formula the system uses. The default value is &#8220;default&#8221; &#8211; then the Store automatically determines the aggregation type from the SQL expression you mapped the fact with. But can also change it manually to one of the aggregations &#8220;SUM&#8221;, &#8220;AVG&#8221;, &#8220;MIN&#8221;, &#8220;MAX&#8221; etc. This is needed whenever the system is unable to automatically determine the aggregation from the SQL expression or simply want something different.</p>
<span id="Resolving_errors_in_Stores"><h3>Resolving errors in Stores</h3></span>
<p>There are some pitfalls when loading the data of a Cube into a Store. The Store might raise an error or collect warning while its building process. Whenever an error is raised you should, of course, fixed it and reload the Store again. But even warning should always be fixed, because they can be a reason for wrong data. But why can a Store raise errors or warnings when original cube works correct?</p>
<p>There two main reasons and they are not always easy to understand:</p>
<ul>
<li>In ROLAP cubes, the cube will of course only load data for the requested dimensions and facts. Which also means it will only use the tables containing information for this dimension and facts. But if you combined, for example, two different fact tables in one cube, the Store will perform <strong>one </strong>SQL query to gather both facts &#8211; and combining two fact tables means a full permutaion of both tables, the numbers get exponentially higher. Maybe with the ROLAP version of your cube you didn&#8217;t see the error, because you always used only one of the facts, but the Store combines everything.</li>
<li>Your cube may deliver data for more keys than a dimension contains. E.g. if you build a product dimension and filter the dimension to load only yellow products, you must apply the same filter to the cube. Otherwise, the cube will load facts for keys which are not part of the dimension, warn you (in fact, this is 99.99% of all warning a cube will raise are &#8220;missing keys&#8221;) and drop the row. Dropping the data itself is not the problem, because you don&#8217;t want the cube to load data for unknown keys, but your original ROLAP does it!  E.g. if the ROLAP cube is queried for the Amount of 2010 for all products, the ROLAP Cube will simply generate no WHERE statement for products, because you want all of them. But the store will calculate this value by rolling up all product data and the value will be less than the ROLAP value. This is not an error in the Store, it is originally located in the ROLAP Cube!</li>
</ul>
<p>As you can see, the source for all problems with Stores is the ROLAP Cube itself. Therefore, you should always look for error messages and warnings and try to eliminate the problems in you cube.</p>
<p>Also important for warnings: You need to know how to find them, because the model information only shows the number of raised warnings but not the warnings itself. The warnings are sent to the log while building the Store, therefore you should open the log console before starting your first Cube aggregations. It is also important to switch of the session filter before building the Store, because this is a system process not related to any (or your) user session.</p>
<p><a href="http://www.instantolap.com/wp-content/uploads/2010/07/storewarnings.png#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed"><img class="alignnone size-full wp-image-941" title="storewarnings" src="http://www.instantolap.com/wp-content/uploads/2010/07/storewarnings.png" alt="OLAP Cube, ROLAP, MOLAP, HOLAP: How to use Stores" width="600" height="275" /></a></p>
<span id="Combining_multiple_Stores"><h3>Combining multiple Stores</h3></span>
<p>Our simple approach to load all dimensions into a single Store is good for small Cubes, but with a raising number of dimensions the Store size will grow exponentially (this is, because the number of cells in a Cube is the product of all dimension sizes).</p>
<p>Adding more and more dimensions to a MOLAP Cube will bring every OLAP system to its limit -  including instantOLAP. We have a good experience with cubes up to one billion compressed datasets (Stores of this size can hold up to 5000 billion cells), but even if this number sounds very high it can easily be reached by combining 20 or more large dimensions. And aggregating this number of cells can take many hours.</p>
<p>Therefore, we have a different approach for this problem: Combining of multiple Stores. In practice, there are several combinations of dimensions which are used often and other combination which are used never or very seldom. This means, you can aggregate a ROLAP Cube into more than one Store, and each Store holds a smaller number of dimensions the original Cube contains.</p>
<p><a href="http://www.instantolap.com/wp-content/uploads/2010/07/multiplestores.png#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed"><img class="alignnone size-full wp-image-944" title="multiplestores" src="http://www.instantolap.com/wp-content/uploads/2010/07/multiplestores.png" alt="OLAP Cube, ROLAP, MOLAP, HOLAP: How to use Stores" width="594" height="513" /></a></p>
<p>In this example we combined two Stores, one holding the Campaing dimension, the other the Manufacturer dimension. The system will now automatically choose the correct Store whenever a user queries the cube.</p>
<p><a href="http://www.instantolap.com/wp-content/uploads/2010/07/multiplestores2.png#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed"><img class="alignnone size-full wp-image-945" title="multiplestores2" src="http://www.instantolap.com/wp-content/uploads/2010/07/multiplestores2.png" alt="OLAP Cube, ROLAP, MOLAP, HOLAP: How to use Stores" width="598" height="261" /></a></p>
<span id="Building_HOLAP_Cubes"><h2>Building HOLAP Cubes</h2></span>
<p>Now you might say &#8220;Okay, but what happens if the user queries all dimensions together or an unknown combination?&#8221;. This is where HOLAP comes into play: The &#8220;H&#8221; in HOLAP stands for hybrid &#8211; a mixture between offline MOLAP Stores and adhoc ROLAP Stores. You can create subset Stores and tell the system to use the orignial ROLAP Cube whenever an unknown combination of dimensions is queried. This means, you can deliver performant Stores but also a fallback solution for unmapped combinations.</p>
<p>How to turn an MOLAP Cube into an HOLAP Cube? There is a property for Cubes, &#8220;Keep Adhoc Cube With Stores&#8221;. Simply set the property to &#8220;true&#8221; and redisplay the Cubes in the Model Information dialog. Now you will see the original ROLAP Cube <strong>behind </strong>your Stores. And, because the order of Cubes and Stores is important in instantOLAP, the system will use the ROLAP cube only, if none of the Stores can deliver the wanted data.</p>
<p><a href="http://www.instantolap.com/wp-content/uploads/2010/07/multiplestores3.png#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed"><img class="alignnone size-full wp-image-946" title="multiplestores3" src="http://www.instantolap.com/wp-content/uploads/2010/07/multiplestores3.png" alt="OLAP Cube, ROLAP, MOLAP, HOLAP: How to use Stores" width="598" height="261" /></a></p>
<p>You can see this in the Model Information also: When switching the property &#8220;Keep Adhoc Cube With Stores&#8221; to &#8220;true&#8221;, the original Cube appears behind the Stores. Simple but effective.</p>
<span id="Refreshing_Offline_Stores"><h2>Refreshing Offline Stores</h2></span>
<p>This is the last question: When will the system build or refresh my Stores? Of course, you don&#8217;t want to create the Stores manually after creating them. Therefore, there are two different ways to keep Stores up to date: Dimension triggered (automatic refresh) or time triggered (crontab refresh).</p>
<span id="Automatic_refresh"><h3>Automatic refresh</h3></span>
<p>The automatic refresh will always start the build of a Store whenever it is offline or one of its source dimensions changed (in this case, the Store must be rebuild otherwise it would contain corrupted data). To turn the automatic refresh on, set the switch &#8220;Build Offline Store Immedialtey&#8221; of the configuration / model to true.</p>
<span id="Crontab_refresh"><h3>Crontab refresh</h3></span>
<p>The alternative to automatic refresh is to refresh a Store triggered by a cron pattern. This cron pattern, which is a property of the Stores, you can manually control when the Store should be rebuild. Whenever a source dimension of the Store changes, the Store will fall back into the ROLAP mode and the data will be queried from the underlying database.</p>
<p>Usually, it is more comfortable to use automatic refresh, but there are sometimes reasons to manually controll the cron pattern. E.g. if you don&#8217;t want to stress your source database with the large SQL queries at daytime or if a source database is not available at certain times.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.instantolap.com/howtos/olap-rolap-molap-holap-how-to-use-stores/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What&#8217;s new in 2.6?</title>
		<link>http://www.instantolap.com/news/whats-new-in-2-6#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://www.instantolap.com/news/whats-new-in-2-6#comments</comments>
		<pubDate>Wed, 08 Jul 2009 12:37:38 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Releases]]></category>
		<category><![CDATA[Selector]]></category>
		<category><![CDATA[Stores]]></category>

		<guid isPermaLink="false">http://www.instantolap.com/?p=371</guid>
		<description><![CDATA[Soon, release 2.6.0 will be published, containing some new selectors and a couple of backend improvements. The most important change is the easier store structure and the missing limitation of the report complexity.]]></description>
			<content:encoded><![CDATA[<p>This month, we will publish our next version 2.6 and the fresh 2.6 beta will be available from today. Beside some new frontend features, this version will contain some significant improvements in its Cube structure. Read this article to learn about some of the new features and to download the beta version.</p>
<p><span id="more-371"></span></p>
<div class='toc wptoc'>
<h2>Contents</h2>
<ol class='toc-odd level-1'>
	<li>
		<a href="#New_selector_types">New selector types</a>
	</li>
	<li>
		<a href="#Popup_selectors">Popup selectors</a>
	</li>
	<li>
		<a href="#Stores:_Easier_offline_cubes">Stores: Easier offline cubes</a>
	</li>
	<li>
		<a href="#Better_transaction_model_for_Models_and_Cubes">Better transaction model for Models and Cubes</a>
	</li>
	<li>
		<a href="#Improved_ToDo_list_management">Improved ToDo list management</a>
	</li>
</ol>
</ol>
</ol>
</div>
<div class='wptoc-end'>&nbsp;</div>
<span id="New_selector_types"><h3>New selector types</h3></span>
<p>Two new types of selectors were added to the frontend: Interval calendars and suggest boxes.</p>
<p>Interval calendars allow to select a time-range (from date / to date) using the calendar known from the original calendar selector. The interval selector shows two calendars, on to select the start and one to select the end date of the interval.</p>
<p>The suggest box offers the user valid input options while he types into its text box. This is well known from other web 2.0 applications.</p>
<p><img class="alignnone size-full wp-image-378" title="suggestbox" src="http://www.instantolap.com/wp-content/uploads/2009/07/suggestbox.gif" alt="Whats new in 2.6?" width="396" height="317" /></p>
<span id="Popup_selectors"><h3>Popup selectors</h3></span>
<p>Selector groups can now be turned into popup selectors by setting their new property &#8220;Popup&#8221; to true. Popup selectors only appear as a small and space saving button. By clicking onto this button, the user can open or close the selector group and use its contained selectors.</p>
<p><img class="alignnone size-full wp-image-377" title="popupselector" src="http://www.instantolap.com/wp-content/uploads/2009/07/popupselector.gif" alt="Whats new in 2.6?" width="475" height="317" /></p>
<span id="Stores:_Easier_offline_cubes"><h3>Stores: Easier offline cubes</h3></span>
<p>One of the main features of the new version is the much easier handling of stores. Unlike before, where cubes could be converted into offline cubes by setting some properties and setting the wanted dimension into the offline state, the cubes now can contain one or more store. Each of this stores defines a number of contained dimensions and facts, whereby different stores can contain different combinations of dimensions and / or facts and there is no need to copy cubes for different combinations in future.</p>
<p>The configurations of stores with the Workbench became easier and more intuitive: Simply add a new store to a cube by using its context menu and add dimensions and facts to the new store by clicking onto it. The Workbench will now automatically do all needed settings for your, e.g. by loading the lowest level of a dimension if you want to roll it up.</p>
<p><img class="alignnone size-full wp-image-380" title="offlienestores" src="http://www.instantolap.com/wp-content/uploads/2009/07/offlienestores.gif" alt="Whats new in 2.6?" width="558" height="415" /></p>
<span id="Better_transaction_model_for_Models_and_Cubes"><h3>Better transaction model for Models and Cubes</h3></span>
<p>The rebuilding of dimensions is now more connected to cubes than before. Everytime a dimension is rebuild, all stores being dependend on this dimension will be automatically also rebuild in the same transaction if the dimension has chaned. &#8220;In the same transaction&#8221; means, the user will not see changed dimensions and cubes before both are finally loaded and commited. The advantage of this new transaction model is, that cubes can no longer reach the &#8220;outaged&#8221; state if dimension changed and the cube was not scheduled to rebuild directly after.</p>
<span id="Improved_ToDo_list_management"><h3>Improved ToDo list management</h3></span>
<p>The internal ToDo lists &#8211; which instantOLAP uses to determine where to load which result cell from &#8211; became much faster and less limited. The overall performance improvement is round about factor 2 when generating and resolving the list. And, because the new implementation nearly uses any memory, there is also no limit for the maximum size of ToDo lists from version 2.6. Therefore, the &#8220;query too complex&#8221; message, which appeared when building reports with too much cells, will no longer appear.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.instantolap.com/news/whats-new-in-2-6/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Page Caching using disk (enhanced) (user agent is rejected)

Served from: www.instantolap.com @ 2010-09-06 22:50:06 -->