Databases: Which one's right for me?

Jeremy Hylton jeremy at
Mon Jan 12 17:26:06 CET 2004

On Mon, 2004-01-12 at 09:58, Aaron Watters wrote:
> "Tim Peters" < at> wrote in message news:<mailman.285.1073872919.12720.python-list at>...
> > [Aaron Watters]
> > > Does zodb support the strictest isolation levels?
> >
> > I'm almost certain it doesn't, but I'm not a DB expert.  Please take this to
> > a ZODB list, as previously suggested.
> > 
> > > If so how?  If not what does it support exactly?
> > 
> > I pointed you to Jeremy's relevant blog entry last time...
> Reading the blog it seems you are right.  I wish zodb would be
> a bit more careful in its claims.  When you say "zodb supports
> the ACID properties of transactions" this has a precise meaning
> which vanishes when you redefine all the letters.

Perhaps you could say something about which of the letters you think
we've redefined in a confusing way.  If you're talking about my blog
entry or the zodb programming guide, I wrote the definitions and the
text is simply my gloss on the what I thought the standard definitions

Here's a definition of isolated from Gray & Reuter: "The property that
two transactions running in parallel have the illusion that there is no
concurrency.  It appears that the system runs one transaction at a
time.  So a transaction is isolated from the uncommitted updates of
others (so-called dirty data), and the transaction has repeatable
reads.  (See also degree 1 isolation, degree 2 isolation, degree 3

In the programming guide, we say "Isolation means that two programs or
threads running in two different transactions cannot see each other's
changes until they commit their transactions."  That strikes me as
pretty consistent with the Gray & Reuter definition.

In my blog entry  (, I
get into the finer details using some terminology from Atul Adya's PhD
thesis.  The ANSI standard isolation levels don't work for optimistic
concurrency control, and Adya fleshes out some levels that makes sense
for optimism and looking.

>   In particular
> it suggests that zodb would be good for something like an
> accounting or banking application which would require strict
> transaction isolation (serializability).  The looser definition
> could lead to fairly unpleasant difficulties (law suits, jail time...).
> Sorry, had to complete my thought on clp.

Shane Hathaway posted a nice message about the isolation level supported
by zodb last spring.

ZODB does not support full serializability at the moment.  The current
stable release supports cursor stability and the new development release
of ZODB 3.3 + multi-version concurrency control will support snapshot
isolation.  The remaining obstacle to full serializability is write
skew.  I think we can address that problem, but it hasn't been a high
priority for ZC.


More information about the Python-list mailing list