The Zope Object DataBase provides simple, transparent persistence for Python objects; it is used by Zope to store everything from content to scripts to service configurations. Application data may be stored here or in a RDBMS. The ZODB may also be used standalone, without Zope.
The ZMI (Zope Management Interface) is a web interface for managing ZODB content. The ZODB is usually a single file, Data.fs,
in INSTANCE_HOME/var or STORAGE_HOME/var.
It may also be stored as individual files (using DirectoryStorage), in a RDBMS (using APE), etc.
- http://wiki.zope.org/ZODB
- ZODB developer's wiki
Further resources:
- ZODB for Python Programmers
- UML documentation - very good
- Advanced ZODB for Python Programmers
- Jim's Introduction to the Zope Object Database
- ZODB/ZEO Programmers Guide
- Introduction to ZODB (pdf)
- Consistency in ZODB
- How To Love ZODB and Forget RDBMS
- Source Code (in CVS)
- ZODB programming guide - examples are bit incomplete, but guide is almost up2date
- http://www.amk.ca/talks/2002-02-06/ - some inofficial zodb debugging tools
- Standalone ZODB and Search Catalog Howto
- ZODB for Python Programmers - introduction by Michael Pelletier - excerpt from the Zope Book
Examples for ZODBstandalone? built sites:
- http://www.amk.ca/python/writing/mx-architecture/ - paper about technics used in building http://www.mems-exchange.org
ZODB topics
Recovering ZODB / truncate Data.fs
- http://scgwiki.iam.unibe.ch:8080/SCG/417 -
- http://aspn.activestate.com/ASPN/Mail/Message/zodb-dev/1416242 -
- http://zope.org/Members/andym/2gig - Recovering from hitting the 2 gig data base limit
german:
- http://www.dzug.org/mailinglisten/zope/archive/2004/2004-03/1079720201483/index_html?fullMode=1#1079720201483
- http://www.mnemonic-experience.de/zope-cms/zope/praxis_datafsrecovery_html
(maybe move on own page [fsrecovery]? )
ZODB error debugging tip --Simon Michael, Mon, 03 Jul 2006 13:39:24 -0700 reply
Dieter Maurer wrote:
2006-06-28T17:18:38 INFO ZODB.Conflict database conflict error (oid 0x0300bc, class BTrees?._OOBTree?.OOBTree?, serial this txn started with 0x036671be9feda500 2006-06-28 21:18:37.483195, serial currently committed 0x036671bea30a9dee 2006-06-28 21:18:38.212845) at /VirtualHostBase?/http/host:80/ploneSite/VirtualHostRoot?/ (33 conflicts, of which 0 were unresolved, since startup at Wed Jun 28 16:34:26 2006)You see here that a "BTrees?._OOBTree?.OOBTree?" instance causes the conflict.
When I am faced with such a situation, I fetch the object from the ZODB ("from ZODB.utils import p64; obj._p_jar[p64(0x...)]?") and look into it. This may tell you from where the object comes.
Serving up a ZODB on demand from a repozo backup --simon, Fri, 18 Jan 2008 02:20:29 +0000 reply
http://reedobrien.blogspot.com/2008/01/serving-up-zodb-on-demand-from-repozo.html
monitor zodb activity from command line --simon, Fri, 25 Jan 2008 21:04:02 +0000 reply
In the style of vmstat, iostat etc.:
alias zodbstat='while true; do export T=`date +%s` && w3m -dump "http://user:pass@host/Control_Panel/Database/main/manage_activity?chart_start=$T&chart_divisions=1&chart_end=`expr $T + 1`" |grep Object; echo; sleep 1; done'