← Back to team overview

launchpad-dev team mailing list archive

Re: performance tuesday - a few notes

 

On 2010-08-13 05:02, Robert Collins wrote:

Ugh; well I can see that being a risk too. OTOH we have no way to
represent many of our derived data except via caching (cachedproperty
or otherwise).

I see another risk as well: is __storm_invalidated__ good enough? If a @cachedproperty involves data that's one or more joins away, who says that __storm_invalidated__ will ever be invoked before you re-use stale data?

A safer approach that I've seen, though less aggressive and less convenient, is to adapt-and-delegate. It feels a lot like caching in browser code. Say Foo implements IFoo. You load up a Foo from the database, but adapt it to ICachingFoo. That gives you an object that delegates IFoo to the real Foo, but adds all sorts of caching. The model object stays cached as aggressively as the ORM can manage, but the object's caches are gone when you finish with the request.


Jeroen



Follow ups

References