[Zope-dev] Re: AdaptableStorage

Chris Withers chrisw@nipltd.com
Mon, 20 Jan 2003 14:23:50 +0000


Shane Hathaway wrote:
> I'm thinking about "real-time" updates.  When the underlying data 
> changes, you'd like Zope to see the change immediately.  If indefinite 
> delays are OK, then AdaptableStorage already does enough: it raises a 
> ConflictError if you try to write changes based on old data.

I think it depends on how you're using it, so I guess thsi wants to be 
configurable. Is that possible?

> The idea I like the most for relational databases is to ask the RDBMS 
> what the ID of the last transaction was.  If Zope missed a transaction, 
> it should flush all caches.  This will work if the database is 
> infrequently changed by external applications, or if Zope is accessed 
> infrequently.

Indeed.

> If external applications make a lot of changes, however, and Zope needs 
> good performance at the same time, then both Zope and the external 
> applications need to update a per-object transaction ID.  Then, at the 
> beginning of transactions, Zope would invalidate only the recently 
> updated objects.  Hmm, perhaps smarter RDBMSs could make it easy to keep 
> transaction IDs updated using triggers.  (This solution could also 
> replace both ZEO and ZRS, BTW. ;-) )

This sounds cool, and the best option, when it's possible...

> On the filesystem, the problem seems much more difficult, since there 
> are no transactions.  You'd like the kernel to send Zope a message 
> anytime someone modifies a file in a certain hierarchy, but that would 
> require kernel hacking.

How about having a seperate process which just watched the files and notifed 
Zope when they changed?

> For that case, I'm thinking that requiring external apps to touch a 
> special file somewhere might be the right thing.  At the beginning of 
> each transaction, if Zope sees a change to the file, it flushes its cache.

I don't think you can rely on this :-(

> I'm hoping to present a complete tutorial on AdaptableStorage at PyCon 
> DC 2003.

I hope you'll make this availabel for those of us who can't make it...

cheers,

Chris