on zodblet' move on to the next section the zodb object-oriented database zodbthe zope object databaseis full-featured and python-specific object-oriented database (oodbsystem zodb can be thought of as more powerful alternative to python' shelves of the preceding section it allows you to store nearly arbitrary python objects persistently by keylike shelvesbut it adds set of additional features in exchange for small amount of extra interface code zodb is not the only oodb available for pythonthe durus system is generally seen as simpler oodb which was inspired by zodb while durus offers some advantagesit does not provide all the features of zodb todayand it has not been as widely deployed (though perhaps in part because it is newerbecause of thatthis section focuses on zodb to introduce oodb concepts in general zodb is an open sourcethird-party add-on for python it was originally developed as the database mechanism for websites developed with the zope web framework mentioned in but it is now available as standalone package it' useful outside the context of both zope and the web as general database management system in any domain although zodb does not support sql queriesobjects stored in zodb can leverage the full power of the python language moreoverin some applicationsstored data is more naturally represented as structured python object table-based relational systems often must represent such data as individual parts scattered across multiple tables and associate them with complex and potentially slow key-based joinsor otherwise map them to and from the python class model because oodbs store native python objects directlythey can often provide simpler model in systems which do not require the full power of sql using zodb database is very similar to python' standard library shelvesdescribed in the prior section just like shelveszodb uses the python pickling system to implement persistent dictionary of persistent python objects in factthere is almost no database interface to be found--objects are made persistent simply by assigning them to keys of the root zodb dictionary objector embedding them in objects stored in the database root and as in shelve"recordstake the form of native python objectsprocessed with normal python syntax and tools unlike shelvesthoughzodb adds features critical to some types of programsconcurrent updates you don' need to manually lock files to avoid data corruption if there are potentially many concurrent writersthe way you would for shelves the zodb object-oriented database