<?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>Rittman Mead Consulting &#187; rant</title>
	<atom:link href="http://www.rittmanmead.com/category/rant/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.rittmanmead.com</link>
	<description>Delivering Oracle Business Intelligence</description>
	<lastBuildDate>Mon, 06 Feb 2012 21:18:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>Virtual columns, Virtual Teams and Absolute news</title>
		<link>http://www.rittmanmead.com/2007/10/virtual-columns-virtual-teams-and-absolute-news/</link>
		<comments>http://www.rittmanmead.com/2007/10/virtual-columns-virtual-teams-and-absolute-news/#comments</comments>
		<pubDate>Thu, 04 Oct 2007 11:09:28 +0000</pubDate>
		<dc:creator>Borkur Steingrimsson</dc:creator>
				<category><![CDATA[rant]]></category>

		<guid isPermaLink="false">http://www.rittmanmead.com/2007/10/04/virtual-columns-virtual-teams-and-absolute-news/</guid>
		<description><![CDATA[I just saw a very concise post on the AMIS technology blog about virtual columns being created on tables. Given how well it is put forward there, I don&#8217;t see the need to regurgitate their post, so take a quick peek and learn how cool and easy this feature is. I have a few times [...]]]></description>
			<content:encoded><![CDATA[<p>I just saw a very concise post on the <a href="http://technology.amis.nl/blog/?p=2424" title="the AMIS guys">AMIS technology blog</a> about virtual columns being created on tables. Given how well it is put forward there, I don&#8217;t see the need to regurgitate their post, so take a quick peek and learn how cool and easy this feature is. I have a few times felt the need for a feature like this one, especially in the domain of BI. Back in the day, when I was still rather indoctrinated in 3NF, I always had this little reservation against adding columns in to fact tables that could be derived as calculations from other existing columns, on-the-fly. The reason for still going ahead and adding a &#8216;physical&#8217; column with the calculated values could of course be many and divers, but here we have a way of pleasing both sides of the coin :)</p>
<p>My first trip to Qatar is now coming to an end. I have been working pretty much every day since I got here and now it&#8217;s time to head back home to &#8216;sunny Brussels&#8217;. As a member of the <a href="http://www.rittmanmead.com/about/" title="Rittman Mead Consulting">RittmanMead Virtual Team</a> I will be returning out here in a two weeks time with two other consultants to finish the project; a proof of concept involving OWB, Portal and Discoverer.</p>
<p>Hopefully we will see an article from a new author on this blog very soon. My friend Nicolas De Brabanter has been cooking up an interesting how-to on using the &#8216;act-as&#8217; feature in OBIEE: Allowing authorized users to run reports and view dashboards with &#8216;borrowed eyes&#8217;. Looking forward to reading it.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rittmanmead.com/2007/10/virtual-columns-virtual-teams-and-absolute-news/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A week in the desert</title>
		<link>http://www.rittmanmead.com/2007/09/a-week-in-the-desert/</link>
		<comments>http://www.rittmanmead.com/2007/09/a-week-in-the-desert/#comments</comments>
		<pubDate>Fri, 28 Sep 2007 17:42:31 +0000</pubDate>
		<dc:creator>Borkur Steingrimsson</dc:creator>
				<category><![CDATA[rant]]></category>

		<guid isPermaLink="false">http://www.rittmanmead.com/2007/09/28/a-week-in-the-desert/</guid>
		<description><![CDATA[Well, I have been out here in Qatar for a week now. The work has been quite interesting and the days have been rather busy. Jon and I haven&#8217;t really had any time to take in any sights, until last night when we went to an outdoor market. It was very nice and relaxed, loads [...]]]></description>
			<content:encoded><![CDATA[<p>Well, I have been out here in Qatar for a week now. The work has been quite interesting and the days have been rather busy. Jon and I haven&#8217;t really had any time to take in any sights, until last night when we went to an outdoor market. It was very nice and relaxed, loads of people around but no one seemed to be in any hurry; the weekend had started and time to relax and enjoy some good company (weekends starts on Friday). I took some pictures but alas the camera didn&#8217;t really do any justice to the place, all the pictures are too dark for posting here. Jon had a lot nicer camera and took some shots as well, perhaps he can share some of these once he is settled in back home (he took the overnight flight back to the UK after the market trip).</p>
<p>Week two starts tomorrow. We are working with OWB, Discoverer and Portal to come up with a proof of concept as well as training the client in using these tools. The team is very enthusiastic and eager to learn so the work is very enjoyable. The working hours are rather different from what I am used to; Start at 8 and then take a break at around 15:00 and then start back at around 19:30 and work until about 22:00. In between, it&#8217;s back to the hotel, lunch and perhaps go to the gym. With the different rhythm, I seem to have lost close to 5kg here (or is it just because of the lack of beer ? :)) in just one week. Somehow I think I will manage to find these lost kilos when I get back &#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rittmanmead.com/2007/09/a-week-in-the-desert/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Off to Qatar and some ranting</title>
		<link>http://www.rittmanmead.com/2007/09/off-to-qatar-and-some-ranting/</link>
		<comments>http://www.rittmanmead.com/2007/09/off-to-qatar-and-some-ranting/#comments</comments>
		<pubDate>Fri, 21 Sep 2007 19:17:42 +0000</pubDate>
		<dc:creator>Borkur Steingrimsson</dc:creator>
				<category><![CDATA[rant]]></category>

		<guid isPermaLink="false">http://www.rittmanmead.com/2007/09/21/off-to-qatar-and-some-ranting/</guid>
		<description><![CDATA[So, I just settled in to my first-ever trip to Qatar. I took an SN-Brussels flight earlier this evening out to Manchester and now I am sitting in the Qatar Airways A320-300 getting ready to take off. Qatar Airways has a fantastic reputation so I must say I am quite excited to experience their in-flight [...]]]></description>
			<content:encoded><![CDATA[<p>So, I just settled in to my first-ever trip to Qatar. I took an SN-Brussels flight earlier this evening out to Manchester and now I am sitting in the Qatar Airways A320-300 getting ready to take off. Qatar Airways has a fantastic reputation so I must say I am quite excited to experience their in-flight service. I am on my way to meet up with Jon Mead who is kicking off a project for a client over there. I can&#8217;t really go in to any details of the work at this moment, but I am really looking forward to getting a chance to work in a part of the world I have never even been to. Jon&#8217;s already been there for a week now so I expect him to give me the rundown of things once I get there early in the morning (by the time you read this, that moment will surely have passed). The next two weeks will surely prove to be interesting, I am certain.</p>
<p>Before I took off to day I had finish up on a few things with my client. One thing was to look into some performance problems that we were having on out OBIEE dashboard. The underlying data for the particular reports is a 60M+ records partitioned table containing monthly aggregates. What we have set up in the business layer is an aggregate aware fact table that should use this monthly aggregate at all times in the dashboard (as a sideline &#8211; my flights tonight will be showing up in the underlying facts and datamarts come Monday morning :)). What we had done also, a while back, was to set up additional materialized views, only intended for query rewrite purposes. When the client started complaining about the performance issues, my thoughts went immediately to the aforementioned mview. &#8220;Ahh, the view is just stale and all I need to do is refresh it and Bob&#8217;s your uncle!&#8221;. Alas, the view was not the culprit here so I then (and only then :|) took a look at the actual query in the nqQuery.log to take a further look at the execution plan. What I soon noticed then was that instead of using all my nice little bitmap indices, the CBO was doing full range partition scans! I then turned my attention to the bitmaps and found out that there weren&#8217;t any! What? But! I am sure I had create a bunch of these before! The datamart has about 9 dimensions and only the date key and two dimension keys were actually bitmapped. So, I saw no point in trying to figure out why these weren&#8217;t in place or who&#8217;s fault it was they were missing (mainly because it was most likely myself who had dropped these during a back-loading process we had to go through about a month ago &#8230;). I quickly wrote a PL/SQL block to generate the missing bitmap indices and after asking the ops DBA to put the tablespaces containing the historical partitions in READ WRITE, the bitmaps got created and then (and only then) Bob was everybody&#8217;s uncle :)</p>
<p>Lesson learned? Make sure you have all the bits and pieces in place and keep an eye on your structures. Bad performance can really damage a DW project and don&#8217;t count on the end-users to report bad performance.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rittmanmead.com/2007/09/off-to-qatar-and-some-ranting/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Summer is over</title>
		<link>http://www.rittmanmead.com/2007/09/summer-is-over/</link>
		<comments>http://www.rittmanmead.com/2007/09/summer-is-over/#comments</comments>
		<pubDate>Sun, 09 Sep 2007 09:58:02 +0000</pubDate>
		<dc:creator>Borkur Steingrimsson</dc:creator>
				<category><![CDATA[rant]]></category>

		<guid isPermaLink="false">http://www.rittmanmead.com/2007/09/09/summer-is-over/</guid>
		<description><![CDATA[Well, not that summer actually ever arrived here in Belgium. It&#8217;s been quite the opposite of last summer, which was very hot and sunny. So I guess in average my two first summers here were OK., right? But the summer did bring me some changes. For the last 5 weeks I have been working as [...]]]></description>
			<content:encoded><![CDATA[<p>Well, not that summer actually ever arrived here in Belgium. It&#8217;s been quite the opposite of last summer, which was very hot and sunny. So I guess in average my two first summers here were OK., right?</p>
<p>But the summer did bring me some changes. For the last 5 weeks I have been working as an independent consultant which allows me to diversify my work quite a lot. But it also means I have to secure contracts to keep busy, which is new for me. <a href="http://www.rittmanmead.com" title="RittmanMead Consulting">Mark and Jon</a> have been throwing me some work and I am really looking forward to work more with them in the future. Also, the <a href="http://www.ukoug.com">UKOUG</a> is coming up and I have a paper to present there so I should be pretty busy until the end of the year, with all this and my work here in Belgium.</p>
<p>I started on writing up a short guide on setting up multiple presentation services and BI servers on one machine, as a way of supporting a  development and testing environment  with less hardware. It should be up here in a few days :)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rittmanmead.com/2007/09/summer-is-over/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Normality resumes, soon</title>
		<link>http://www.rittmanmead.com/2007/08/normality-resumes-soon/</link>
		<comments>http://www.rittmanmead.com/2007/08/normality-resumes-soon/#comments</comments>
		<pubDate>Fri, 24 Aug 2007 22:04:04 +0000</pubDate>
		<dc:creator>Peter Scott</dc:creator>
				<category><![CDATA[rant]]></category>

		<guid isPermaLink="false">http://www.rittmanmead.com/2007/08/24/normality-resumes-soon/</guid>
		<description><![CDATA[This year holiday activities have been low key. My elder daughter had various school examination results to receive (for those who know about the English system, GCSEs and AS levels) which basically meant that we needed to be home two Thursdays in August. Coupled with the need to work on the garden, meet the mayor [...]]]></description>
			<content:encoded><![CDATA[<p>This year holiday activities have been low key. My elder daughter had various school examination results to receive (for those who know about the English system, GCSEs and AS levels) which basically meant that we needed to be home two Thursdays in August. Coupled with the need to work on the garden, meet the mayor (yesterday) and various other activities that I need not go into meant that we only could fit in a spur-of-the-moment trip to the North Wales coast.  Despite having a customer (or two) on the fringes of North Wales, this is an area that I have not really visited much in recent years &#8211; I learnt to climb in Wales (but that was as a schoolboy). The whole trip was a pleasant surprise.</p>
<p>In the past I have blogged about a third party application that my team provides a little support for. Most of my blogs about this application tend to move towards &#8216;rant&#8217; &#8211; the application is poorly designed (no foreign keys, few indexes, inappropriate data types) &#8211; in short the kind of app where the developers have written their own RI code in the application and ignored the capabilities of the database.  In a more charitable moment I would say that the database components were poorly translated into Oracle, but for now I can&#8217;t think of a variant of SQL where they would have been well written.  Recently our customer has asked that some new account codes are loaded into the application, and as the original vendor can&#8217;t help or indeed has any staff with access to the design documentation our customer has asked us to investigate reverse engineering the database to locate the table that contains this data. Hence my dip into the database and headache of trying to decipher other people&#8217;s code.</p>
<p>There is not much in the way of PL/SQL in this application; just two procedures, one to load data and one to extract it. I have already talked about the extraction code so this time I looked at the data load code. I am firmly convinced that if I can not see all of the logic in a single screenful of code editor then I am going to despise the code (and coder responsible) &#8211; perhaps my attention span is waning in old age. This code is massive, hundreds and hundreds of lines in one single block inserts, updates, and deletes galore over at least 8 tables. In data warehouse terms the process is a classic; load to staging tables adding a surrogate key, compare data with production then update or insert and log the results (updates, inserts, rejects, and batch duration) to a log table, but the way the developers to do it!</p>
<ul>
<li>the emptying of the 6 source stage tables by using DELETE (why, oh why, not TRUNCATE?)</li>
<li>The insert into the log table of the run number and run start time (a novel use of SELECT 1 + COUNT(*) from logging_table as the source of the run number) &#8211; which of course means we can&#8217;t purge records from the log table without reducing the run number</li>
<li>The numerous updates to the logging table (at least 10 of them) using WHERE RUN_NUMBER=(SELECT MAX(RUN_NUMBER) from LOGGING_TABLE) as a filter (haven&#8217;t these guys heard of storing the run_number in a variable&#8230; it won&#8217;t change during a run)</li>
<li>using those 10 updates where one would have done</li>
<li>inserting into the stage tables and then updating rows to fix up nulls. Then updating updating again to provide derived values, then updating again to build concatenated text keys. Each update having its own commit.  To make matters worse they are flitting between all 6 stage tables. I would have tackled one table at a time and tried to write the code as a single insert with no updates (CASE and NVL() are your friends in ETL coding)</li>
<li>We then get to the removal of duplicates &#8211; I would prefer to copy out the duplicates so that I could report them back to the source data owner. Still, at least they count the duplicates before deleting them.</li>
<li>We then copy out the surrogate keys from the denormalised target table and insert them into the individual staging tables. Then check for changes and process as updates before finally inserting any new records into the denormalised table.</li>
<li>And to finish we fix up any Nulls in the denormalised table (as 20 separate update statements with differing where clauses) &#8211; and because of a quirk of how we process duplicates we can get nulls in to the denormalised table. And finally record the batch run time (in minutes) using our final update of the logging table and the most odd looking time calculation I have seen in an age.</li>
<li>Oh, and there is no exception handling code</li>
</ul>
<p>Today, I aged five years wading through that tosh &#8211; Tuesday, I&#8217;ll rewrite it so that anyone can understand it, or perhaps I won&#8217;t bother&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rittmanmead.com/2007/08/normality-resumes-soon/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>A very clever function &#8230;.</title>
		<link>http://www.rittmanmead.com/2007/07/a-very-clever-function/</link>
		<comments>http://www.rittmanmead.com/2007/07/a-very-clever-function/#comments</comments>
		<pubDate>Fri, 06 Jul 2007 07:12:45 +0000</pubDate>
		<dc:creator>Borkur Steingrimsson</dc:creator>
				<category><![CDATA[rant]]></category>

		<guid isPermaLink="false">http://www.rittmanmead.com/2007/07/06/a-very-clever-function/</guid>
		<description><![CDATA[This one doesn&#8217;t quite relate to BI, but here is a function I hadn&#8217;t seen before: new_time . This function accepts three arguments: A date, the timezone this date should be considered in, and the timezone you want the return value to be in. This can come in handy in some situations, but there is [...]]]></description>
			<content:encoded><![CDATA[<p>This one doesn&#8217;t quite relate to BI, but here is a function I hadn&#8217;t seen before: <a href="http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/functions092.htm#SQLRF00671">new_time</a> . This function accepts three arguments: A date, the timezone this date should be considered in, and the timezone you want the return value to be in.  This can come in handy in some situations, but there is a catch. It only supports the US timezones, as well as GMT! So if you are anywhere east of Greenwich you need to resort to other measures. But really, why put a function in to a production release that deals with timezones but only a handful?</p>
<p>My original problem was to convert a unix time number (number of seconds since 01 Jan 1970) to an Oracle date. A quick Google brought me to <a href="http://asktom.oracle.com/tkyte/Misc/CTime.html">AskTom</a> . He does point out that my timezone might not be supported. His solutions is as simple and clean as expected, but <a href="http://en.wikipedia.org/wiki/Daylight_saving_time" title="Daylight Saving Time">DST</a> doesn&#8217;t allow for the quick fix of just adding the &#8220;gmt offset&#8221;.</p>
<p>The link above, to the Oracle documents, does point to an example of using FROM_TZ,CAST and AT TIME ZONE functions to get this done. But back to the original NEW_TIME function: why not add the rest of the timezones in there? Here is one way of doing this (try using the values 1183680000 and 1168041600)</p>
<blockquote><p> SELECT FROM_TZ(CAST(TO_DATE(&#8217;1970-01-01&#8242;,<br />
&#8216;YYYY-MM-DD&#8217;)+ 1/24/60/60 * :theTime AS TIMESTAMP), &#8216;UTC&#8217;)<br />
AT TIME ZONE &#8216;Europe/Brussels&#8217; &#8220;Brussels time&#8221;<br />
FROM DUAL;</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.rittmanmead.com/2007/07/a-very-clever-function/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Finally!</title>
		<link>http://www.rittmanmead.com/2007/04/finally/</link>
		<comments>http://www.rittmanmead.com/2007/04/finally/#comments</comments>
		<pubDate>Sat, 21 Apr 2007 21:51:02 +0000</pubDate>
		<dc:creator>Borkur Steingrimsson</dc:creator>
				<category><![CDATA[rant]]></category>

		<guid isPermaLink="false">http://www.rittmanmead.com/2007/04/21/finally/</guid>
		<description><![CDATA[Seems that the Oracle Forums have finally come to their senses and allowed changing the watch/notification email address. Hurray for them! I have had the same email addy stuck in there since I signed up back in 2000. I haven&#8217;t had access to the mailbox in 4 years by now. So, now I can at [...]]]></description>
			<content:encoded><![CDATA[<p>Seems that the <a href="http://forums.oracle.com/" title="Oracle Forums" target="_blank">Oracle Forums</a> have <strong>finally</strong> come to their senses and allowed changing the watch/notification email address. Hurray for them! I have had the same email addy stuck in there since I signed up back in 2000. I haven&#8217;t had access to the mailbox in 4 years by now.</p>
<p>So, now I can at least know if anything happens on a thread I have been watching. There have been several threads on this. The one I watched on the subject (and obviously never got any update on) is <a href="http://forums.oracle.com/forums/message.jspa?messageID=1800008" title="here">here</a> The message count on that thread is up to 290 &#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rittmanmead.com/2007/04/finally/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Design matters</title>
		<link>http://www.rittmanmead.com/2005/11/design-matters/</link>
		<comments>http://www.rittmanmead.com/2005/11/design-matters/#comments</comments>
		<pubDate>Mon, 07 Nov 2005 19:39:00 +0000</pubDate>
		<dc:creator>Peter Scott</dc:creator>
				<category><![CDATA[Data Warehousing]]></category>
		<category><![CDATA[rant]]></category>

		<guid isPermaLink="false">http://www.rittmanmead.com/2005/11/07/design-matters/</guid>
		<description><![CDATA[One of our customers has asked us to review the performance of one of their legacy data warehouses. The daily data load takes far too long. There seems to be a lot we can suggest here to improve things &#8211; for a start, we need move to an incremental load and not the complete reload [...]]]></description>
			<content:encoded><![CDATA[<p>One of our customers has asked us to review the performance of one of their legacy data warehouses. The daily data load takes far too long. There seems to be a lot we can suggest here to improve things &#8211; for a start, we need move to an incremental load and not the complete reload of every table! Even the tables that won&#8217;t change are re-built, one example is the time dimension table, here we have 40 years of dates at day level denormalized to around 30 columns, the date range is hard-coded into the table create (and this goes 15 years into the future&#8230;.) The other problem is that the original developers seem to have had little idea how Oracle works and what is in-built as functions; finding the date of the first of a month is coded as taking the month and year from a date (as two VARCHAR2 strings) and appending them to &#8217;01-&#8217; to make a date string then converting back to a date &#8211; whatever happened to <em>TRUNC(p_date,&#8217;MM&#8217;)</em>, simple, to the point and only one line of code? Likewise why code a hexadecimal to decimal conversion in 20 lines of <strong>if</strong> statements (and not even CASE or DECODE) when TO_NUMBER(p_hex_string, &#8216;XX&#8217;) does the job and I don&#8217;t have all those lines of code to maintain.<br />
And as for the idea of writing a procedure to insert one row into a table and call it for each iteration of a cursor loop&#8230; just don&#8217;t go there.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rittmanmead.com/2005/11/design-matters/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Warehouse design rant</title>
		<link>http://www.rittmanmead.com/2005/09/warehouse-design-rant/</link>
		<comments>http://www.rittmanmead.com/2005/09/warehouse-design-rant/#comments</comments>
		<pubDate>Wed, 28 Sep 2005 21:40:00 +0000</pubDate>
		<dc:creator>Peter Scott</dc:creator>
				<category><![CDATA[Data Warehousing]]></category>
		<category><![CDATA[rant]]></category>

		<guid isPermaLink="false">http://www.rittmanmead.com/2005/09/28/warehouse-design-rant/</guid>
		<description><![CDATA[An anonymous poster to Tom Kyte’s Blog shared a tale of woe about data warehouse performance. Well, I felt for that poster – how can a developer put their hand on their heart (or wallet, if they are an external consultant) and say in effect “design does not matter, the database will be able to [...]]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal">An anonymous poster to <a href="http://tkyte.blogspot.com/2005/09/digging-stuff.html">Tom Kyte’s  </a>Blog shared a tale of woe about data warehouse performance. Well, I felt for that poster – how can a developer put their hand on their heart (or wallet, if they are an external consultant) and say in effect “design does not matter, the database will be able to handle it”</p>
<p class="MsoNormal">Of course design matters; and getting it right is important for the success of any development project. For data warehousing this means an holistic approach – the user base wants to exploit their data capital for business advantage, so they need a system that:</p>
<p class="MsoNormal">1) Provides the correct results<br />
2) Provides those results in a reasonable timescale<br />
3) Allows new data to be added to the DW, again in an acceptable batch window</p>
<p class="MsoNormal">Get any of these wrong and your project will be seen as a failure in the eyes of some or all of your users. Remember, it is these users that ‘pay’ for the systems, the days of IT departments sponsoring a development project to keep staff ‘gainfully employed’ are long gone. Data warehouses should be seen as a strategic asset and therefore be designed for sustainability and longevity – this is not a technology area for the ‘quick fix’ or those who shun best practice.</p>
<p class="MsoNormal">Oh, and one more part of my rant – vendor neutral database design does not work in a data warehouses – Oracle has a fantastic set of performance enhancing features for large databases, omit using them appropriately and you will struggle to deliver.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rittmanmead.com/2005/09/warehouse-design-rant/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

