I'm new here, so hi! ;-)

I'm looking to create a database
of persons and events, later to search persons by names, events by
dates and locations (participants of events are already in an
attribute of the event and instances of Person, which inherits from

At first I made a PersistentList of all the events
and a PersistentMapping of all the people by an id, but later found
out, that searching through a list with a for-loop is very slow
(there are about 200 000 people and 100 000 events). And so as I've
looked around here a bit (the docs and
the wikis are mostly outdated
or empty -- there's also talk about the bad documentation in this
mailinglist) I've found, that I should be using OOBTree for making
the indexes.

So what I'm asking is, is it reasonable to create
the db like this: persons in root['persons'],
which is a OOBTree,
mapping names to Person-objects and events in root['events'],
which also an OOBTree, mapping dates to Event-objects? And if I
want to map locations to events, I should do it at the same time,
when creating the events, so I don't have to loop through all of them

If I have a OOBTree-mapping of dates to events, what
should the values of it be? PersistentLists? I've read something
about Buckets or Sets, but I'm not sure what they are good
Bucket seems to behave like the equivalent BTree (OO, or IO or OI or
IF or ....), but Set seems to be a set... Is that

What's the difference between a PersistentMapping and a
OOBTree or OOBucket? Only the "back-end", because on the front they
all seem like dictionarys? Should I be using OOBTrees and OOBuckets
for what I'm doing, because strings and dates are "O"s and not "I"s
or "F"s or...

Thank you very much for any hints, tips, links
or help! ;-)

For more information about ZODB, see the ZODB Wiki:

ZODB-Dev mailing list  -  ZODB-Dev@zope.org

Reply via email to