<?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: Denormalizing Databases</title>
	<atom:link href="http://www.thirstymind.org/2007/12/22/denormalizing-databases/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.thirstymind.org/2007/12/22/denormalizing-databases/</link>
	<description>andrew watts' weblog</description>
	<lastBuildDate>Sun, 04 Oct 2009 20:37:41 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: tmarthal</title>
		<link>http://www.thirstymind.org/2007/12/22/denormalizing-databases/comment-page-1/#comment-14760</link>
		<dc:creator>tmarthal</dc:creator>
		<pubDate>Tue, 26 Feb 2008 21:03:39 +0000</pubDate>
		<guid isPermaLink="false">http://www.thirstymind.org/2007/12/22/denormalizing-databases/#comment-14760</guid>
		<description>I think you want a hash of hashes, not a relational database. =(</description>
		<content:encoded><![CDATA[<p>I think you want a hash of hashes, not a relational database. =(</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Andrew Watts</title>
		<link>http://www.thirstymind.org/2007/12/22/denormalizing-databases/comment-page-1/#comment-14629</link>
		<dc:creator>Andrew Watts</dc:creator>
		<pubDate>Sat, 19 Jan 2008 19:57:14 +0000</pubDate>
		<guid isPermaLink="false">http://www.thirstymind.org/2007/12/22/denormalizing-databases/#comment-14629</guid>
		<description>i am not sure where you are going with that line of thought and what do you mean by distributed (ie: distributed app servers sharing a managed db connection, or distributed clients that each have a different db connections or ?).  Managing conflicts, i think, is the job of the transaction manager.  Obviously you would still need to ensure ACID, but that is the job of the dbms, and I am not sure much changes when going from a normalized schema to a denormalized one.

I&#039;ll have to think about it some more and do some reading.  I am no ORM or DB expert.

But the original point was denormalizing improves performance, specifically query performance not update performance.  So why not design that way from the start?

I&#039;ve found that most people and customers don&#039;t like waiting for transactions, and the max upper limit on any request/response sequence is about 4-5 seconds before the user begins to get agitated and/or gives up and/or starts cursing the app.

Along with this, most customers, again in my experience, do more searching for data rather than updating data.

So, to date, query performance has been of prime importance for the apps I have worked on.

With that being the goal, it seems one should focus on designing a db that will allow you to achieve that goal, rather than designing a normalized schema, just because your college prof or oracle instructor told you the best way to manage a database was normalizing the schema.  Yes that may be the best way to manage a database, but ultimately the customer doesn&#039;t care how the database is managed, they just want a fast responsive app.</description>
		<content:encoded><![CDATA[<p>i am not sure where you are going with that line of thought and what do you mean by distributed (ie: distributed app servers sharing a managed db connection, or distributed clients that each have a different db connections or ?).  Managing conflicts, i think, is the job of the transaction manager.  Obviously you would still need to ensure ACID, but that is the job of the dbms, and I am not sure much changes when going from a normalized schema to a denormalized one.</p>
<p>I&#8217;ll have to think about it some more and do some reading.  I am no ORM or DB expert.</p>
<p>But the original point was denormalizing improves performance, specifically query performance not update performance.  So why not design that way from the start?</p>
<p>I&#8217;ve found that most people and customers don&#8217;t like waiting for transactions, and the max upper limit on any request/response sequence is about 4-5 seconds before the user begins to get agitated and/or gives up and/or starts cursing the app.</p>
<p>Along with this, most customers, again in my experience, do more searching for data rather than updating data.</p>
<p>So, to date, query performance has been of prime importance for the apps I have worked on.</p>
<p>With that being the goal, it seems one should focus on designing a db that will allow you to achieve that goal, rather than designing a normalized schema, just because your college prof or oracle instructor told you the best way to manage a database was normalizing the schema.  Yes that may be the best way to manage a database, but ultimately the customer doesn&#8217;t care how the database is managed, they just want a fast responsive app.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Matthew</title>
		<link>http://www.thirstymind.org/2007/12/22/denormalizing-databases/comment-page-1/#comment-14622</link>
		<dc:creator>Matthew</dc:creator>
		<pubDate>Fri, 18 Jan 2008 06:48:22 +0000</pubDate>
		<guid isPermaLink="false">http://www.thirstymind.org/2007/12/22/denormalizing-databases/#comment-14622</guid>
		<description>Because now all your data must be added, updated, and deleted together. If you have a distributed application and one client updates one object then you must perform conflict detection and management across the entire row, even if data isn&#039;t closely related, and you&#039;ll probably end up impacting every client on the system.</description>
		<content:encoded><![CDATA[<p>Because now all your data must be added, updated, and deleted together. If you have a distributed application and one client updates one object then you must perform conflict detection and management across the entire row, even if data isn&#8217;t closely related, and you&#8217;ll probably end up impacting every client on the system.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Andrew Watts</title>
		<link>http://www.thirstymind.org/2007/12/22/denormalizing-databases/comment-page-1/#comment-14620</link>
		<dc:creator>Andrew Watts</dc:creator>
		<pubDate>Fri, 18 Jan 2008 01:25:07 +0000</pubDate>
		<guid isPermaLink="false">http://www.thirstymind.org/2007/12/22/denormalizing-databases/#comment-14620</guid>
		<description>why not?</description>
		<content:encoded><![CDATA[<p>why not?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Matthew</title>
		<link>http://www.thirstymind.org/2007/12/22/denormalizing-databases/comment-page-1/#comment-14617</link>
		<dc:creator>Matthew</dc:creator>
		<pubDate>Thu, 17 Jan 2008 17:53:31 +0000</pubDate>
		<guid isPermaLink="false">http://www.thirstymind.org/2007/12/22/denormalizing-databases/#comment-14617</guid>
		<description>I don&#039;t think it would be very clean mapping the data into objects if it all came from one table.</description>
		<content:encoded><![CDATA[<p>I don&#8217;t think it would be very clean mapping the data into objects if it all came from one table.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
