[Zope-dev] Prevayler and "Object Prevalence"

Toby Dickenson tdickenson@geminidataloggers.com
Mon, 3 Mar 2003 17:04:21 +0000


On Monday 03 March 2003 3:48 pm, John Ziniti wrote:
> Any ZODB developers read this article at /. and the accompanying
> one at developerWorks?  Would anyone care to comment about
> the relevance/comparisons of "prevalence" to the concepts of
> persistence used in ZODB and/or ZEO?

I had looked at this (and the python port) briefly last year 

The main advantage of ZODB over a relational approach is that it can 
*automaticly* add ACID conditions to application logic objects, without major 
code changes. It is possible to think about your application logic and ignore 
the ODB aspects. Until recently, using a relational store for objects meant 
adding intrusive persistence code and breaking encapsulation.

As I understand it, prevayler preserves encapsulation, but still requires the 
intrusive code changes. It relies on separating appliction logic from the 
object store. Application logic can only read and write to the object store 
using remote method calls, which prevayler calls persistent  "command  
objects". Commands are processed  by a single threaded server process. 

Command objects have to be persisitent because durability is provided by 
writing them to a log file, and replaying commands on recovery. There is no 
way to apply transactional semantics to application logic, except by cramming 
all the work into one big command object.

(I hope that helps. Appologies in advance for any inaccuracies)

-- 
Toby Dickenson
http://www.geminidataloggers.com/people/tdickenson