Subject | Re: GUID Key Fields |
---|---|
Author | David Johnson |
Post date | 2005-03-25T06:48:18Z |
If produced in accordance with the UUID specification (not a knockoff
that looks like it), using the IETF draft algorithm based on system
clock and a physical MAC address (there are two other algorithms
considered compliant), UUID's are guaranteed unique in the world until
the early 31st century. It is not possible to mistake a non-MAC based
UUID with a MAC based UUID because the portion that corresponds to the
MAC address has bits set that are always zero on a valid MAC address.
Unfortunately, IETF has dropped Leach's specification paper. In it, a
UUID is defined, in part, as being unique across the UUID namespace.
It is possible to contrive a circumstance where a machine could
reproduce a previously generated UUID, but only if you set the system
clock back, and produced the same random number at the same "system
time" as the prior UUID.
I suspect that Micro$oft has switched from using the MAC based method as
default algorithm to using the random number method (which used to be
the fallback algorithm if no MAC was available).
On Fri, 2005-03-25 at 03:21 +0000, Firebird-Architect@yahoogroups.com
wrote:
From: "Ann W. Harrison" <aharrison@...>
Subject: Re: GUID Key Fields
I'll admit that I haven't looked at the GUID generating formula
Microsoft uses for some years - at that time there were recognizable
components and a description on MSDN of the format of the number.
My problem with GUID's is that my systems tend to be cross-platform and
if I were to use a system to uniquely identify records, I'd like to be
sure that the generated identifiers were unique. If I use a UUID
program on this system and Microsoft's GUIDs on that system and Ian's
id
generator on another, there a chance - vanishing small to be sure -
that
they'd accidentally generate the same 128 bit number using different
algorithms.
So, I'll stick with the convention that my database instances have a
identifier and use generators within the database. Yes, it adds a step
when putting a new database into a system, but it's a step I can
control.
Regards,
Ann
Re: GUID Key Fields
that looks like it), using the IETF draft algorithm based on system
clock and a physical MAC address (there are two other algorithms
considered compliant), UUID's are guaranteed unique in the world until
the early 31st century. It is not possible to mistake a non-MAC based
UUID with a MAC based UUID because the portion that corresponds to the
MAC address has bits set that are always zero on a valid MAC address.
Unfortunately, IETF has dropped Leach's specification paper. In it, a
UUID is defined, in part, as being unique across the UUID namespace.
It is possible to contrive a circumstance where a machine could
reproduce a previously generated UUID, but only if you set the system
clock back, and produced the same random number at the same "system
time" as the prior UUID.
I suspect that Micro$oft has switched from using the MAC based method as
default algorithm to using the random number method (which used to be
the fallback algorithm if no MAC was available).
On Fri, 2005-03-25 at 03:21 +0000, Firebird-Architect@yahoogroups.com
wrote:
> Message: 2Date: Thu, 24 Mar 2005 10:50:00 -0500
From: "Ann W. Harrison" <aharrison@...>
Subject: Re: GUID Key Fields
I'll admit that I haven't looked at the GUID generating formula
Microsoft uses for some years - at that time there were recognizable
components and a description on MSDN of the format of the number.
My problem with GUID's is that my systems tend to be cross-platform and
if I were to use a system to uniquely identify records, I'd like to be
sure that the generated identifiers were unique. If I use a UUID
program on this system and Microsoft's GUIDs on that system and Ian's
id
generator on another, there a chance - vanishing small to be sure -
that
they'd accidentally generate the same 128 bit number using different
algorithms.
So, I'll stick with the convention that my database instances have a
identifier and use generators within the database. Yes, it adds a step
when putting a new database into a system, but it's a step I can
control.
Regards,
Ann
Re: GUID Key Fields