[Zope] ZODB performance: reads to writes

Jim Fulton jim@digicool.com
Wed, 28 Jun 2000 10:36:38 -0400


Jimmie Houchin wrote:
> 
> I know this has been brought up before, but I don't remember if this
> question has been asked.
> 
> I've been reading everything I could find on the ZODB. Currently I am
> reading 'Introduction to the Zope Object Database' by Jim Fulton at
> http://www.zope.org/Members/jim/Info/IPC8/ZODB3/index.html .
> 
> Towards the end of the paper under Status, he starts referring to future
> features. Under 'Application-level conflict resolution protocols' he
> states this, 'Applications with much higher write to read ratios are
> likely to encounter frequent conflict errors which can seriously affect
> performance.'
> 
> Is this pretty much the primary reason that it is generally said that
> the ZODB isn't as well suited to high write situations?

Yes. ZODB uses an optimistic concurrency control protocol, which
assumes that conflicts are rare.

> Or is there more
> to it than that?
> 
> The reason I ask is this.
> 
> My app by it's nature as a community/portal will have plenty of writes
> in certain areas. However, due to the structure of the website and the
> app most all writes are to unique objects, are appends to an object or
> the person editing the object is the owner and has no one to conflict
> with. In this case there should be little if any ConflictErrors due to
> different users trying to commit changes to the same object.

Right, assuming the objects aren't indexed. If they are indexed, then
modifications to the indexes could conflict. This is agrevated
by the current index design, at Ty pointed out in a later message.

> In the case
> of the appends, it would be like a bboard and there would be no
> conflict. Appends will be done in the order received.

Appends are still writes, so they would conflict. It's
possible that a conflict resolution protocol,
http://www.zope.org/Members/jim/ZODB/ApplicationLevelConflictResolution,
could be used to cause appends to be non-conflicting. I plan to 
implement this protocol on the database side for Zope 2.3. You'd
have to implement the application side of it.
 
Jim

--
Jim Fulton           mailto:jim@digicool.com   Python Powered!        
Technical Director   (888) 344-4332            http://www.python.org  
Digital Creations    http://www.digicool.com   http://www.zope.org    

Under US Code Title 47, Sec.227(b)(1)(C), Sec.227(a)(2)(B) This email
address may not be added to any commercial mail list with out my
permission.  Violation of my privacy with advertising or SPAM will
result in a suit for a MINIMUM of $500 damages/incident, $1500 for
repeats.