[Zope3-Users] ZODB? PostgreSQL?

Doyon, Jean-Francois jdoyon at NRCan.gc.ca
Mon Apr 23 10:12:40 EDT 2007


"- 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)."

You can use Zope Replication Services (ZRS), a commercial offering from
Zope Corp.

Also, on Linux at least, you can do CPU affinity to get around the GIL
issue, or get single CPU machines, if there's such a thing anymore :)

J.F.

-----Original Message-----
From: zope3-users-bounces at zope.org [mailto:zope3-users-bounces at zope.org]
On Behalf Of Hermann Himmelbauer
Sent: April 23, 2007 09:59
To: zope3-users at zope.org
Cc: Ariel Eduardo Morales Malpica
Subject: Re: [Zope3-Users] ZODB? PostgreSQL?

Am Montag, 23. April 2007 15:21 schrieb Ariel Eduardo Morales Malpica:
> Hi. I'm working on a project and I'm using ZODB but my mentor advices 
> me that this model of database will be so big after one or two years. 
> He consider that because ZODB works with transactions and it's added 
> to ZODB frequently. My mentor mentioned me PostgreSQL, but I don't 
> want it, because is better for me use Objet Oriented Database than 
> Relational Database.
> I don't know what to do.
> Is true that ZODB can be so big in few years? I'm implementing a 
> Project Management System and I fear that it could be a problem after 
> a few years. (use ZODB).

I'm no expert, but I don't see how transactions would lead to a huge
database.

AFAIK, ZODB allows you to keep old data to enable an undo mechanism. At
least with Plone, I know that this is possible. However, if you want to
get rid of this data, one can pack the database, which removes old data
which is older than a certain time, so I don't see how the database
would endlessly grow.

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.
- 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).
- In case of data models, which heavily rely on references (=relations),
I think you are also better off with RDBs. 
- RDBs have several addons, such as backup strategies, report generation
etc. 
etc.

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

If your professor insists on PostgreSQL, then think about zalchemy,
which enables a (more or less) seamless integration between Zope3 and
relational databases by utilizing an object relational mapper (ORM,
especially SQLAlchemy).

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.

Regards,
Hermann

--
x1 at aon.at
GPG key ID: 299893C7 (on keyservers)
FP: 0124 2584 8809 EF2A DBF9  4902 64B4 D16B 2998 93C7
_______________________________________________
Zope3-users mailing list
Zope3-users at zope.org
http://mail.zope.org/mailman/listinfo/zope3-users


More information about the Zope3-users mailing list