[Zope-dev] Globally unique id's in Zope in a new way

Tres Seaver tseaver@palladion.com
Thu, 09 Mar 2000 11:34:21 -0600


"James W. Howe" <jwh@allencreek.com> wrote:
> 
> At 07:49 PM 3/8/00 -0500, Jason Spisak wrote:
> >Zopsters,
> >
> >I use the Catalog for quite a bit of jumping around the ZODB, and have a
> >30,000 plus objects in a system.  I like the idea of not having to worry
> >about id's conflicting with other numbers that might appear (invoice
> >numbers, employee numbers, etc...) so I don't like to use a counter for
> >ids.  [...]
> 
> I have the same problem.  I want to automatically create objects and I'm
> currently using the time method.  When I bulk add objects, I would get a
> collision on the time value, so I simply remembered the last id and added 1
> to that value.  It works for my current needs, but I wish Zope provided a
> standard mechanism for generating unique id's.
> 
> For example, it would actually be nice if Zope provided an implementation
> of UUID (called GUID by Microsoft).  A UUID is a guaranteed unique 64-bit
> value.  It's used in COM, CORBA and other systems which need to have
> automatically generated guaranteed unique values.  The nice thing about
> UUID's is that they are guaranteed to be unique network wide.  In other
> words, you (supposedly) can't generate a UUID which would ever conflict
> with a UUID that I generated.  It does this by an algorithm which takes
> into account things like time-of-date, network card address, etc.  I don't
> have the details on the algorithm but I know it is publically
> available.  It would probably best be implemented at the C level.
> 
> Just an idea.

On Win32, this is trivial in Python::

  import pywintypes
  guid = pywintypes.CreateGuid()
  return str( guid )

I *think* DCE RPC has a cognate function, uuid_create(), but I don't have
documentation for it (Sun RPC probably has a similar call). Hmmm, a search of
the Vaults of Parnassus (http://www.vex.net/parnassus) doesn't show any existing
wrapper for either major flavor of RPC.

Tres.
-- 
=========================================================
Tres Seaver         tseaver@palladion.com    713-523-6582
Palladion Software  http://www.palladion.com