Philipp Auersperg wrote:
I have two questons concerning ZODB:
1. Since ZODB does not overwrite objects on change one can get the older versions when undoing the changes. My question now: how can I access older versions of objects without undoing? transactions? (I had a short glance at the ZODB classes, but found nothing)
In Zope 2.2, objects that expose a "history" tab (e.g. DTML Methods) can be reverted to one of their historical revisions. You may want to look at how these objects implement this feature if you'd like to create your own historying objects.
2.Is it possible ( or will be ) to define ZODB objects for which updates are done by overwriting and not appending to the object database
Not with FileStorage... it would be possible to do so with a relational storage or with another kind of storage like BerkeleyStorage.
- That is an important issue for objects that are subject to frequent and simple changes. For example Webcounters or Advertising banners that count the clicks. Solutions to write these changes into external files (like FSCounter) are not more than emergency solutions for me.
For right now, the only way to get the behavior you want is to use a nonundoing storage. In the future, the default Zope storage will probably not be FileStorage. Instead, it will probably be something more flexible that doesn't require an all-appends strategy to maintain transactional integrity (or at least one that abstracts this behavior out). With a (as-yet-mythical) next-generation storage, there will be a more granular way to indicate that you'd like an object to overwrite a previous historical revision.