Zkousel jsem ZODB pouzit u on-line strategie, kde se manipuluje s radove tisicemi objektu a muzu jen potvrdit vase doporuceni -- ZODB byla velmi pomala a spotreba pameti (jak diskove tak RAM) byla enormni. Kdyz jsem kontaktoval autory ZODB, tak sami potvrdili, ze pro tento typ aplikaci neni ZODB vhodna -- je primarne urcena jako perzistentni storage ZOPE a podle toho je taky optimalizovana.
Jenom drobnost -- vase __setstate__ metoda je spatne, dovolim si vas opravit (bohuzel nemuzu kod naformatovat, misto tecek na zacatku radku si doplne mezery):
def __setstate__(self, dict):
....self.__dict__.update(dict)
....if 'effect" not in self.__dict__:
........self.effect = 1.2