[Zope3-Users] Modified IntId utility
Gary Poster
gary at zope.com
Tue Sep 25 12:47:50 EDT 2007
On Sep 25, 2007, at 3:27 AM, Frank Burkhardt wrote:
> I'm using a modified IntId utility which starts IDs at 1 and counts
> upwards, too.
> I needed some permanent link for each object which was easy to
> implement via IntId.
> The modification was made to safe keystrokes when typing the
> permalink. Typing
> http://server/~251 is a lot easier than http://server/~344357462 :-) .
>
> However, I don't use those IDs for anything else - like sorting.
We do. We use 64-bit intids arranged in ways that help with our most
common sorting requirements (usually time related). Higher-order
bits provide the sort order we care about, and the remaining lower-
order bits provide randomness so that we reduce the chance of
conflict errors. (It still can have a higher theoretical chance for
conflict errors than the "classic" intid approach to assigning keys,
but the BTree conflict resolution algorithm should eliminate the
increase in practice.)
So, we don't follow the exact pattern in the original post, and using
the general pattern has subtleties you need to get right. For
instance, you need to avoid conflict errors, as Stefan mentioned;
and, for simplicity, we regard intids to be immutable and so they
should only be tied to immutable data points about your objects. But
we believe the idea--letting intids have meaning, particularly for
sorting--has merit generally.
...sigh, we need to do some open-sourcing. We've been pretty busy.
Gary
More information about the Zope3-users
mailing list