[Zope3-Users] ZODB? PostgreSQL?

Benji York benji at zope.com
Mon Apr 23 11:10:42 EDT 2007


Hermann Himmelbauer wrote:
> I'm no expert, but I don't see how transactions would lead to a huge database.

I suspect he is referring to the way FileStorage use an append-only file 
format (between packs).  If you never pack the database, it will grow 
forever.  The simple answer is "don't do that". :)

This can be an issue if you have a very, very high number of writes of 
large objects.  The DB may grow too fast between packs to be usable. 
That doesn't normally happen though.

> When it comes to differences between ZODB and RDBs, I'd say the following:
> 
> - In many situations you already have an existing RDB, so the decision has 
> already been made.

True enough.  As you mention below, in this situation you can also use 
the ZODB alongside a relation DB.

> - RDBs scale scale very well, so in case your application gets really huge, an 
> RDB is an option. With Zope, you can easily cluster the application server, 
> however the ZODB can not be distributed. (Maybe ZODB can even not make good 
> use of multiple processor due to Python's GIL).

They may well exist, but I have yet to see a storage server that was CPU 
bound (that wasn't running on antique hardware).  IO is much more 
important on a storage server (ZODB or RDB).

> - In case of data models, which heavily rely on references (=relations), I 
> think you are also better off with RDBs.

Why's that?

> - RDBs have several addons, such as backup strategies, report generation etc. 
> etc.

True, although I've never gotten much value out of "generic" RDB 
utilities, especially report generators.

> If speed and the data model is not an issue, then I'd opt for ZODB.

If speed is an issue, one rule overrides all: benchmark and then decide.

> Moreover there's also the possibility of a hybrid approach, where parts of the 
> data are stored in the ZODB and other parts in a relational database.

That's my preferred general approach.  If data is "painfully 
rectangular", then a RDB might be the best approach.
-- 
Benji York
Senior Software Engineer
Zope Corporation


More information about the Zope3-users mailing list