[Zope] Questions on ZODB BTrees versus bsddb BTrees

Chris Withers chris at simplistix.co.uk
Fri May 5 03:36:35 EDT 2006


Terry Jones wrote:
>     Usually you find database records by means of the record's key.
>     However, the key that you use for your record will not always contain
>     the information required to provide you with rapid access to the data
>     that you want to retrieve. 

Ah, okay, you do this with multiple BTrees in Zope, unless you want to 
swallow the whole ZCatalog...

> For example, suppose your database contains
>     records related to users. The key might be a string that is some unique
>     identifier for the person, such as a user ID. 

from BTrees.IOBTree import IOBTree

chris = object()

id2user = IOBTree()
id2user[1234] = chris

>     is, by the information stored in the key), it may also on occasion want
>     to location people by, say, their name.

from BTrees.OOBTree import OOBTree, OOSet

name2user = OOBTree()
name2user['chris'] = chris

Now, if you have more than one value, you use a set:

dan = object()
age2user = OOBTree()

age2user[27] = OOSet(chris,dan)

Although, to be honest, if you're doing all this, you'll likely get more 
milleage out of the zcatalog than rolling it all yourself...

cheers,

Chris

-- 
Simplistix - Content Management, Zope & Python Consulting
            - http://www.simplistix.co.uk



More information about the Zope mailing list