<?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>HalWebGuy.  Online Media Geek. &#187; Software Development</title>
	<atom:link href="http://halwebguy.danziger.net/tag/software-development/feed/" rel="self" type="application/rss+xml" />
	<link>http://halwebguy.danziger.net</link>
	<description>following the crossroads of media and technology products</description>
	<lastBuildDate>Sun, 18 Sep 2011 22:16:36 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>Roy Fielding is Awesome (and so was Day Ignite)</title>
		<link>http://halwebguy.danziger.net/2010/10/17/roy-fielding-is-awesome-and-so-was-day-ignite/</link>
		<comments>http://halwebguy.danziger.net/2010/10/17/roy-fielding-is-awesome-and-so-was-day-ignite/#comments</comments>
		<pubDate>Sun, 17 Oct 2010 06:44:05 +0000</pubDate>
		<dc:creator>halwebguy</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[Day Software]]></category>

		<guid isPermaLink="false">http://halwebguy.danziger.net/?p=201</guid>
		<description><![CDATA[I met a serious living legend this weekend at the Day Ignite conference in Chicago.  I don&#8217;t usually get star-struck, but Fielding is one of the principal authors of HTTP, the creator of the REST architectural style, not to mention &#8230; <a href="http://halwebguy.danziger.net/2010/10/17/roy-fielding-is-awesome-and-so-was-day-ignite/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fhalwebguy.danziger.net%2F2010%2F10%2F17%2Froy-fielding-is-awesome-and-so-was-day-ignite%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fhalwebguy.danziger.net%2F2010%2F10%2F17%2Froy-fielding-is-awesome-and-so-was-day-ignite%2F&amp;source=halwebguy&amp;style=normal&amp;service=bit.ly&amp;service_api=R_7118d1e1b6675a9bab1b0eb76ac77260&amp;hashtags=conference,Day+Software,Software+Development&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<div id="attachment_205" class="wp-caption alignleft" style="width: 133px"><a href="http://halwebguy.danziger.net/wp-content/uploads/2010/10/roy_fielding.jpg"><img class="size-full wp-image-205" title="Roy Fielding" src="http://halwebguy.danziger.net/wp-content/uploads/2010/10/roy_fielding.jpg" alt="Roy Fielding" width="123" height="154" /></a><p class="wp-caption-text">Roy Fielding</p></div>
<p>I met a serious living legend this weekend at the Day Ignite conference in Chicago.  I don&#8217;t usually get star-struck, but <a href="http://en.wikipedia.org/wiki/Roy_Fielding">Fielding</a> is one of the principal authors of HTTP, the creator of the REST architectural style, not to mention tons of other contributions to, well, the world.  Browsers work the way they do, largely, because of him and his work.  Just about everyone on the planet uses HTTP.  And I have a career because of his work.  My wife asked &#8220;so it&#8217;s his fault I always have to type HTTP?&#8221; And the answer is, well, yes, but that&#8217;s a good thing <img src='http://halwebguy.danziger.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />   I&#8217;m looking forward to learning more about waka, his next contribution.</p>
<p>The conference was a great experience.  I had the opportunity to meet David Nuescheler (for the second time) who is the spec lead for <a href="http://jcp.org/en/jsr/detail?id=283">JSR-283</a>, for Java Content Repositories.  I also had the opportunity to speak with Jean-Michel Pittet, Day Software&#8217;s SVP of Engineering, Greg Klebus, a Day product manager, and Lars Trieloff again, also a product manager at Day, who I met for the first time a few months back.  I had the opportunity to chat with many of Day&#8217;s great customers, including Warren Habib from MTV, who I met for the first time about a year ago at an event in New York.</p>
<p>Most importantly, I got to enjoy an incredible event with some developers on my team. I wish I could have brought them all, but I had a great time with Andrei, <a href="http://twitter.com/parito">@parito</a>, and <a href="http://twitter.com/filku">@filku</a>, and we were able to learn a lot about Day&#8217;s plans for CQ 5.4, which is currently in beta.  Thank you to New York Media, who flipped the bill for us to attend this conference.  We&#8217;re hoping to return in 2011 in San Francisco!</p>
]]></content:encoded>
			<wfw:commentRss>http://halwebguy.danziger.net/2010/10/17/roy-fielding-is-awesome-and-so-was-day-ignite/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The NoSQL Movement: The Object &#8211; RDMBS Incompatability</title>
		<link>http://halwebguy.danziger.net/2010/02/25/the-nosql-movement-the-object-rdmbs-incompatability/</link>
		<comments>http://halwebguy.danziger.net/2010/02/25/the-nosql-movement-the-object-rdmbs-incompatability/#comments</comments>
		<pubDate>Thu, 25 Feb 2010 15:03:26 +0000</pubDate>
		<dc:creator>halwebguy</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[object oriented programming]]></category>

		<guid isPermaLink="false">http://halwebguy.danziger.net/?p=162</guid>
		<description><![CDATA[I could prove that I&#8217;m a dinosaur and say &#8220;are you out of your mind &#8212; No SQL?&#8221;  But then, I would be the one out of my mind. I&#8217;ve always used relational databases and SQL.  In fact, SQL could &#8230; <a href="http://halwebguy.danziger.net/2010/02/25/the-nosql-movement-the-object-rdmbs-incompatability/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fhalwebguy.danziger.net%2F2010%2F02%2F25%2Fthe-nosql-movement-the-object-rdmbs-incompatability%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fhalwebguy.danziger.net%2F2010%2F02%2F25%2Fthe-nosql-movement-the-object-rdmbs-incompatability%2F&amp;source=halwebguy&amp;style=normal&amp;service=bit.ly&amp;service_api=R_7118d1e1b6675a9bab1b0eb76ac77260&amp;hashtags=database,object+oriented+programming,Software+Development&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>I could prove that I&#8217;m a dinosaur and say &#8220;are you out of your mind &#8212; No SQL?&#8221;  But then, I would be the one out of my mind.</p>
<p>I&#8217;ve always used relational databases and SQL.  In fact, SQL could probably be called my second language.  And while I don&#8217;t have the gripes that others may have with the language itself [<a href="http://www.kellblog.com/2010/02/24/the-database-tea-party-the-nosql-movement/">http://www.kellblog.com/2010/02/24/the-database-tea-party-the-nosql-movement/</a>], relational databases do come with a bag full of limitations and challenges.  I&#8217;ll tell you my gripe.</p>
<p>My biggest gripe is that I believe in object oriented programming, and RDBMS doesn&#8217;t play nicely in the OO sandbox.  Now of course, you could write your own data tier that calls stored procedures, or that has prepared statements.  But this is asking developers to write in a second language for your application.  This leads to ORMs, and for anybody who hasn&#8217;t worked with me, know now that I hate them for anything beyond simple CRUD operations.</p>
<p>But the biggest problem is effective modeling.  You cannot <em>effectively </em>model some object or hierarchical relationships with RDBMS.  For example, try to model n-deep dynamic menus in a relational database.  Each menu node has a parent, and each menu node falls within some order relative to the other items under the same parent.</p>
<div id="attachment_163" class="wp-caption aligncenter" style="width: 371px"><a href="http://halwebguy.danziger.net/wp-content/uploads/2010/02/menu_hierarchy.jpg"><img class="size-full wp-image-163" title="Example Menu Hierarchy" src="http://halwebguy.danziger.net/wp-content/uploads/2010/02/menu_hierarchy.jpg" alt="" width="361" height="303" /></a><p class="wp-caption-text">Example Menu Hierarchy</p></div>
<p>This is actually fairly easy to model in an RDBMS, but it is not very effective.  Each node has a parent node (except for the root node, which I left out for the sake of this example), and each node has a numeric ordering.</p>
<div id="attachment_167" class="wp-caption aligncenter" style="width: 166px"><a href="http://halwebguy.danziger.net/wp-content/uploads/2010/02/menu_hierarchy_table.jpg"><img class="size-full wp-image-167" title="Menu Hierarchy Table" src="http://halwebguy.danziger.net/wp-content/uploads/2010/02/menu_hierarchy_table.jpg" alt="Data Model for a Menu in a RDBMS" width="156" height="144" /></a><p class="wp-caption-text">Data Model for a Menu in a RDBMS</p></div>
<p>So here comes the problem.  What&#8217;s the SQL for selecting out your menu structure?  Since you do not know how deep the structure is (n-deep), you could do this with a crazy loop and some recursion.</p>
<ol>
<li>Get the root node [SELECT * from MenuNode where nodeParentNode is null]</li>
<li>Get all of the first level nodes [SELECT * from MenuNode where nodeParentNode=0 ORDER BY nodeOrder ASC]</li>
<li>For each node returned, get it&#8217;s children, recursively</li>
</ol>
<p>For the example menu hierarchy above, this would result in 1 SQL call to get the root, 1 call to get its children, 1 call for each of those 4 children to look for their children, two calls to get the children of D3a and D3b, two calls to get the children of D3bA and D3bB, and one call to find the children of D3bBi.  SQL round trips are expensive, and this is a lot of calls for a small menu.  This does not scale at all.  And this doesn&#8217;t even address the problem of maintaining order within each level of the hierarchy.  Of course, there are other ways to skin this cat.  nodeOrder could be replaced with nodeAbove, using more of a linked list type of structure, but that doesn&#8217;t work well either.  It would probably be more efficient to grab all the nodes in one sql call, and put them back together as you load them into a proper data structure, which in and of itself will take processing and time.</p>
<p>The bottom line is that it&#8217;s not a natural fit.</p>
<p>So, NoSQL people, tell me how you would do this using other tools?  CouchDB?  MongoDB?  Cassandra?  MarkLogic?  I presume this problem has been largely solved.  I still don&#8217;t believe that RDBMS is a bad tool.  You need to use the right tool for the problem you&#8217;re trying to solve, and be careful to minimize the total number of data persistence tools in your organization.</p>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 16px; width: 1px; height: 1px;"><img src="file:///C:/Users/HDANZI%7E1/AppData/Local/Temp/moz-screenshot.png" alt="" /></div>
]]></content:encoded>
			<wfw:commentRss>http://halwebguy.danziger.net/2010/02/25/the-nosql-movement-the-object-rdmbs-incompatability/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

