[ZODB-Dev] BTrees and id mapping (was Re: Data.fs size grows non-stop)

Pedro Ferreira jose.pedro.ferreira at cern.ch
Fri Dec 11 06:09:10 EST 2009


Hello all,

So, I've been experimenting with a new structure for our date indexes, 
and I was considering using an IOBTree that would map integer timestamps 
to BTree-based sets. As for the sets, I considered two options:

 1. An IITreeSet based on the OID and an additional IOBTree that maps 
back the OIDs to objects;
 2. An OOTreeSet;

As expected 1 was light years faster when I tried to query for large 
timespans (doing normal union operations using OOTreeSets seems to be a 
very slow operation). Still, for single days (and generally timespans 
smaller than 7 days), the OOTreeSet seems to be much faster (apparently, 
iterating through the all the ids in the resulting set and fetching the 
corresponding object takes some time, even for sets with only one 
member, so, IITreeSet seems to be in disadvantage here).
Does anyone have any advice on optimizing the first case? I believe the 
IITreeSet is the way to go, but if only there was some way to make the 
int<->object conversion operation less expensive...

Thanks in advance,

Pedro


More information about the ZODB-Dev mailing list