[ZODB-Dev] ZEO+MultipleClients+ConflictErrors

Dieter Maurer dieter at handshake.de
Wed Feb 27 14:13:57 EST 2008


Alan Runyan wrote at 2008-2-26 13:07 -0600:
> ...
>Most people come at ZODB with previous experience in RDBMS.
>
>How do they map SQL INSERT/UPDATE activities to ZODB data structures?
>In a way that does not create hotspot.

I tend to views the objects in an application
as belonging to three types: 

  *  primary content objects (documents, files, images, ...)

  *  containers (folders for organisation)

  *  global auxiliary objects (internal objects used for global
     tasks, such as cataloguing)

For the primary content objects, workflow is usually appropriate
to prevent concurrent modifying access.

(Large) containers should be based on a scalable data structure
with conflict resolution (such as "OOBTree"). Moreover,
the ids should be chosen randomly (to ensure that concurrent insertions
are likely to be widely spread over the complete structure).

The most difficulties can come from the global auxiliary
objects -- as there a in some way internal, not under direct
control of the application. We are using a variant of "QueueCatalog"
to tackle hotspots caused by cataloging.



-- 
Dieter


More information about the ZODB-Dev mailing list