[ZODB-Dev] High Write Applications

Shane Hathaway shane at zope.com
Mon Aug 4 14:29:27 EDT 2003


Phillip J. Eby wrote:
> The nice thing about a prevalence architecture is that it's dramatically 
> simpler than a persistence architecture, provided you 1) have the memory 
> and 2) don't mind architecting around command classes, and 3) don't mind 
> taking forever for an application to restart.  I have some thoughts 
> about how to make #2 relatively transparent, but #1 and #3 are generally 
> more of an issue.

Very interesting.

I have some ideas for combining persistence and prevalence, then.  (I 
haven't heard that word used in such a way before, but I guess it's 
standard.)  We could use persistence to load objects and prevalence to 
store objects.  That way the memory consumption and startup time stay 
down while we get the potential for high writes.

Here is how it might work.  ZEO clients, when possible, might send 
mutation commands instead of pickles to the ZEO server.  The ZEO server 
would execute the mutation commands on the current object system rather 
than the object system that the client saw.  The server would commit the 
changes and all clients would be notified of the changes made by the ZEO 
server.

Under this system, it seems like conflicts could only occur in the 
presence of non-"prevalent" changes, or if a command raises a 
ConflictError.  That should improve write volume.

Shane




More information about the ZODB-Dev mailing list