<?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: The Cost Of Database Independence</title>
	<atom:link href="http://www.rittmanmead.com/2004/11/24/the-cost-of-database-independence/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.rittmanmead.com/2004/11/24/the-cost-of-database-independence/</link>
	<description>Delivered Intelligence</description>
	<lastBuildDate>Wed, 10 Mar 2010 20:28:28 -0500</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: David Aldridge</title>
		<link>http://www.rittmanmead.com/2004/11/24/the-cost-of-database-independence/comment-page-1/#comment-204</link>
		<dc:creator>David Aldridge</dc:creator>
		<pubDate>Thu, 28 Dec 2006 00:54:38 +0000</pubDate>
		<guid isPermaLink="false">http://www.rittmanmead.com/wp2/2004/11/24/the-cost-of-database-independence/#comment-204</guid>
		<description>It&#039;s an interesting paradox, that forcing database independence is intended to make the enterprise more cost effective by reducing potential licensing costs, however the method makes applications less cost-effective themselves through requiring more expensive hardware, and that more CPU&#039;s mean higher licensing costs whatever platform is chosen.

So it doesn&#039;t actually make economic sense as well as being technologically a poor practice.</description>
		<content:encoded><![CDATA[<p>It&#8217;s an interesting paradox, that forcing database independence is intended to make the enterprise more cost effective by reducing potential licensing costs, however the method makes applications less cost-effective themselves through requiring more expensive hardware, and that more CPU&#8217;s mean higher licensing costs whatever platform is chosen.</p>
<p>So it doesn&#8217;t actually make economic sense as well as being technologically a poor practice.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Savitha Malve</title>
		<link>http://www.rittmanmead.com/2004/11/24/the-cost-of-database-independence/comment-page-1/#comment-203</link>
		<dc:creator>Savitha Malve</dc:creator>
		<pubDate>Mon, 06 Dec 2004 13:24:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.rittmanmead.com/wp2/2004/11/24/the-cost-of-database-independence/#comment-203</guid>
		<description>Why re-invent a wheel when we already have one built in.There is no point in discarding built in features after buying a product which is efficient in handling things we want and waste couple of days of time to find other options.</description>
		<content:encoded><![CDATA[<p>Why re-invent a wheel when we already have one built in.There is no point in discarding built in features after buying a product which is efficient in handling things we want and waste couple of days of time to find other options.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: H.Tonguc YILMAZ</title>
		<link>http://www.rittmanmead.com/2004/11/24/the-cost-of-database-independence/comment-page-1/#comment-202</link>
		<dc:creator>H.Tonguc YILMAZ</dc:creator>
		<pubDate>Mon, 06 Dec 2004 07:13:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.rittmanmead.com/wp2/2004/11/24/the-cost-of-database-independence/#comment-202</guid>
		<description>One of the most interesting example of database independence may be seen in JDBC programming in my opinion. Since JDBC is a standart java guys talk about this as an advantage, but here are some test results for improving the performance of J2EE applications with very simple JDBC tips;
Total time for inserting 2000 rows to a simple oracle table was 9499 milliseconds initially
Disabling auto-commit mode,
With Prepared Statement,
Batching with batch size = 30
Total time for inserting 2000 rows was 311 milliseconds, ~%97 gain&#8230;
Even with Pl/Sql Bulk operations same operation can be done under 50 milliseconds..
(Other simple features like Row PreFetching, Defining the Types of Result Set Columns, Statement Caching also affects the performance very much - Oracle 9i JDBC Programming by Jason Price)
In my organization this independence efforts and the black-box syndrome like Kyte mentions(Expert One-on-One by Thomas KYTE) minimize our investment for Oracle and makes me a magician since with the very small knowledge which is available everywhere I can improve an application&#8217;s performance 2-3 times..
Lately the java develpers I work with needed a search tool for their internet application, the project manager started to investigate the available tools. At that moment I heard about this and talked with the manager of the group and suggested them to use Oracle Text since they are running on Oracle9iR2. The result were as usual, I was once again a magician :o))
Developers who work with Oracle must know what is available for them, if not &#8220;database indepedence&#8221; guide people to run on Oracle like an Excel sheet and reinvent the wheel again and again in every new project..
Best regards.</description>
		<content:encoded><![CDATA[<p>One of the most interesting example of database independence may be seen in JDBC programming in my opinion. Since JDBC is a standart java guys talk about this as an advantage, but here are some test results for improving the performance of J2EE applications with very simple JDBC tips;<br />
Total time for inserting 2000 rows to a simple oracle table was 9499 milliseconds initially<br />
Disabling auto-commit mode,<br />
With Prepared Statement,<br />
Batching with batch size = 30<br />
Total time for inserting 2000 rows was 311 milliseconds, ~%97 gain&#38;#8230;<br />
Even with Pl/Sql Bulk operations same operation can be done under 50 milliseconds..<br />
(Other simple features like Row PreFetching, Defining the Types of Result Set Columns, Statement Caching also affects the performance very much &#8211; Oracle 9i JDBC Programming by Jason Price)<br />
In my organization this independence efforts and the black-box syndrome like Kyte mentions(Expert One-on-One by Thomas KYTE) minimize our investment for Oracle and makes me a magician since with the very small knowledge which is available everywhere I can improve an application&#38;#8217;s performance 2-3 times..<br />
Lately the java develpers I work with needed a search tool for their internet application, the project manager started to investigate the available tools. At that moment I heard about this and talked with the manager of the group and suggested them to use Oracle Text since they are running on Oracle9iR2. The result were as usual, I was once again a magician :o))<br />
Developers who work with Oracle must know what is available for them, if not &#38;#8220;database indepedence&#38;#8221; guide people to run on Oracle like an Excel sheet and reinvent the wheel again and again in every new project..<br />
Best regards.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Stew Stryker</title>
		<link>http://www.rittmanmead.com/2004/11/24/the-cost-of-database-independence/comment-page-1/#comment-201</link>
		<dc:creator>Stew Stryker</dc:creator>
		<pubDate>Tue, 30 Nov 2004 21:33:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.rittmanmead.com/wp2/2004/11/24/the-cost-of-database-independence/#comment-201</guid>
		<description>As Sebastiano Pilla wrote:
They could&#8217;ve achieved a good compromise by encapsulating the sequence retrieval function in a module (very loosely speaking, I don&#8217;t know the programming language used), and using one implementation for Oracle (Oracle sequences) and another implementation for another database. The amount of code that differs from one database to another would still be very small and they could obtain satisfactory performance.
I agree entirely.
If you&#8217;ll pardon the metaphor, here&#8217;s my view of &#8220;database independence&#8221;.  Let&#8217;s say you buy a car.  You ski, snowboard and kayak, so you buy a Thule roof rack with all the doodads to attach them to this car.  A few years later, you trade the car in for a different brand and type.  If you expect to be able to strap the old roof rack on your new vehicle, you&#8217;re going to be disappointed because 8 times out of 10, it ain&#8217;t going to work.  But you don&#8217;t have to buy a whole new rack and ski, snowboard and kayak attachments.  You just have to buy new feet for the rack bar.
So those vehicle-specific feet are equivalent to those database-specific modules that you&#8217;ll have to maintain when you move to a new database.  Thinking you&#8217;re going to get 100% future compatibility with a new database (or new car) is foolish.</description>
		<content:encoded><![CDATA[<p>As Sebastiano Pilla wrote:<br />
They could&#38;#8217;ve achieved a good compromise by encapsulating the sequence retrieval function in a module (very loosely speaking, I don&#38;#8217;t know the programming language used), and using one implementation for Oracle (Oracle sequences) and another implementation for another database. The amount of code that differs from one database to another would still be very small and they could obtain satisfactory performance.<br />
I agree entirely.<br />
If you&#38;#8217;ll pardon the metaphor, here&#38;#8217;s my view of &#38;#8220;database independence&#38;#8221;.  Let&#38;#8217;s say you buy a car.  You ski, snowboard and kayak, so you buy a Thule roof rack with all the doodads to attach them to this car.  A few years later, you trade the car in for a different brand and type.  If you expect to be able to strap the old roof rack on your new vehicle, you&#38;#8217;re going to be disappointed because 8 times out of 10, it ain&#38;#8217;t going to work.  But you don&#38;#8217;t have to buy a whole new rack and ski, snowboard and kayak attachments.  You just have to buy new feet for the rack bar.<br />
So those vehicle-specific feet are equivalent to those database-specific modules that you&#38;#8217;ll have to maintain when you move to a new database.  Thinking you&#38;#8217;re going to get 100% future compatibility with a new database (or new car) is foolish.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dan Clamage</title>
		<link>http://www.rittmanmead.com/2004/11/24/the-cost-of-database-independence/comment-page-1/#comment-200</link>
		<dc:creator>Dan Clamage</dc:creator>
		<pubDate>Mon, 29 Nov 2004 20:41:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.rittmanmead.com/wp2/2004/11/24/the-cost-of-database-independence/#comment-200</guid>
		<description>Is database independence what they&#8217;re teaching in universities these days? Some professors are really out of touch with the real world, where we have to make things work quickly and scale well. A well-known Best Practice (that has been proven to work) is to encapsulate your SQL in an interface layer, so when you have to go changing things for another target database, that&#8217;s the only thing you have to muck with. The application layer (however you wish to implement it, 2-tier, 3-tier or n-tier) shouldn&#8217;t have to change. This is how we design and build highly maintainable systems (where you make few or no changes to the software whenever business requirements change).
What would really aid database migration projects is a translator that takes PL/SQL for example and turns it into T-SQL. But I think a cross-platform, robust translator is a long ways off.</description>
		<content:encoded><![CDATA[<p>Is database independence what they&#38;#8217;re teaching in universities these days? Some professors are really out of touch with the real world, where we have to make things work quickly and scale well. A well-known Best Practice (that has been proven to work) is to encapsulate your SQL in an interface layer, so when you have to go changing things for another target database, that&#38;#8217;s the only thing you have to muck with. The application layer (however you wish to implement it, 2-tier, 3-tier or n-tier) shouldn&#38;#8217;t have to change. This is how we design and build highly maintainable systems (where you make few or no changes to the software whenever business requirements change).<br />
What would really aid database migration projects is a translator that takes PL/SQL for example and turns it into T-SQL. But I think a cross-platform, robust translator is a long ways off.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Kim N   rby Andersen</title>
		<link>http://www.rittmanmead.com/2004/11/24/the-cost-of-database-independence/comment-page-1/#comment-199</link>
		<dc:creator>Kim N   rby Andersen</dc:creator>
		<pubDate>Fri, 26 Nov 2004 08:46:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.rittmanmead.com/wp2/2004/11/24/the-cost-of-database-independence/#comment-199</guid>
		<description>Allow me to disagree to some point. Actually database independence is a good thing - and I&#8217;m right out of school. My point is that to ensure gaining a broader market, one must be able to deploy &#8220;anywhere&#8221;, using most large vendors.
However, I seek it through an alternative strategy, compared to the &#8220;tables and indexes&#8221; way. I believe that Object Oriented Programming should supply the application with a data abstraction layer, with a complete interface (here, I mean the interface keyword, as used in C++, java og C#), and allowing you to use the &#8220;Oracle app layer&#8221;, &#8220;MSSQL layer&#8221; or the &#8220;Tables and indexes&#8221; layer.
Anyways, I&#8217;m ready to debate this in further detail, if anybody should wish so :)
Yours
Kim</description>
		<content:encoded><![CDATA[<p>Allow me to disagree to some point. Actually database independence is a good thing &#8211; and I&#38;#8217;m right out of school. My point is that to ensure gaining a broader market, one must be able to deploy &#38;#8220;anywhere&#38;#8221;, using most large vendors.<br />
However, I seek it through an alternative strategy, compared to the &#38;#8220;tables and indexes&#38;#8221; way. I believe that Object Oriented Programming should supply the application with a data abstraction layer, with a complete interface (here, I mean the interface keyword, as used in C++, java og C#), and allowing you to use the &#38;#8220;Oracle app layer&#38;#8221;, &#38;#8220;MSSQL layer&#38;#8221; or the &#38;#8220;Tables and indexes&#38;#8221; layer.<br />
Anyways, I&#38;#8217;m ready to debate this in further detail, if anybody should wish so :)<br />
Yours<br />
Kim</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Alan Green</title>
		<link>http://www.rittmanmead.com/2004/11/24/the-cost-of-database-independence/comment-page-1/#comment-198</link>
		<dc:creator>Alan Green</dc:creator>
		<pubDate>Fri, 26 Nov 2004 05:12:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.rittmanmead.com/wp2/2004/11/24/the-cost-of-database-independence/#comment-198</guid>
		<description>There&#8217;s a balance here between a working application and remaining reasonably flexible to choose between RDBMS implementations. Rather than completely embracing vendor specific extensions, we tend to write fairly generic SQL for the easy 80% of an application and then do whatever it takes to make the hard 20% work well.</description>
		<content:encoded><![CDATA[<p>There&#38;#8217;s a balance here between a working application and remaining reasonably flexible to choose between RDBMS implementations. Rather than completely embracing vendor specific extensions, we tend to write fairly generic SQL for the easy 80% of an application and then do whatever it takes to make the hard 20% work well.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Sebastiano Pilla</title>
		<link>http://www.rittmanmead.com/2004/11/24/the-cost-of-database-independence/comment-page-1/#comment-197</link>
		<dc:creator>Sebastiano Pilla</dc:creator>
		<pubDate>Thu, 25 Nov 2004 17:57:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.rittmanmead.com/wp2/2004/11/24/the-cost-of-database-independence/#comment-197</guid>
		<description>They could&#8217;ve achieved a good compromise by encapsulating the sequence retrieval function in a module (very loosely speaking, I don&#8217;t know the programming language used), and using one implementation for Oracle (Oracle sequences) and another implementation for another database. The amount of code that differs from one database to another would still be very small and they could obtain satisfactory performance.</description>
		<content:encoded><![CDATA[<p>They could&#38;#8217;ve achieved a good compromise by encapsulating the sequence retrieval function in a module (very loosely speaking, I don&#38;#8217;t know the programming language used), and using one implementation for Oracle (Oracle sequences) and another implementation for another database. The amount of code that differs from one database to another would still be very small and they could obtain satisfactory performance.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mr. Ed</title>
		<link>http://www.rittmanmead.com/2004/11/24/the-cost-of-database-independence/comment-page-1/#comment-196</link>
		<dc:creator>Mr. Ed</dc:creator>
		<pubDate>Thu, 25 Nov 2004 06:26:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.rittmanmead.com/wp2/2004/11/24/the-cost-of-database-independence/#comment-196</guid>
		<description>&#8220;Database independent&#8221; seems to mean that an application _works at all_.  No one seems to include the notion that the app has to also _work with reasonable performance_.  It&#8217;s like saying that you can stop programming once you get the program to compile.
You can have severe problems on other databases.  For example, DB2&#8217;s locking mechanism is vastly different from Oracle&#8217;s, and an elaborate scheme to reproduce a feature can lock up hard (think: an Oracle app meets lock escalation on DB2).  I have seen companies switch from one database to another, and things like this always nip them in the behind.
A better goal is to only use SQL/features/code that can be easily reproduced on other database types.  Every database seems to have the equivalent of a sequence, so there&#8217;s nothing wrong with using it.  But if you get into some of the fancier Oracle, DB2, or Sybase features, you start to dramatically increase your work if you need to convert.
Companies will spend a lot more money trying to make their &#8220;database independent&#8221; code work on every database then to simply use the constructs that the database vendor has provided.  After all, you&#8217;re not creating the index leaves yourself, anymore, right?</description>
		<content:encoded><![CDATA[<p>&#38;#8220;Database independent&#38;#8221; seems to mean that an application _works at all_.  No one seems to include the notion that the app has to also _work with reasonable performance_.  It&#38;#8217;s like saying that you can stop programming once you get the program to compile.<br />
You can have severe problems on other databases.  For example, DB2&#38;#8217;s locking mechanism is vastly different from Oracle&#38;#8217;s, and an elaborate scheme to reproduce a feature can lock up hard (think: an Oracle app meets lock escalation on DB2).  I have seen companies switch from one database to another, and things like this always nip them in the behind.<br />
A better goal is to only use SQL/features/code that can be easily reproduced on other database types.  Every database seems to have the equivalent of a sequence, so there&#38;#8217;s nothing wrong with using it.  But if you get into some of the fancier Oracle, DB2, or Sybase features, you start to dramatically increase your work if you need to convert.<br />
Companies will spend a lot more money trying to make their &#38;#8220;database independent&#38;#8221; code work on every database then to simply use the constructs that the database vendor has provided.  After all, you&#38;#8217;re not creating the index leaves yourself, anymore, right?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Andy Todd</title>
		<link>http://www.rittmanmead.com/2004/11/24/the-cost-of-database-independence/comment-page-1/#comment-195</link>
		<dc:creator>Andy Todd</dc:creator>
		<pubDate>Thu, 25 Nov 2004 02:12:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.rittmanmead.com/wp2/2004/11/24/the-cost-of-database-independence/#comment-195</guid>
		<description>Great piece Mark, well written and argued. I&#8217;d go one step further and say that every database solves this problem in a different way, each of which is more efficient than using a table of sequences.
In MySQL, for instance, they have the auto_increment column. A side effect of this is some arguably not great database designs where every table has an artificial key even if it doesn&#8217;t require one. This is usually because the person designing the schema *knows* that the definition of a primary key column is  and that every table needs one.
[1] &lt;a href=&quot;http://dev.mysql.com/doc/mysql/en/example-AUTO_INCREMENT.html&quot; rel=&quot;nofollow&quot;&gt;http://dev.mysql.com/doc/mysql/en/example-AUTO_INCREMENT.html&lt;/a&gt;</description>
		<content:encoded><![CDATA[<p>Great piece Mark, well written and argued. I&#38;#8217;d go one step further and say that every database solves this problem in a different way, each of which is more efficient than using a table of sequences.<br />
In MySQL, for instance, they have the auto_increment column. A side effect of this is some arguably not great database designs where every table has an artificial key even if it doesn&#38;#8217;t require one. This is usually because the person designing the schema *knows* that the definition of a primary key column is  and that every table needs one.<br />
[1] <a href="http://dev.mysql.com/doc/mysql/en/example-AUTO_INCREMENT.html" rel="nofollow">http://dev.mysql.com/doc/mysql/en/example-AUTO_INCREMENT.html</a></p>
]]></content:encoded>
	</item>
</channel>
</rss>
