Changes to the Berkeley storages for ZODB3 ==========================================
- 0 beta 1 (11-Nov-2002)
All new implementations of Full and Minimal storages. Highlights include:
- No Berkeley lock exhaustion. Because we use application locks instead of BerkeleyDB locks, there's no need to allocate huge lock files, and no possibility that large transactions will run out of locks.
- No temporary commit logs. Both storages now use an optimistic write strategy to avoid the need for temporary log files. This gives better disk and cpu performance.
- Easier configuration through a configuration instance passed to the constructors. You may not need a DB_CONFIG file anymore.
- Autopacking (Full only). Automatic packing of both storages
is implemented in a separate thread. For Full storage,
autopacking is like "classic" pack except that it doesn't
normally do garbage collection. Since it only gets rid of old
object revisions, it should be faster than a classic pack.
You can specify packing policies, such as how often to
autopack, how far back in the past to pack to, and how often
you want the autopack thread to perform a full gc classic
Minimal storage also has an optional autopack thread, but that always does a "classic pack" since there /are/ no older object revisions to get rid of.
Note that there was no official 1.0 final release, although the closest thing to a 1.0 final was included in the ZODB 3.1 release. However the table schemas are not compatible so if you have to upgrade an existing storage to one of the new storages, you will need to do a copyTransactionsFrom().
- 0 beta 5 (02-Nov-2001)
- New ZEO helper method getSerial() is implemented in a more efficient way than what BaseStorage gives you.
- More bug fixes & more unit tests.
- 0 beta 4 (25-Jul-2001)
- getSize() returns "too hard to determine"
- Bug fixes.
- 0 beta 3 (18-Jun-2001)
- Application level conflict resolution has been added to Full.
- Support for the informal "storage iteration protocol" has been added to Full. This is essentially a failsafe mechanism where transaction records can be read out of the storage either for replay back into a different storage (e.g. for migrating an existing FileStorage to a Berkeley storage), or for backup purposes. This isn't well documented, AFAIK.
- The history() method has been implemented for Full.
- docs/custom_zodb.sample was renamed to docs/custom_zodb.py
- Application level conflict resolution has been added to Full. See
- 0 beta 2 (01-May-2001)
- Substantial re-organization of the directory structure for conversion to Python distutils-style packaging.
- A significant number of PyUnit unit tests have been added, flexing most aspects of the storage interface.
- Support for tpc_vote() has been added to both Full and Minimal.
- Reference counting garbage collection has been added to Full, along with experimental support for automatic cyclic garbage collection. Now packs are only necessary to get rid of old object revisions.
- A more robust intermediate commit log has been implemented so that changes cannot be lost between the time they are store()'d and the time that the storage commits to Berkeley (during the tpc_finish() call).
- A new style of undo, called TransactionalUndo has been added to
Full. This is essentially a redo-able non-destructive undo.
for details. Note that old style undo, as implemented in Zope 2.3.x is not supported. You either need to upgrade to Zope 2.4 or you can use undo with the Full storage.
- A new Minimal storage has been added, which is undo-less and version-less similar to the Packless storage. Minimal shares much code with Full, including the robust commit log, so it is the wave of the future. It currently must still be packed, but this will eventually be rectified by adding reference counting to it.
Local Variables: mode: indented-text indent-tabs-mode: nil End: