Subject Re: GUID Key Fields
Author David Johnson
On Wed, 2005-03-30 at 06:53 +0000, Firebird-Architect@yahoogroups.com
wrote:
> Message: 4
> Date: Tue, 29 Mar 2005 10:39:24 -0500
> From: "Ann W. Harrison" <aharrison@...>
> Subject: Re: GUID Key Fields
>
> Kevin Berry wrote:
> >
> > AFAICR, DEC invented UUIDs. Microsoft came up with
> > the name GUID I believe...
>
> What I have gathered from this discussion is that there are several
> versions of a 128 bit identifier, that some are designed carefully so
> they can't ever collide - one having a MAC address in a certain
> location
> in the bit vector, another setting bits in the same location to
> zero
> which can not be zero in MAC addresses, for example. Does anyone have
> a
> significant degree of confidence that no two generated 128 bit
> strings
> will ever collide if different ID generators are used on different
> systems? If not, I'd suggest that the technology is not yet mature
> and
> add it to the list of things (like Linux installation standards) that
> just aren't worth tracking in a project that has a limited number of
> workers who are mostly volunteer.
>
> Regards,
>
>
> Ann
>

Conformance to the IETF specification is the criterion for a guarantee
of uniqueness. Paul Leach of Microsoft is the current "owner" of the
specification document. *nix UUID's and Micro$oft GUID's conform fully
to the IETF specification. UUID generation is a system call available
natively on these systems.

The only mechanism that is guaranteed to be unique is the mechanism that
uses the MAC address and the system clock as the foundation. It has the
side effect of identifying the primary MAC of the generating machine,
which M$oft obviously thought was a security issue, but which also
provides fringe benefits to some distributed apps.

There are many UUID like generators for Java. Most are hampered because
they want to be "pure java", so they cannot conform to the IETF
specification that drives the UUID off of the MAC address. Jug, from
www.doomdark.org is an open-source java implementation with native
libraries to obtain MAC addresses for full conformance to the IETF
specification.

GUID is specifically Microsoft's implementation of the IETF UUID
specification. It is comparable to say that Firebird is an open source
implementation of the SQL standard.

Support for the data type, which is becoming more frequently used over
time, is not the same as endorsement.

At the same time, my test database with 4,000,000 rows performed quite
reasonably in the random read test with a compound primary key of 36
character UUID plus integer sequence number. Native UUID support would
be nice but is not a necessity.