> I understand. The further invariant is that the index captured when a
> savepoint created is immutable.
Or at least acts like it. Copying is an easy-to-code and effective way to
ensure that, and I don't know of a better feasible way. Capturing a lot of
savepoints (or doing a lot of commit(True)) while modifying a lot of objects
makes for a lot of index copying, though, effectively injecting an O(N**2)
time drag (even if rollback/abort(True) is never done).
A "copy on modify" flavor of dict could do much better. Since I'm sure
Google could also make good use of that, I expect to see a patch on the
Python tracker from you implementing that by the end of this weekend <wink>.
For more information about ZODB, see the ZODB Wiki:
ZODB-Dev mailing list - ZODB-Dev@zope.org