[Zope] non-undoable storage

Florent Guillaume fg at nuxeo.com
Mon Apr 18 09:50:44 EDT 2005


Paul Winkler  <pw_lists at slinkp.com> wrote:
> On Mon, Apr 18, 2005 at 02:38:01PM +0200, Milos Prudek wrote:
> > I have a couple hundred Articles (class instances) in my ZODB. Most 
> > instances are 200 kB, some are much larger. One of the Article 
> > properties is Number of times the article was read. Any increment causes 
> > ZODB to grow by the size of the given instance, due to the fact that 
> > ZODB will append a new version of the whole 200 kB or 2MB instance just 
> > because a single byte was changed.
> > 
> > Consequently ZODB grows several hundred MB in a single day even if no 
> > new article is added.
> > 
> > This calls for some form of non-undoable storage.
> > 
> > Is there an obvious elegant solution that I am missing?
> 
> You might consider replacing the NumberOfReaders attribute with a
> first-class persistent object.  e.g. you could use a PersistentList or
> IIBTree or some such.  This would prevent Zope from saving the entire
> Article object when that one attribute changes. You'd still get some
> bloat from all the historical revisions of the attribute, but it would
> be MUCH less.  

A better candidate, rather than PersistentList, would be a BTrees.Length.

Florent


-- 
Florent Guillaume, Nuxeo (Paris, France)   CTO, Director of R&D
+33 1 40 33 71 59   http://nuxeo.com   fg at nuxeo.com


More information about the Zope mailing list