[ZODB-Dev] Advice needed

Roché Compaan roche at upfrontsystems.co.za
Sat Jun 24 03:51:49 EDT 2006


On Sat, 2006-06-24 at 09:24 +0200, Andreas Jung wrote:
> 
> --On 24. Juni 2006 08:53:43 +0200 Roché Compaan 
> <roche at upfrontsystems.co.za> wrote:
> 
> > I am curious what other strategies besides QueueCatalog you employ? Do
> > you ever use multiple backends for your apps? How do you decide that
> > this data belongs in a relational backend? How structured must the data
> > be, or how many records must be written how often?
> >
> > I find most data is highly structured (fixed schema), but this doesn't
> > make me choose an RDMBS - the frequency of writes, concurrency and
> > record volume does.
> 
> It is often the case where you have more complex data models that really 
> require a RDBMS. It is often the case that you have to perform complex 
> queries on your data. The ZCatalog is often just too weak and too slow for 
> such apps. Our CMS (to which Dieter often refers to) uses the ZODB to store 
> large amounts of SGML data. Since the documents fits perfectly inside a 
> hierarchy the ZODB is the perfect choice. However we have some apps around 
> the CMS that provide additional functionality or use the CMS for a 
> different purpose. Some of these apps use the content from the ZODB but 
> store their metadata in postgres. One not unimportant advantage is that 
> other ppl can run their own reports etc. using a postgres client without 
> approaching me to write a script or something in Python to get requested 
> data out of Zope.
> One particular app that I have been working on uses very complex queries 
> with lots of join etc....it would be hard model to implement such queries 
> on top of the ZODB/ZCatalog. Another point is performance: this app often 
> has to perform a lot of insert/update/delete operations within one 
> transaction (up to 1000 modifications). Postgres takes perhaps 5 seconds 
> for such a complex operation. You will never reach that performance with 
> Zope...touching 1000 objects and reindexing them will take much longer 
> (unless you adjust your data modell for performance reasons to the ZODB
> needs).

Thanks for sharing this example, it confirms the usefulness of a hybrid
backend. In a way it's a sanity check for me.

> So what I want to say is: the bullheaded idea to stick everything into the 
> ZODB or into a RDBMS is just stupid. Smart people think about the data 
> storage before starting a project.

I agree wholeheartedly that it is stupid to put everything in one
backend if the data model requires a hybrid backend.

>  That also reminds me of some postings on 
> the Plone mailinglist where non-technical people put all their stuff inside 
> without knowing what's happening under the hood and wonder that everything 
> explodes or becomes horribly slow at some point.

I think the difference here is that technical people want a fundamental
understanding of what is going on under the hood so that they can
explain better what they already observe.

-- 
Roché Compaan
Upfront Systems                   http://www.upfrontsystems.co.za



More information about the ZODB-Dev mailing list