[Zope-dev] Re: The remaining spanner in the works :-)
Chris Withers
chrisw@nipltd.com
Mon, 05 Aug 2002 09:51:12 +0100
Shane Hathaway wrote:
> I've been trying out a limited-duration cache strategy. The simplest
> approach is to clear the cache between transactions. Alternatively, you
> can clear the cache periodically. For a lot of applications this is
> adequate.
Indeed.
> Another approach, if you can afford it, is triggers. To do this, you
> have to know a lot about your database, since there is no standard way.
Yup, I think if both of these were options, then people could use triggers if
the data store could supply triggers and fall back to cache clearing if it
couldn't...
> code only allows 8 bytes in _p_serial. ;-) ) This works well enough to
> detect nearly all conflicts, even though it might not be the speediest
> solution.
Cool :-)
> And as it turned out, as long as I had conflict detection, it didn't
> matter as much that the database didn't have the most recent state all
> the time. Zope detected conflict errors and retried the transactions,
> and the second time always worked. It was good. :-)
Wow, yeah, that sounds pretty cool...
> Finally, here's a theoretical solution that I think would be ideal for a
> lot of people: if we could just ask the RDBMS for its current
> transaction ID, Zope could keep track of the last transaction ID it knew
> about, and clear the caches when another process made a change. This
> solution may yield the highest performance for Zope-centric
> applications. It would also remove the need for my MD5 hack. ;-)
But would it work for non-transactional storages like file systems?
cheers,
Chris