RE: Databases: Which one's right for me?

Discussion in 'Python' started by Tim Peters, Jan 11, 2004.

  1. Tim Peters

    Tim Peters Guest

    [Aaron Watters]
    > BTW, I would like to see somewhere an explanation of how
    > ZODB concurrency control and recovery work. Please inform if
    > there is some information. I'm not encouraged by the fact that
    > in what documentation I can find the definitions are not the
    > standard ones.


    Of course you're much more likely to get a useful discussion of this on a
    ZODB list, like <mailto:>.

    "The standard" ones aren't all that standard. ANSI SQL-92 defines multiple
    isolation levels, and they've been (I think) fairly critiqued as incomplete
    and partly ambiguous; e.g.,

    A Critique of ANSI SQL Isolation Levels
    Hal Berenson, et al.
    http://citeseer.nj.nec.com/berenson95critique.html

    To complicate matters, as Jeremy says here:

    http://www.python.org/~jeremy/weblog/030514.html

    ZODB uses optimistic concurrency control. It can be hard to
    describe what isolation guarantees it provides, because optimistic
    implementations don't map naturally onto the ANSI isolation levels.

    Jeremy's blog there also contains links to more recent papers.

    To complicate matters more (in theory, but nicer in practice for most uses),
    ZODB 3.3 introduces so-called Multiversion Concurrency Control as default
    behavior:

    http://zope.org/Wikis/ZODB/MultiVersionConcurrencyControl
     
    Tim Peters, Jan 11, 2004
    #1
    1. Advertising

  2. "Tim Peters" <> wrote in message news:<>...
    > [Aaron Watters]
    > > BTW, I would like to see somewhere an explanation of how
    > > ZODB concurrency control and recovery work. Please inform if
    > > there is some information. I'm not encouraged by the fact that
    > > in what documentation I can find the definitions are not the
    > > standard ones.

    >
    > Of course you're much more likely to get a useful discussion of this on a
    > ZODB list, like <mailto:>.
    >
    > "The standard" ones aren't all that standard. ANSI SQL-92 defines multiple
    > isolation levels, and they've been (I think) fairly critiqued as incomplete
    > and partly ambiguous; e.g.,
    >
    > A Critique of ANSI SQL Isolation Levels
    > Hal Berenson, et al.
    > http://citeseer.nj.nec.com/berenson95critique.html


    Some SQL isolation levels are hacks to allow long running transactions,
    etcetera. If you keep to the strictest isolation level you get the
    classical behaviour which has been studied and elaborated by many very
    smart people over the last several decades and which is very well
    understood.

    Does ZODB support the strictest isolation levels? If so how? If not
    what does it support exactly?
    -- Aaron Watters
    ===
    We'll make our way across the galaxy
    And head back home on the L.I.E.
    -- "Laser show", Fountains of Wayne
     
    Aaron Watters, Jan 12, 2004
    #2
    1. Advertising

  3. On Sun, 2004-01-11 at 20:12, Aaron Watters wrote:
    > > "The standard" ones aren't all that standard. ANSI SQL-92 defines multiple
    > > isolation levels, and they've been (I think) fairly critiqued as incomplete
    > > and partly ambiguous; e.g.,
    > >
    > > A Critique of ANSI SQL Isolation Levels
    > > Hal Berenson, et al.
    > > http://citeseer.nj.nec.com/berenson95critique.html

    >
    > Some SQL isolation levels are hacks to allow long running transactions,
    > etcetera. If you keep to the strictest isolation level you get the
    > classical behaviour which has been studied and elaborated by many very
    > smart people over the last several decades and which is very well
    > understood.


    I think lower isolation levels are more than hacks for long-running
    transactions. They seem like they're pretty important for achieving
    good performance. The strictest isolation level is necessary, of
    course, for some applications, but not all.

    Here's was PostgreSQL has to say about full serializability.
    http://www.postgresql.org/docs/current/static/transaction-iso.html

    > The Serializable mode provides a rigorous guarantee that each
    > transaction sees a wholly consistent view of the database. However,
    > the application has to be prepared to retry transactions when
    > concurrent updates make it impossible to sustain the illusion of
    > serial execution. Since the cost of redoing complex transactions may
    > be significant, this mode is recommended only when updating
    > transactions contain logic sufficiently complex that they may give
    > wrong answers in Read Committed mode. Most commonly, Serializable mode
    > is necessary when a transaction executes several successive commands
    > that must see identical views of the database.


    Jeremy
     
    Jeremy Hylton, Jan 12, 2004
    #3
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. DKode
    Replies:
    3
    Views:
    683
    =?Utf-8?B?RGF2ZQ==?=
    Apr 29, 2005
  2. Ken North
    Replies:
    0
    Views:
    634
    Ken North
    Jul 14, 2005
  3. Marc
    Replies:
    8
    Views:
    354
    John J Lee
    Jan 12, 2004
  4. Tim Peters
    Replies:
    3
    Views:
    305
    Aaron Watters
    Jan 12, 2004
  5. Tim Peters
    Replies:
    1
    Views:
    310
    Aaron Watters
    Jan 14, 2004
Loading...

Share This Page