I agree with Chris: *wow*! [re the original explanation] ...
I'm sure I left a few things out, so ask questions about the unclear parts.
Everything was wonderfully clear, except that the actual mechanism to convert the nested tuples flexibly to RDBMS record sequences escaped me a bit. This probably gets in the realm of "look at the code" which is what, in fact, I will hope to do.
It's probably more info than you were expecting. ;-)
Yes, and much appreciated. [re the solution to Chris's spanner] ...
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. ;-)
This does sound good. Zope3 will rule the world! ;-) Gary