<?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 danger of SQL illiteracy</title>
	<atom:link href="http://rc3.org/2008/09/26/the-danger-of-sql-illiteracy/feed/" rel="self" type="application/rss+xml" />
	<link>http://rc3.org/2008/09/26/the-danger-of-sql-illiteracy/</link>
	<description>Strong opinions weakly held</description>
	<lastBuildDate>Sun, 14 Mar 2010 21:46:50 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: bryan</title>
		<link>http://rc3.org/2008/09/26/the-danger-of-sql-illiteracy/comment-page-1/#comment-3079</link>
		<dc:creator>bryan</dc:creator>
		<pubDate>Mon, 29 Sep 2008 13:29:28 +0000</pubDate>
		<guid isPermaLink="false">http://rc3.org/?p=8516#comment-3079</guid>
		<description>&lt;blockquote&gt;&lt;p&gt;&lt;em&gt;Relational databases don’t reflect the way people really think about data. Key-value databases do.&lt;/em&gt;-- Jacob Davies&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;Most people don&#039;t think about data, period. There is a skill in breaking down a set of data into components and then arranging them in a meaningful structure.&lt;/p&gt;

&lt;p&gt;What if you had a set of Football Scores? Would a key-value database work there? Oh, but wait, you want to also show the standings of each football team in its respective division, &lt;strong&gt;and&lt;/strong&gt; tie those records back to the original team stats, &lt;strong&gt;and&lt;/strong&gt; tie the team roster into individual game leaders as well as season leaders.&lt;/p&gt;

&lt;p&gt;Then I want to graph, slice, and dice the whole mess across seasons to show most improvement by player position, most consistent player, and best ROI on the coach (how much $$$ did a good coach cost for a winning record vs. the highest paid coach)?&lt;/p&gt;

&lt;p&gt;These are real world problems, btw. :)&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<blockquote><p><em>Relational databases don’t reflect the way people really think about data. Key-value databases do.</em>&#8211; Jacob Davies</p></blockquote>

<p>Most people don&#8217;t think about data, period. There is a skill in breaking down a set of data into components and then arranging them in a meaningful structure.</p>

<p>What if you had a set of Football Scores? Would a key-value database work there? Oh, but wait, you want to also show the standings of each football team in its respective division, <strong>and</strong> tie those records back to the original team stats, <strong>and</strong> tie the team roster into individual game leaders as well as season leaders.</p>

<p>Then I want to graph, slice, and dice the whole mess across seasons to show most improvement by player position, most consistent player, and best ROI on the coach (how much $$$ did a good coach cost for a winning record vs. the highest paid coach)?</p>

<p>These are real world problems, btw. <img src='http://rc3.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>]]></content:encoded>
	</item>
	<item>
		<title>By: Jacob Davies</title>
		<link>http://rc3.org/2008/09/26/the-danger-of-sql-illiteracy/comment-page-1/#comment-3072</link>
		<dc:creator>Jacob Davies</dc:creator>
		<pubDate>Sat, 27 Sep 2008 02:06:34 +0000</pubDate>
		<guid isPermaLink="false">http://rc3.org/?p=8516#comment-3072</guid>
		<description>&lt;p&gt;I believe in key-value databases (of which BigTable is, one). In fact, I&#039;m kind of betting the farm on them.&lt;/p&gt;

&lt;p&gt;Relational databases don&#039;t reflect the way people really think about data. Key-value databases do.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>I believe in key-value databases (of which BigTable is, one). In fact, I&#8217;m kind of betting the farm on them.</p>

<p>Relational databases don&#8217;t reflect the way people really think about data. Key-value databases do.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: stephen o'grady</title>
		<link>http://rc3.org/2008/09/26/the-danger-of-sql-illiteracy/comment-page-1/#comment-3071</link>
		<dc:creator>stephen o'grady</dc:creator>
		<pubDate>Fri, 26 Sep 2008 21:05:37 +0000</pubDate>
		<guid isPermaLink="false">http://rc3.org/?p=8516#comment-3071</guid>
		<description>&lt;p&gt;you&#039;re not thinking that Big Tablish or LINQish designs will become the norm, eh? ;)&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>you&#8217;re not thinking that Big Tablish or LINQish designs will become the norm, eh? <img src='http://rc3.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>]]></content:encoded>
	</item>
	<item>
		<title>By: Jacob Davies</title>
		<link>http://rc3.org/2008/09/26/the-danger-of-sql-illiteracy/comment-page-1/#comment-3070</link>
		<dc:creator>Jacob Davies</dc:creator>
		<pubDate>Fri, 26 Sep 2008 20:51:36 +0000</pubDate>
		<guid isPermaLink="false">http://rc3.org/?p=8516#comment-3070</guid>
		<description>&lt;p&gt;I would think so.&lt;/p&gt;

&lt;p&gt;What was funny (in the end) to me was that I took a discrete math course 1st or 2nd semester 1st year CS undergrad. I already knew a fair amount of it, learnt some more, and just could not see what use it would be to what I knew about computer programming (which I thought was a lot, because I didn&#039;t know enough to know what I didn&#039;t know yet). Set theory? What does this have to do with the price of tea in China?&lt;/p&gt;

&lt;p&gt;So, 2nd year, along came a course in relational databases. And I was having some minor difficulties in getting the concepts until suddenly something went CLICK in this really rather visceral way and what I&#039;d learnt in set theory and what I was trying to learn about relational databases suddenly all slotted in together into a perfect understanding of the subject. Love those moments of enlightenment.&lt;/p&gt;

&lt;p&gt;Then I got my first real job, which happened to involve building an application backed by a relational database, and that rapidly showed me that I didn&#039;t know a damn thing about designing database applications.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>I would think so.</p>

<p>What was funny (in the end) to me was that I took a discrete math course 1st or 2nd semester 1st year CS undergrad. I already knew a fair amount of it, learnt some more, and just could not see what use it would be to what I knew about computer programming (which I thought was a lot, because I didn&#8217;t know enough to know what I didn&#8217;t know yet). Set theory? What does this have to do with the price of tea in China?</p>

<p>So, 2nd year, along came a course in relational databases. And I was having some minor difficulties in getting the concepts until suddenly something went CLICK in this really rather visceral way and what I&#8217;d learnt in set theory and what I was trying to learn about relational databases suddenly all slotted in together into a perfect understanding of the subject. Love those moments of enlightenment.</p>

<p>Then I got my first real job, which happened to involve building an application backed by a relational database, and that rapidly showed me that I didn&#8217;t know a damn thing about designing database applications.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Rafe</title>
		<link>http://rc3.org/2008/09/26/the-danger-of-sql-illiteracy/comment-page-1/#comment-3069</link>
		<dc:creator>Rafe</dc:creator>
		<pubDate>Fri, 26 Sep 2008 19:15:11 +0000</pubDate>
		<guid isPermaLink="false">http://rc3.org/?p=8516#comment-3069</guid>
		<description>&lt;p&gt;SQL is one of my favorite things because I always look at writing one query to get all the data I need as a fun puzzle to be solved.  I guess that means I grok set theory.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>SQL is one of my favorite things because I always look at writing one query to get all the data I need as a fun puzzle to be solved.  I guess that means I grok set theory.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Jacob Davies</title>
		<link>http://rc3.org/2008/09/26/the-danger-of-sql-illiteracy/comment-page-1/#comment-3068</link>
		<dc:creator>Jacob Davies</dc:creator>
		<pubDate>Fri, 26 Sep 2008 19:13:35 +0000</pubDate>
		<guid isPermaLink="false">http://rc3.org/?p=8516#comment-3068</guid>
		<description>&lt;p&gt;Rather, can&#039;t make it go away COMPLETELY through normalization, since it occurs in so many other places - caching, in-memory copies of data in running processes, replication, backups, work tables, foreign keys, import/exports, printouts, and that guy who always cut-and-pastes stuff into emails rather than pointing you to the appropriate record online. That doesn&#039;t mean normalization isn&#039;t important, but it does mean it&#039;s not a magic bullet and it may not always be worth pushing it as far as it could possibly go.  A little duplication in the database won&#039;t kill you.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Rather, can&#8217;t make it go away COMPLETELY through normalization, since it occurs in so many other places &#8211; caching, in-memory copies of data in running processes, replication, backups, work tables, foreign keys, import/exports, printouts, and that guy who always cut-and-pastes stuff into emails rather than pointing you to the appropriate record online. That doesn&#8217;t mean normalization isn&#8217;t important, but it does mean it&#8217;s not a magic bullet and it may not always be worth pushing it as far as it could possibly go.  A little duplication in the database won&#8217;t kill you.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Jacob Davies</title>
		<link>http://rc3.org/2008/09/26/the-danger-of-sql-illiteracy/comment-page-1/#comment-3067</link>
		<dc:creator>Jacob Davies</dc:creator>
		<pubDate>Fri, 26 Sep 2008 19:10:12 +0000</pubDate>
		<guid isPermaLink="false">http://rc3.org/?p=8516#comment-3067</guid>
		<description>&lt;p&gt;Hey, we still ARE interfacing with them using COBOL here!&lt;/p&gt;

&lt;p&gt;Not me personally, of course, but yeah, there&#039;s a lot of COBOL out there still running against them.  And SQL has a fair amount in common with COBOL - both were at least partially intended to be used by non-programmers, hence the verbose syntax, and the SQL datatypes have more in common with COBOL than with modern ideas.&lt;/p&gt;

&lt;p&gt;Relational databases are really clever, but you have to understand set theory somewhat - either explicitly or intuitively - to make good use of them. And for a lot of people that&#039;s clearly not a natural way to think (including me, though I can do it).&lt;/p&gt;

&lt;p&gt;Normalization is another area where ordinary intuition about organizing information does you no good at all.  (And I tend to think it&#039;s overrated anyway (though obviously important still!) Data duplication is a fact of life to be dealt with, and you can&#039;t make it go away by forcing an ever-less-intuitive structure on your data.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Hey, we still ARE interfacing with them using COBOL here!</p>

<p>Not me personally, of course, but yeah, there&#8217;s a lot of COBOL out there still running against them.  And SQL has a fair amount in common with COBOL &#8211; both were at least partially intended to be used by non-programmers, hence the verbose syntax, and the SQL datatypes have more in common with COBOL than with modern ideas.</p>

<p>Relational databases are really clever, but you have to understand set theory somewhat &#8211; either explicitly or intuitively &#8211; to make good use of them. And for a lot of people that&#8217;s clearly not a natural way to think (including me, though I can do it).</p>

<p>Normalization is another area where ordinary intuition about organizing information does you no good at all.  (And I tend to think it&#8217;s overrated anyway (though obviously important still!) Data duplication is a fact of life to be dealt with, and you can&#8217;t make it go away by forcing an ever-less-intuitive structure on your data.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Evan DiBiase</title>
		<link>http://rc3.org/2008/09/26/the-danger-of-sql-illiteracy/comment-page-1/#comment-3066</link>
		<dc:creator>Evan DiBiase</dc:creator>
		<pubDate>Fri, 26 Sep 2008 18:53:15 +0000</pubDate>
		<guid isPermaLink="false">http://rc3.org/?p=8516#comment-3066</guid>
		<description>&lt;p&gt;John, I just re-read my reply to your comment, and I think it comes off as way more sarcastic than I meant it. My thanks to you were sincere, for pointing me in the direction of Rafe&#039;s book, and I definitely &lt;em&gt;didn&#039;t&lt;/em&gt; (and don&#039;t!) think that you were trying to make me feel stupid.&lt;/p&gt;

&lt;p&gt;Sorry for the confusion!&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>John, I just re-read my reply to your comment, and I think it comes off as way more sarcastic than I meant it. My thanks to you were sincere, for pointing me in the direction of Rafe&#8217;s book, and I definitely <em>didn&#8217;t</em> (and don&#8217;t!) think that you were trying to make me feel stupid.</p>

<p>Sorry for the confusion!</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Rafe</title>
		<link>http://rc3.org/2008/09/26/the-danger-of-sql-illiteracy/comment-page-1/#comment-3065</link>
		<dc:creator>Rafe</dc:creator>
		<pubDate>Fri, 26 Sep 2008 18:00:26 +0000</pubDate>
		<guid isPermaLink="false">http://rc3.org/?p=8516#comment-3065</guid>
		<description>&lt;p&gt;The problem is that when SQL and relational databases were invented, most people were interfacing with them using COBOL.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>The problem is that when SQL and relational databases were invented, most people were interfacing with them using COBOL.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Jacob Davies</title>
		<link>http://rc3.org/2008/09/26/the-danger-of-sql-illiteracy/comment-page-1/#comment-3064</link>
		<dc:creator>Jacob Davies</dc:creator>
		<pubDate>Fri, 26 Sep 2008 17:49:33 +0000</pubDate>
		<guid isPermaLink="false">http://rc3.org/?p=8516#comment-3064</guid>
		<description>&lt;p&gt;I think it&#039;s pretty funny that the persistence frameworks basically encourage you to treat highly-sophisticated relational databases as a flat record-based database and try to do all the relations in code.&lt;/p&gt;

&lt;p&gt;It&#039;s not that I think relational databases are all that. Actually, the biggest problem I have with them is that they never bothered to solve the data-binding problem in a standard way, leaving the door open for all these half-assed ORM frameworks.&lt;/p&gt;

&lt;p&gt;Of course, I use Hibernate - I&#039;m lazy, and I can&#039;t be bothered to do all that object-relational mapping junk myself.  But I gotta tell you, I still write a lot of SQL - some of it in the OO Hibernate version of SQL, but a fair amount in real, raw SQL, because you just can&#039;t get a truly optimized query with a translation layer in the way.&lt;/p&gt;

&lt;p&gt;Makes me want to write my own ORM that&#039;s the barest thin layer over the database. Of course, I&#039;m sure that&#039;s what everyone else thought they were doing too.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>I think it&#8217;s pretty funny that the persistence frameworks basically encourage you to treat highly-sophisticated relational databases as a flat record-based database and try to do all the relations in code.</p>

<p>It&#8217;s not that I think relational databases are all that. Actually, the biggest problem I have with them is that they never bothered to solve the data-binding problem in a standard way, leaving the door open for all these half-assed ORM frameworks.</p>

<p>Of course, I use Hibernate &#8211; I&#8217;m lazy, and I can&#8217;t be bothered to do all that object-relational mapping junk myself.  But I gotta tell you, I still write a lot of SQL &#8211; some of it in the OO Hibernate version of SQL, but a fair amount in real, raw SQL, because you just can&#8217;t get a truly optimized query with a translation layer in the way.</p>

<p>Makes me want to write my own ORM that&#8217;s the barest thin layer over the database. Of course, I&#8217;m sure that&#8217;s what everyone else thought they were doing too.</p>]]></content:encoded>
	</item>
</channel>
</rss>
