<?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: A question on MDX performance</title>
	<atom:link href="http://www.dbms2.com/2009/10/30/a-question-on-mdx-performance/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.dbms2.com/2009/10/30/a-question-on-mdx-performance/</link>
	<description>Choices in data management and analysis</description>
	<lastBuildDate>Mon, 01 Feb 2010 06:37:36 -0500</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Curt Monash</title>
		<link>http://www.dbms2.com/2009/10/30/a-question-on-mdx-performance/comment-page-1/#comment-157370</link>
		<dc:creator>Curt Monash</dc:creator>
		<pubDate>Sat, 30 Jan 2010 06:11:40 +0000</pubDate>
		<guid isPermaLink="false">http://www.dbms2.com/?p=1186#comment-157370</guid>
		<description>Essbase actually does calculations erroneously?? Could you please say more about that? Thanks!</description>
		<content:encoded><![CDATA[<p>Essbase actually does calculations erroneously?? Could you please say more about that? Thanks!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Steve J.</title>
		<link>http://www.dbms2.com/2009/10/30/a-question-on-mdx-performance/comment-page-1/#comment-157308</link>
		<dc:creator>Steve J.</dc:creator>
		<pubDate>Fri, 29 Jan 2010 18:59:06 +0000</pubDate>
		<guid isPermaLink="false">http://www.dbms2.com/?p=1186#comment-157308</guid>
		<description>Reply to Paul Johnson - regarding preaggregation , you will find that an Essbase cube can be fully calc&#039;d, but this can lead to DATA EXPLOSION and long calculation times. Optimization methods employed to reduce this phenomena can cause erroneous results when run against sparse asymmetrical dimensions , but otherwise I found Essbase to be a fantastic DataMart solution, and very intuitive since the gui bypasses the need to use MDX. Use a star or snowflake schema in a rdbms to feed your Essbase Cubes for best results.</description>
		<content:encoded><![CDATA[<p>Reply to Paul Johnson &#8211; regarding preaggregation , you will find that an Essbase cube can be fully calc&#8217;d, but this can lead to DATA EXPLOSION and long calculation times. Optimization methods employed to reduce this phenomena can cause erroneous results when run against sparse asymmetrical dimensions , but otherwise I found Essbase to be a fantastic DataMart solution, and very intuitive since the gui bypasses the need to use MDX. Use a star or snowflake schema in a rdbms to feed your Essbase Cubes for best results.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Cubegeek</title>
		<link>http://www.dbms2.com/2009/10/30/a-question-on-mdx-performance/comment-page-1/#comment-150912</link>
		<dc:creator>Cubegeek</dc:creator>
		<pubDate>Sat, 28 Nov 2009 09:49:10 +0000</pubDate>
		<guid isPermaLink="false">http://www.dbms2.com/?p=1186#comment-150912</guid>
		<description>I&#039;ve worked with MSAS a bit and I&#039;ve had engineers who worked for me tell me things that confirm my brief experiences as I got further from the technology. 

Most people who get up the rather steep curve for MDX admire it for its elegance and prefer it to SQL on that basis. Nevertheless the experience is that it is generally not worth it to learn the language if you have appreciable experience in SQL. 

If you have become something of an expert in tuning databases in the generations of products before the Greenplum and Vertica days, say with Essbase, Microstrategy, Teradata, Oracle Express or Sybase ASE, then you will have some familiarity with arcane 4G languages and dialects of SQL without many cross-product similarities. MDX was the language destined to solve all that, a sort of OLAP Esperanto. Unfortunately, the number of programmers deciding to hack SQL to perform against this and that sort of schema tended to dominate the few cross-platform specialists. In the end, it is my opinion that the lack of a predominating visualization stack obviated the need for widespread MDX adoption. As fat visual programming OLAP clients matured, enterprise customers began demanding thin clients. As full featured stacks became available, developers wanted LAMP, and so on. Now we are met on a battlefield testing whether PHP and MySQL will long endure, with people like me wondering how they ever got started considering the maturity and performance of products like Sybase and Essbase.

My direct experience is that flatly, for applications of any sophistication, on MSAS, stored procedures with T-SQL always performed better than their functional equivalents in MDX. In their aborted product stack, Performance Point, Microsoft engineers created a middle language PEL(?) that would supposedly choose which language was best suited for a task and then generate that code. All jokes about code-generators aside, my engineers always had to second guess PEL and ended up writing it all in T-SQL. So as a practical matter, there was no sense in learning MDX if you had already mastered T-SQL on the platform for which MDX was specifically designed. It would have been nice if MDX performed with speed commensurate with its elegance, but it simply didn&#039;t. This was two years ago. 

I know MDX lives on in Essbase but that Essbase expresses it differently than does MSAS. It does rather boil down to &#039;it depends&#039;, because language to language different platforms have different strengths, etc. 

I expect that we will not learn the definitive answer to this question until there is a shakeout of DBs that survive the transition to cloud infrastructure. And in that regard I think a Greenplum or a Vertica or a Hadoop-based solution will win out. In other words it won&#039;t come down to the semantic layer. The market never forced it to because there is no real OLAP standard (chicken or egg?). 

In the end I say MDX iff you love MDX.</description>
		<content:encoded><![CDATA[<p>I&#8217;ve worked with MSAS a bit and I&#8217;ve had engineers who worked for me tell me things that confirm my brief experiences as I got further from the technology. </p>
<p>Most people who get up the rather steep curve for MDX admire it for its elegance and prefer it to SQL on that basis. Nevertheless the experience is that it is generally not worth it to learn the language if you have appreciable experience in SQL. </p>
<p>If you have become something of an expert in tuning databases in the generations of products before the Greenplum and Vertica days, say with Essbase, Microstrategy, Teradata, Oracle Express or Sybase ASE, then you will have some familiarity with arcane 4G languages and dialects of SQL without many cross-product similarities. MDX was the language destined to solve all that, a sort of OLAP Esperanto. Unfortunately, the number of programmers deciding to hack SQL to perform against this and that sort of schema tended to dominate the few cross-platform specialists. In the end, it is my opinion that the lack of a predominating visualization stack obviated the need for widespread MDX adoption. As fat visual programming OLAP clients matured, enterprise customers began demanding thin clients. As full featured stacks became available, developers wanted LAMP, and so on. Now we are met on a battlefield testing whether PHP and MySQL will long endure, with people like me wondering how they ever got started considering the maturity and performance of products like Sybase and Essbase.</p>
<p>My direct experience is that flatly, for applications of any sophistication, on MSAS, stored procedures with T-SQL always performed better than their functional equivalents in MDX. In their aborted product stack, Performance Point, Microsoft engineers created a middle language PEL(?) that would supposedly choose which language was best suited for a task and then generate that code. All jokes about code-generators aside, my engineers always had to second guess PEL and ended up writing it all in T-SQL. So as a practical matter, there was no sense in learning MDX if you had already mastered T-SQL on the platform for which MDX was specifically designed. It would have been nice if MDX performed with speed commensurate with its elegance, but it simply didn&#8217;t. This was two years ago. </p>
<p>I know MDX lives on in Essbase but that Essbase expresses it differently than does MSAS. It does rather boil down to &#8216;it depends&#8217;, because language to language different platforms have different strengths, etc. </p>
<p>I expect that we will not learn the definitive answer to this question until there is a shakeout of DBs that survive the transition to cloud infrastructure. And in that regard I think a Greenplum or a Vertica or a Hadoop-based solution will win out. In other words it won&#8217;t come down to the semantic layer. The market never forced it to because there is no real OLAP standard (chicken or egg?). </p>
<p>In the end I say MDX iff you love MDX.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Robert Folkerts</title>
		<link>http://www.dbms2.com/2009/10/30/a-question-on-mdx-performance/comment-page-1/#comment-149876</link>
		<dc:creator>Robert Folkerts</dc:creator>
		<pubDate>Thu, 19 Nov 2009 19:20:42 +0000</pubDate>
		<guid isPermaLink="false">http://www.dbms2.com/?p=1186#comment-149876</guid>
		<description>@ Daniel Lemire.  I&#039;m using Mondrian in a commercial setting and it is quite adequate as a ROLAP engine.  The key to getting high performance is to make a few aggregate tables.  For example, once you aggregate and reduce row counts from millions to 10&#039;s of thousands, the responses become &#039;snappy&#039; rather that mildly irritating.  This does mean that I had to go out and actually watch users to see where the bottle necks are.  Then I only had to build the aggregates that get used, since building the aggregates can be time consuming.  We are running daily ETL, so daily rebuilds of the aggregates are practical.</description>
		<content:encoded><![CDATA[<p>@ Daniel Lemire.  I&#8217;m using Mondrian in a commercial setting and it is quite adequate as a ROLAP engine.  The key to getting high performance is to make a few aggregate tables.  For example, once you aggregate and reduce row counts from millions to 10&#8217;s of thousands, the responses become &#8217;snappy&#8217; rather that mildly irritating.  This does mean that I had to go out and actually watch users to see where the bottle necks are.  Then I only had to build the aggregates that get used, since building the aggregates can be time consuming.  We are running daily ETL, so daily rebuilds of the aggregates are practical.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Paul Johnson</title>
		<link>http://www.dbms2.com/2009/10/30/a-question-on-mdx-performance/comment-page-1/#comment-147744</link>
		<dc:creator>Paul Johnson</dc:creator>
		<pubDate>Tue, 03 Nov 2009 20:06:20 +0000</pubDate>
		<guid isPermaLink="false">http://www.dbms2.com/?p=1186#comment-147744</guid>
		<description>&quot;In my own work, I have set up a star schema model centered on a Fact table of 100 million rows (approx 60 columns), with dimensions ranging in cardinality from 5 to 10,000.&quot;

OK, even at a generous 20 bytes/column we&#039;re dealing with ~120GB of data here i.e. not a lot.

&quot;In ad hoc analytics, is it expected that any query against such a dataset should return a result within a minute or two (i.e. before a user 
gets impatient), regardless of whether that query returns 100 cells or 50,000 cells (without relying on any aggregate table or caching mechanism)?&quot;

Against a DBMS it depends on the complexity of the query and the database concurrency - what else is running at the same time. Assuming you 
have all CPU and IO resources to yourself, and assuming a simple scan only or fact:dimension join query, the performance is largely (but not 
wholly) a product of the capability of the disk/IO sub-system, which dictates your database read/scan rate.

&quot;Or is that level of performance only expected with a high end massively parallel software/hardware solution?&quot;

I hope not, as with those data volumes I wouldn&#039;t expect you to go down the MPP route.

&quot;The server specs I’m testing with are: 32-bit 4 core, 4GB RAM, 7.2k RPM SATA drive, running Windows Server 2003; 64-bit 8 core, 32GB RAM, 3Gb/s SAS drive, running Windows Server 2003 (x64).&quot;

What about the IO sub-system? What DBMS are you running?

&quot;...it is not possible to have all combinations of dimensions calculated in advance, in addition to being maintained.&quot;

I beg to differ. That&#039;s exactly what Queryobject from CrossZ systems delivers. Full pre-calculation of all measures aross all combination of dimensions at all levels of the hierarchy, for any input dataset size. 

Most (all other?) OLAP vendors consider this akin to &#039;boiling the ocean&#039; and consider it not achievable, so don&#039;t even try. 

Without full pre-calculation, the problem is that there is scanning to do at query time to satisfy the queries for which the answer is not pre-built. 

Once the user gets the egg-timer for 10-15 minutes, how can they distinguish between busy and broken? 

There are tier1 telcos in the US that have been using Queryobject in production for many years. 

It&#039;s SQL-compliant so you don&#039;t have to learn MDX. Sorry Chris!

See: http://www.queryobject.com</description>
		<content:encoded><![CDATA[<p>&#8220;In my own work, I have set up a star schema model centered on a Fact table of 100 million rows (approx 60 columns), with dimensions ranging in cardinality from 5 to 10,000.&#8221;</p>
<p>OK, even at a generous 20 bytes/column we&#8217;re dealing with ~120GB of data here i.e. not a lot.</p>
<p>&#8220;In ad hoc analytics, is it expected that any query against such a dataset should return a result within a minute or two (i.e. before a user<br />
gets impatient), regardless of whether that query returns 100 cells or 50,000 cells (without relying on any aggregate table or caching mechanism)?&#8221;</p>
<p>Against a DBMS it depends on the complexity of the query and the database concurrency &#8211; what else is running at the same time. Assuming you<br />
have all CPU and IO resources to yourself, and assuming a simple scan only or fact:dimension join query, the performance is largely (but not<br />
wholly) a product of the capability of the disk/IO sub-system, which dictates your database read/scan rate.</p>
<p>&#8220;Or is that level of performance only expected with a high end massively parallel software/hardware solution?&#8221;</p>
<p>I hope not, as with those data volumes I wouldn&#8217;t expect you to go down the MPP route.</p>
<p>&#8220;The server specs I’m testing with are: 32-bit 4 core, 4GB RAM, 7.2k RPM SATA drive, running Windows Server 2003; 64-bit 8 core, 32GB RAM, 3Gb/s SAS drive, running Windows Server 2003 (x64).&#8221;</p>
<p>What about the IO sub-system? What DBMS are you running?</p>
<p>&#8220;&#8230;it is not possible to have all combinations of dimensions calculated in advance, in addition to being maintained.&#8221;</p>
<p>I beg to differ. That&#8217;s exactly what Queryobject from CrossZ systems delivers. Full pre-calculation of all measures aross all combination of dimensions at all levels of the hierarchy, for any input dataset size. </p>
<p>Most (all other?) OLAP vendors consider this akin to &#8216;boiling the ocean&#8217; and consider it not achievable, so don&#8217;t even try. </p>
<p>Without full pre-calculation, the problem is that there is scanning to do at query time to satisfy the queries for which the answer is not pre-built. </p>
<p>Once the user gets the egg-timer for 10-15 minutes, how can they distinguish between busy and broken? </p>
<p>There are tier1 telcos in the US that have been using Queryobject in production for many years. </p>
<p>It&#8217;s SQL-compliant so you don&#8217;t have to learn MDX. Sorry Chris!</p>
<p>See: <a href="http://www.queryobject.com" onclick="javascript:pageTracker._trackPageview('/www.queryobject.com');" rel="nofollow">http://www.queryobject.com</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Chris Webb</title>
		<link>http://www.dbms2.com/2009/10/30/a-question-on-mdx-performance/comment-page-1/#comment-147719</link>
		<dc:creator>Chris Webb</dc:creator>
		<pubDate>Tue, 03 Nov 2009 16:31:14 +0000</pubDate>
		<guid isPermaLink="false">http://www.dbms2.com/?p=1186#comment-147719</guid>
		<description>Tom,

To answer your question, tuning of the Analysis Services cube would include building some aggregations (but not aggregation tables - SSAS creates aggregations internally and is very good at working out how to use them) but not necessarily include warming the cache (which is a widely used tuning technique, but personally I always aim for fast performance on a cold cache).

The volumes you&#039;re talking about are just about average for SQL Server Analysis Services cubes today, although you will need to have a reasonable amount of Analysis Services knowledge to get the best possible performance. Generating a set of test queries is a good technique to use but I would say that a query that returns 50,000 cells is on the large side. In general I encourage users to run queries whose results can be displayed on one screen rather than do a &#039;data dump&#039; style query and then try to manipulate the results in, say Excel. Obviously the larger the amount of data  returned the longer the query will take to run and  I don&#039;t think there&#039;s any value in a user asking for large amounts of data in one big chunk, rather than in more digestible, smaller pieces.</description>
		<content:encoded><![CDATA[<p>Tom,</p>
<p>To answer your question, tuning of the Analysis Services cube would include building some aggregations (but not aggregation tables &#8211; SSAS creates aggregations internally and is very good at working out how to use them) but not necessarily include warming the cache (which is a widely used tuning technique, but personally I always aim for fast performance on a cold cache).</p>
<p>The volumes you&#8217;re talking about are just about average for SQL Server Analysis Services cubes today, although you will need to have a reasonable amount of Analysis Services knowledge to get the best possible performance. Generating a set of test queries is a good technique to use but I would say that a query that returns 50,000 cells is on the large side. In general I encourage users to run queries whose results can be displayed on one screen rather than do a &#8216;data dump&#8217; style query and then try to manipulate the results in, say Excel. Obviously the larger the amount of data  returned the longer the query will take to run and  I don&#8217;t think there&#8217;s any value in a user asking for large amounts of data in one big chunk, rather than in more digestible, smaller pieces.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: John Sequeira</title>
		<link>http://www.dbms2.com/2009/10/30/a-question-on-mdx-performance/comment-page-1/#comment-147484</link>
		<dc:creator>John Sequeira</dc:creator>
		<pubDate>Mon, 02 Nov 2009 21:00:05 +0000</pubDate>
		<guid isPermaLink="false">http://www.dbms2.com/?p=1186#comment-147484</guid>
		<description>Tom,

Sorry if I misdirected you with Qlikview. I was listening to a podcast about Gemini [1] where one of the team members described snappy responses in Excel using a 100 million row test data set, and how it compressed down to 180Meg or so.  I had assumed they used a pretty similar architecture, but maybe not.

The query you mention is pretty trivial in terms of MDX-&gt;SQL.  In other words, you could implement your own star schema and write a simple query to bring those items back.  (What Mondrian automates).  

This would not really test the underlying store (Oracle/Mysql/etc), if that is your goal.  It would probably serve to throw out horribly implemented MDX stores, but that&#039;s about it.

I appreciate that you&#039;re trying to simplify the problem to make it tractable.  I think that this analysis is just not so amenable to a blog post or an email response.

I would take everyone&#039;s collective unease as a sign that you might not get the meaningful results you require without digging deeper into aggregates and modeling, which I can certainly see why you&#039;d want to avoid.  

Given how central caching is to BI performance, and how much variety there is to implementing this,  I just don&#039;t think a performance test that ignores platform-specific pre-aggregation strategies is useful.

You may as well do what Curt said and write sql and benchmark the underlying RDMBS stores, for the MDX-fronted ROLAP stores.


[1] http://www.dotnetrocks.com/default.aspx?showNum=490</description>
		<content:encoded><![CDATA[<p>Tom,</p>
<p>Sorry if I misdirected you with Qlikview. I was listening to a podcast about Gemini [1] where one of the team members described snappy responses in Excel using a 100 million row test data set, and how it compressed down to 180Meg or so.  I had assumed they used a pretty similar architecture, but maybe not.</p>
<p>The query you mention is pretty trivial in terms of MDX-&gt;SQL.  In other words, you could implement your own star schema and write a simple query to bring those items back.  (What Mondrian automates).  </p>
<p>This would not really test the underlying store (Oracle/Mysql/etc), if that is your goal.  It would probably serve to throw out horribly implemented MDX stores, but that&#8217;s about it.</p>
<p>I appreciate that you&#8217;re trying to simplify the problem to make it tractable.  I think that this analysis is just not so amenable to a blog post or an email response.</p>
<p>I would take everyone&#8217;s collective unease as a sign that you might not get the meaningful results you require without digging deeper into aggregates and modeling, which I can certainly see why you&#8217;d want to avoid.  </p>
<p>Given how central caching is to BI performance, and how much variety there is to implementing this,  I just don&#8217;t think a performance test that ignores platform-specific pre-aggregation strategies is useful.</p>
<p>You may as well do what Curt said and write sql and benchmark the underlying RDMBS stores, for the MDX-fronted ROLAP stores.</p>
<p>[1] <a href="http://www.dotnetrocks.com/default.aspx?showNum=490" onclick="javascript:pageTracker._trackPageview('/www.dotnetrocks.com');" rel="nofollow">http://www.dotnetrocks.com/default.aspx?showNum=490</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tom Howley</title>
		<link>http://www.dbms2.com/2009/10/30/a-question-on-mdx-performance/comment-page-1/#comment-147448</link>
		<dc:creator>Tom Howley</dc:creator>
		<pubDate>Mon, 02 Nov 2009 14:43:16 +0000</pubDate>
		<guid isPermaLink="false">http://www.dbms2.com/?p=1186#comment-147448</guid>
		<description>Many thanks for all of the interesting responses to my question, which Curt kindly posted for me. Here are some comments:

- I have evaluated different OLAP technologies that each support MDX. Using the same set of MDX queries on the same dataset loaded into the different OLAP systems seemed like a reasonable to way compare performance. It also means that MOLAP and ROLAP systems can be compared side by side. So Chris is correct in his statement that I am evaluating the performance of the OLAP technology, rather than the performance of MDX itself -- a TPC benchmark for OLAP is a good way to describe it.

- John suggests trying Gemini or QlikView. I have tried QlikView on the 32 GB RAM 64-bit system with the 100 million row dataset mentioned above. It ran out of memory trying to load this dataset.

- Chris states &quot;with those data volumes and that hardware then I would be very confident that for a properly designed and tuned cube you’d get query times of a few seconds or less for most reasonable queries.&quot;. Does design and tuning of the cube, include the pre-calculation of aggregate tables (or some pre-loading of a cache)? Can I expect a response in the order of seconds for queries that the cube has not been prepared with (on the hardware mentioned)? One example of a query I have run is a simple crossjoin between two dimensions (50 members, 1000 members), selecting one measure, thus returning 50,000 cells. Is this a reasonable query for performance assessment?

Thanks again for all of your insight.</description>
		<content:encoded><![CDATA[<p>Many thanks for all of the interesting responses to my question, which Curt kindly posted for me. Here are some comments:</p>
<p>- I have evaluated different OLAP technologies that each support MDX. Using the same set of MDX queries on the same dataset loaded into the different OLAP systems seemed like a reasonable to way compare performance. It also means that MOLAP and ROLAP systems can be compared side by side. So Chris is correct in his statement that I am evaluating the performance of the OLAP technology, rather than the performance of MDX itself &#8212; a TPC benchmark for OLAP is a good way to describe it.</p>
<p>- John suggests trying Gemini or QlikView. I have tried QlikView on the 32 GB RAM 64-bit system with the 100 million row dataset mentioned above. It ran out of memory trying to load this dataset.</p>
<p>- Chris states &#8220;with those data volumes and that hardware then I would be very confident that for a properly designed and tuned cube you’d get query times of a few seconds or less for most reasonable queries.&#8221;. Does design and tuning of the cube, include the pre-calculation of aggregate tables (or some pre-loading of a cache)? Can I expect a response in the order of seconds for queries that the cube has not been prepared with (on the hardware mentioned)? One example of a query I have run is a simple crossjoin between two dimensions (50 members, 1000 members), selecting one measure, thus returning 50,000 cells. Is this a reasonable query for performance assessment?</p>
<p>Thanks again for all of your insight.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jerome Pineau</title>
		<link>http://www.dbms2.com/2009/10/30/a-question-on-mdx-performance/comment-page-1/#comment-147176</link>
		<dc:creator>Jerome Pineau</dc:creator>
		<pubDate>Sun, 01 Nov 2009 09:43:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.dbms2.com/?p=1186#comment-147176</guid>
		<description>Thanks for the insight Chris. I think you&#039;re obviously also right in your last sentence - hands down.
J.</description>
		<content:encoded><![CDATA[<p>Thanks for the insight Chris. I think you&#8217;re obviously also right in your last sentence &#8211; hands down.<br />
J.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Chris Webb</title>
		<link>http://www.dbms2.com/2009/10/30/a-question-on-mdx-performance/comment-page-1/#comment-147119</link>
		<dc:creator>Chris Webb</dc:creator>
		<pubDate>Sat, 31 Oct 2009 21:00:36 +0000</pubDate>
		<guid isPermaLink="false">http://www.dbms2.com/?p=1186#comment-147119</guid>
		<description>Actually, rereading the question I think it actually makes more sense than the comments here (including mine) suggest. The questioner here is interested in &quot;assessing the performance of an OLAP technology using a set of MDX queries&quot;; I&#039;m not sure they are confusing the query language with the underlying database technology at all. 

What they seem to want is something like a TPC benchmark for OLAP: a dataset that can be loaded onto multiple OLAP platforms, and a set of MDX queries that can be run against that dataset on each platform so their performance can be compared directly. This seems like a reasonable requirement to me, but as I said in my original comment I don&#039;t know of any such benchmarks.

Jerome, to pick up on some of your questions:
- No, MDX isn&#039;t always always converted to SQL. In a pure MOLAP scenario (like Microsoft Analysis Services in MOLAP mode) nothing gets converted to SQL. Even in ROLAP scenarios, while SQL queries are issued to get the raw data needed for an MDX query, it&#039;s still likely that there&#039;ll be a lot of calculation and processing that will happen inside the OLAP engine afterwards.
- MDX is widely used in the Microsoft BI world, but given the number of other platforms that support it I am a bit mystified why you don&#039;t hear so much about it in the wider world...
- ...and this is probably because, as Jerome says, there is a steep learning curve. In fact for anyone that&#039;s spent a lot of time thinking in SQL it can be particularly confusing. Which is a shame because I truly, honestly believe that MDX is an immensely powerful language and much better suited for expressing BI queries and calculations than SQL.</description>
		<content:encoded><![CDATA[<p>Actually, rereading the question I think it actually makes more sense than the comments here (including mine) suggest. The questioner here is interested in &#8220;assessing the performance of an OLAP technology using a set of MDX queries&#8221;; I&#8217;m not sure they are confusing the query language with the underlying database technology at all. </p>
<p>What they seem to want is something like a TPC benchmark for OLAP: a dataset that can be loaded onto multiple OLAP platforms, and a set of MDX queries that can be run against that dataset on each platform so their performance can be compared directly. This seems like a reasonable requirement to me, but as I said in my original comment I don&#8217;t know of any such benchmarks.</p>
<p>Jerome, to pick up on some of your questions:<br />
- No, MDX isn&#8217;t always always converted to SQL. In a pure MOLAP scenario (like Microsoft Analysis Services in MOLAP mode) nothing gets converted to SQL. Even in ROLAP scenarios, while SQL queries are issued to get the raw data needed for an MDX query, it&#8217;s still likely that there&#8217;ll be a lot of calculation and processing that will happen inside the OLAP engine afterwards.<br />
- MDX is widely used in the Microsoft BI world, but given the number of other platforms that support it I am a bit mystified why you don&#8217;t hear so much about it in the wider world&#8230;<br />
- &#8230;and this is probably because, as Jerome says, there is a steep learning curve. In fact for anyone that&#8217;s spent a lot of time thinking in SQL it can be particularly confusing. Which is a shame because I truly, honestly believe that MDX is an immensely powerful language and much better suited for expressing BI queries and calculations than SQL.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

<!-- Dynamic page generated in 0.231 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2010-02-01 03:45:31 -->
