[Zope3-dev] zwiki: performance of findChildren()

Guido van Rossum guido@python.org
Fri, 25 Apr 2003 12:33:02 -0400


> In Zope (both Zope 2 and Zope 3), we want to be able to refer to objects 
> in context.  As you know, the OID doesn't tell you enough to do that. 
> You usually don't want to use paths to refer to objects in context 
> either, since the path can change.  You don't want to make a registry of 
> OID to path, since OIDs should not have any meaning to the application.
> 
> So the ObjectHub solution is to assign a new arbitrary ID to objects--a 
> "hubId"--and keep a registry of hubId to path.  That way an object can:
> 
> - Make "weak" references to other objects
> 
> - Refer to an object even if it moves or gets exported/imported
> 
> - Avoid depending on OIDs
> 
> So, that's my understanding of the core of object hub.  Correct me if 
> I'm wrong, anyone.

Sounds right according to my own feeble understanding.

Which leads to a suggestion (mayby Gary can refute it): why not use
OIDs as hubids?  Is this because OIDs are fairly long (e.g. 8-byte
strings)?  Or is it because you don't know a new object's OID until
after the transaction that creates it is committed?

--Guido van Rossum (home page: http://www.python.org/~guido/)