<?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: Using GUIDs as row identifiers</title>
	<atom:link href="http://damieng.com/blog/2007/11/06/using-guids-as-row-identifiers/feed" rel="self" type="application/rss+xml" />
	<link>http://damieng.com/blog/2007/11/06/using-guids-as-row-identifiers?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=using-guids-as-row-identifiers</link>
	<description>A .NET developer in silicon valley</description>
	<lastBuildDate>Sun, 25 Dec 2011 15:10:30 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: slamcool</title>
		<link>http://damieng.com/blog/2007/11/06/using-guids-as-row-identifiers#comment-13717</link>
		<dc:creator>slamcool</dc:creator>
		<pubDate>Sun, 05 Apr 2009 19:12:01 +0000</pubDate>
		<guid isPermaLink="false">http://damieng.com/blog/2007/11/06/using-guids-as-row-identifiers#comment-13717</guid>
		<description>I read most of people&#039;s feedback here plus made some tests on some DBMS.

Guid are a 128bit integer. Behind it is an algorithm that obviously will be slower than old standard sequential/smaller integers. But, on the contrary to some here, I believe this actually boost up the relational concept all together if you implement this in large scale.

I&#039;ve tested a similar concept with IBM&#039;s DB2 token datatype on a huge os/390 mainframe. This has proven very powerful in sharing/replicating data in between mainframes across the world. Since it gives you a very high potential of IDs to be globally unique.

This ROW id technique is being used now in between some govs I worked for. It&#039;s perfect to create entities and link them with a bunch of other &quot;sattelite&quot; information coming from other external systems and building up a huge database of links in between entities.

That&#039;s my opinion.</description>
		<content:encoded><![CDATA[<p>I read most of people&#8217;s feedback here plus made some tests on some DBMS.</p>
<p>Guid are a 128bit integer. Behind it is an algorithm that obviously will be slower than old standard sequential/smaller integers. But, on the contrary to some here, I believe this actually boost up the relational concept all together if you implement this in large scale.</p>
<p>I&#8217;ve tested a similar concept with IBM&#8217;s DB2 token datatype on a huge os/390 mainframe. This has proven very powerful in sharing/replicating data in between mainframes across the world. Since it gives you a very high potential of IDs to be globally unique.</p>
<p>This ROW id technique is being used now in between some govs I worked for. It&#8217;s perfect to create entities and link them with a bunch of other &#8220;sattelite&#8221; information coming from other external systems and building up a huge database of links in between entities.</p>
<p>That&#8217;s my opinion.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: George</title>
		<link>http://damieng.com/blog/2007/11/06/using-guids-as-row-identifiers#comment-5020</link>
		<dc:creator>George</dc:creator>
		<pubDate>Wed, 07 Nov 2007 22:17:46 +0000</pubDate>
		<guid isPermaLink="false">http://damieng.com/blog/2007/11/06/using-guids-as-row-identifiers#comment-5020</guid>
		<description>@Robert: I knew I would drag it out of you if I just kept at it!  Thanks for the lesson, I get it now :)</description>
		<content:encoded><![CDATA[<p>@Robert: I knew I would drag it out of you if I just kept at it!  Thanks for the lesson, I get it now :)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: robert</title>
		<link>http://damieng.com/blog/2007/11/06/using-guids-as-row-identifiers#comment-5019</link>
		<dc:creator>robert</dc:creator>
		<pubDate>Wed, 07 Nov 2007 19:38:37 +0000</pubDate>
		<guid isPermaLink="false">http://damieng.com/blog/2007/11/06/using-guids-as-row-identifiers#comment-5019</guid>
		<description>@George: No, a Primary Key is not just some unique string.  Unless either a) you don&#039;t care if you get duplicates or b) some other unique string Really identifies the thing.  The point of the contemplation is that a true RDBMS models, in the fulsome mathematical sense, whereas IMS/XML/OODBMS/etc. do not.  With solid state machines, there is no advantage to using clunky non-relational, redundant type datastores; such are thought to be faster since they don&#039;t join.  With solid state machines, use the Relational Model as Codd intended, and present the data as redundantly to the user as the user desires.  Just know enough not to impose such on the datastore.  Or the relational mantra:  one fact, one place, one time.  Or its lemma:  storing a fact twice doesn&#039;t make it twice as true.


&gt; Machines don&#039;t care. They use pointers

And that&#039;s quite the point:  IMS/XML style datastores REQUIRE the coder to manage said pointers.  

Quote:
Whereas Codasyl [IDS, 1964] was based on a network model of data, IBM&#039;s database [IMS, 1968] used a hierarchical structure. ...Both the IBM and the Codasyl products were sometimes called navigational databases because they required the user to program or navigate around a data set. Bachman&#039;s Turing Award lecture in 1973, in fact, was entitled &quot;The Programmer as Navigator&quot; (Bachman, 1973; Cardenas, 1979)
-National Research Council/1999

I suggest Celko&#039;s book, then Elmasri, then Date.</description>
		<content:encoded><![CDATA[<p>@George: No, a Primary Key is not just some unique string.  Unless either a) you don&#8217;t care if you get duplicates or b) some other unique string Really identifies the thing.  The point of the contemplation is that a true RDBMS models, in the fulsome mathematical sense, whereas IMS/XML/OODBMS/etc. do not.  With solid state machines, there is no advantage to using clunky non-relational, redundant type datastores; such are thought to be faster since they don&#8217;t join.  With solid state machines, use the Relational Model as Codd intended, and present the data as redundantly to the user as the user desires.  Just know enough not to impose such on the datastore.  Or the relational mantra:  one fact, one place, one time.  Or its lemma:  storing a fact twice doesn&#8217;t make it twice as true.</p>
<p>&gt; Machines don&#8217;t care. They use pointers</p>
<p>And that&#8217;s quite the point:  IMS/XML style datastores REQUIRE the coder to manage said pointers.  </p>
<p>Quote:<br />
Whereas Codasyl [IDS, 1964] was based on a network model of data, IBM&#8217;s database [IMS, 1968] used a hierarchical structure. &#8230;Both the IBM and the Codasyl products were sometimes called navigational databases because they required the user to program or navigate around a data set. Bachman&#8217;s Turing Award lecture in 1973, in fact, was entitled &#8220;The Programmer as Navigator&#8221; (Bachman, 1973; Cardenas, 1979)<br />
-National Research Council/1999</p>
<p>I suggest Celko&#8217;s book, then Elmasri, then Date.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: George</title>
		<link>http://damieng.com/blog/2007/11/06/using-guids-as-row-identifiers#comment-5015</link>
		<dc:creator>George</dc:creator>
		<pubDate>Wed, 07 Nov 2007 16:29:56 +0000</pubDate>
		<guid isPermaLink="false">http://damieng.com/blog/2007/11/06/using-guids-as-row-identifiers#comment-5015</guid>
		<description>@robert:  I&#039;m slow again today (2-days in a row! Maybe I should see a doctor...) I read the posts you recommended - twice.  Not sure why you directed me over there.  It seems to be making my point.  Memory, solid state or otherwise, is getting cheaper and cheaper, faster and faster.  GUIDs are big, long, and ugly - to humans.  Machines don&#039;t care. They use pointers. A primary key is a primary key: a way of uniquely identifying a row in a table. What&#039;s an &quot;intelligent&quot; primary key?  Speaking of referential integrity, I&#039;m old enough to remember the guy in the office next to me getting chewed out by the boss for using a varchar column instead of an int column for his primary key in the Inventory database. This is the same argument today, only its with GUIDs vs. ints.  Times have changed...  They will continue to change.  Ask most 22 year old programmers today if using GUIDs are bad because of performance penalties and they&#039;ll look at you funny.  Some of them are even ballsy enough to reply, &quot;You think Google sticks with ints for PKs in their databases?&quot; ;)</description>
		<content:encoded><![CDATA[<p>@robert:  I&#8217;m slow again today (2-days in a row! Maybe I should see a doctor&#8230;) I read the posts you recommended &#8211; twice.  Not sure why you directed me over there.  It seems to be making my point.  Memory, solid state or otherwise, is getting cheaper and cheaper, faster and faster.  GUIDs are big, long, and ugly &#8211; to humans.  Machines don&#8217;t care. They use pointers. A primary key is a primary key: a way of uniquely identifying a row in a table. What&#8217;s an &#8220;intelligent&#8221; primary key?  Speaking of referential integrity, I&#8217;m old enough to remember the guy in the office next to me getting chewed out by the boss for using a varchar column instead of an int column for his primary key in the Inventory database. This is the same argument today, only its with GUIDs vs. ints.  Times have changed&#8230;  They will continue to change.  Ask most 22 year old programmers today if using GUIDs are bad because of performance penalties and they&#8217;ll look at you funny.  Some of them are even ballsy enough to reply, &#8220;You think Google sticks with ints for PKs in their databases?&#8221; ;)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dave</title>
		<link>http://damieng.com/blog/2007/11/06/using-guids-as-row-identifiers#comment-5011</link>
		<dc:creator>Dave</dc:creator>
		<pubDate>Wed, 07 Nov 2007 10:57:02 +0000</pubDate>
		<guid isPermaLink="false">http://damieng.com/blog/2007/11/06/using-guids-as-row-identifiers#comment-5011</guid>
		<description>I have seen decimals used to get around the merge problem (on oracle) (e.g. all ids on a database are x.1, all on another are x.2) It seemed to work well (I&#039;m not a DBA though)</description>
		<content:encoded><![CDATA[<p>I have seen decimals used to get around the merge problem (on oracle) (e.g. all ids on a database are x.1, all on another are x.2) It seemed to work well (I&#8217;m not a DBA though)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Rich</title>
		<link>http://damieng.com/blog/2007/11/06/using-guids-as-row-identifiers#comment-5008</link>
		<dc:creator>Rich</dc:creator>
		<pubDate>Wed, 07 Nov 2007 08:32:33 +0000</pubDate>
		<guid isPermaLink="false">http://damieng.com/blog/2007/11/06/using-guids-as-row-identifiers#comment-5008</guid>
		<description>I commented with pretty much the same view yesterday, which also hasn&#039;t turned up. The only differences were that I said point 4 looked to me like it was the same as point 2 and actually still wasn&#039;t preferable over just bumping up the keys on one machine by X million if you know you&#039;re going to merge data.

Also the possibility of collisions just isn&#039;t good enough in certain domains.</description>
		<content:encoded><![CDATA[<p>I commented with pretty much the same view yesterday, which also hasn&#8217;t turned up. The only differences were that I said point 4 looked to me like it was the same as point 2 and actually still wasn&#8217;t preferable over just bumping up the keys on one machine by X million if you know you&#8217;re going to merge data.</p>
<p>Also the possibility of collisions just isn&#8217;t good enough in certain domains.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Censored Poster</title>
		<link>http://damieng.com/blog/2007/11/06/using-guids-as-row-identifiers#comment-5004</link>
		<dc:creator>Censored Poster</dc:creator>
		<pubDate>Wed, 07 Nov 2007 04:45:28 +0000</pubDate>
		<guid isPermaLink="false">http://damieng.com/blog/2007/11/06/using-guids-as-row-identifiers#comment-5004</guid>
		<description>I too posted some counter-arguments to one of his points and never saw my post show up...maybe someone should try posting in favor and see if their comment is allowed in :)</description>
		<content:encoded><![CDATA[<p>I too posted some counter-arguments to one of his points and never saw my post show up&#8230;maybe someone should try posting in favor and see if their comment is allowed in :)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: robert</title>
		<link>http://damieng.com/blog/2007/11/06/using-guids-as-row-identifiers#comment-5000</link>
		<dc:creator>robert</dc:creator>
		<pubDate>Tue, 06 Nov 2007 21:37:17 +0000</pubDate>
		<guid isPermaLink="false">http://damieng.com/blog/2007/11/06/using-guids-as-row-identifiers#comment-5000</guid>
		<description>@George:

The contemplation -
http://groups.google.com/group/comp.databases.theory/browse_thread/thread/a11dc89d00073757/03fa754c9393f185?hl=en&amp;lnk=raot#03fa754c9393f185

Start with CELKO&#039;s first post.

Surrogate primary keys (whether GUID or otherwise) are consumate evil; they turn a RDBMS into just a filesystem datastore.  The reason being that without intelligent PKs, there is no hope of defining RI.  And so on.</description>
		<content:encoded><![CDATA[<p>@George:</p>
<p>The contemplation -<br />
<a href="http://groups.google.com/group/comp.databases.theory/browse_thread/thread/a11dc89d00073757/03fa754c9393f185?hl=en&#038;lnk=raot#03fa754c9393f185" rel="nofollow">http://groups.google.com/group/comp.databases.theory/browse_thread/thread/a11dc89d00073757/03fa754c9393f185?hl=en&#038;lnk=raot#03fa754c9393f185</a></p>
<p>Start with CELKO&#8217;s first post.</p>
<p>Surrogate primary keys (whether GUID or otherwise) are consumate evil; they turn a RDBMS into just a filesystem datastore.  The reason being that without intelligent PKs, there is no hope of defining RI.  And so on.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: George</title>
		<link>http://damieng.com/blog/2007/11/06/using-guids-as-row-identifiers#comment-4998</link>
		<dc:creator>George</dc:creator>
		<pubDate>Tue, 06 Nov 2007 21:27:37 +0000</pubDate>
		<guid isPermaLink="false">http://damieng.com/blog/2007/11/06/using-guids-as-row-identifiers#comment-4998</guid>
		<description>@Robert - I must be slow today... I&#039;ve comtemplated for about a minute and I still don&#039;t get your &quot;True RDBMS&quot; approach... [insert confused look here] 

@steve et al: I wanted to point out that one thing that GUID&#039;s work great for is in mobile/disconnected apps where you need to create rows on the local disconnected database (SQL CE) and then add them to the server store when synchronizing later.  This is a case where you want to create your new ID&#039;s because you are persisting them locally.  The GUIDs allow you to easily insert/merge records from many occasionally connected mobile devices with the server.</description>
		<content:encoded><![CDATA[<p>@Robert &#8211; I must be slow today&#8230; I&#8217;ve comtemplated for about a minute and I still don&#8217;t get your &#8220;True RDBMS&#8221; approach&#8230; [insert confused look here] </p>
<p>@steve et al: I wanted to point out that one thing that GUID&#8217;s work great for is in mobile/disconnected apps where you need to create rows on the local disconnected database (SQL CE) and then add them to the server store when synchronizing later.  This is a case where you want to create your new ID&#8217;s because you are persisting them locally.  The GUIDs allow you to easily insert/merge records from many occasionally connected mobile devices with the server.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Keith</title>
		<link>http://damieng.com/blog/2007/11/06/using-guids-as-row-identifiers#comment-4997</link>
		<dc:creator>Keith</dc:creator>
		<pubDate>Tue, 06 Nov 2007 20:19:26 +0000</pubDate>
		<guid isPermaLink="false">http://damieng.com/blog/2007/11/06/using-guids-as-row-identifiers#comment-4997</guid>
		<description>I tried submitting a number of counter points to his post as well and they never appeared.  Being DBA with warehousing experience, Steve had it right, I would rip his nuts off.</description>
		<content:encoded><![CDATA[<p>I tried submitting a number of counter points to his post as well and they never appeared.  Being DBA with warehousing experience, Steve had it right, I would rip his nuts off.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

