Tim Peters wrote:
Some "auxiliary" code would definitely break if they weren't strings. For
example, ZEO cache tracing has its own trace-file format, which originally
blew up left and right when Shane tried to use it with APE. That got
generalized (and, alas, the trace files got bigger) to live with APE's (at
the time) variable-length string oids, but was not generalized to live with
FWIW: Ape still uses variable length strings. The OIDs shrank in size
because they used to contain the object's "physical path", but that
turned out to play bad tricks with copy/paste, so now OIDs are usually
ASCII representations of integers.
Also, Ape assigns its own OID for the root object; '\0' * 8 is not a
special OID in Ape. It can do this because it has to provide its own DB
and Connection objects anyway.
For more information about ZODB, see the ZODB Wiki:
ZODB-Dev mailing list - ZODB-Dev@zope.org