[Dev] ZODB is not a Storage Technology (Re: other formats )

Chris McDonough chrism at zope.com
Sun Nov 3 16:15:36 PST 2002

On Sun, 2002-11-03 at 18:37, Kevin Altis wrote:
> 7.12 bsddb -- Interface to Berkeley DB library
> http://www.python.org/doc/lib/module-bsddb.html
> Based on what it says about the Berkeley DB library...
> "There are two incompatible versions of the underlying library. Version 1.85
> is widely available, but has some known bugs. Version 2 is not quite as
> widely used, but does offer some improvements. The bsddb module uses the
> 1.85 interface."
> Using Berkley DB has some issues, assuming that ZODB is in fact using
> bsddb?!

ZODB can use bsddb, but doesn't need to.  ZODB has the concept of
"storages", "databases" and "connections".  When an application thread
wants to get access to persistent data, a connection is made to a
database.  The database is backed by a storage.

There are very few database types and connection types.  Maybe one or
two of each.

But there are many storage types, including a single file (FileStorage),
an Oracle database (OracleStorage), a set of BerkeleyDB databases
(bsddb3Storage), memory (TemporaryStorage), many disk files
(DirectoryStorage), and so on.

If ZODB is to be used, it'd probably be a good idea for Chandler
developers to start out using FileStorage.  It keeps all data in one
single file.  It's the most widely used and most well-tested out of all
the available storages.  When it comes time for stress-testing developed
software or scaling beyond the limits of a single file, switch to
bsddbStorage or one of the other storages.  Then again, bsddbStorage has
historically had some of the same limitations of FileStorage (one huge
"pickle" file, high memory utilization), so it might not even be worth
it to use it in favor of FileStorage.  Maybe experiment with
DirectoryStorage instead.

Also, FWIW, there is also an updated bsddb library for Python at
http://pybsddb.sourceforge.net/.  It supports the latest bsddb
versions.  I'm not certain why it's not shipping with Python itself yet,
although I think I've seen some rumblings on the Python-dev list which
make me think it will be included with the next major Python version.


- C

More information about the Dev mailing list