Paul Winkler  <[EMAIL PROTECTED]> 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   [EMAIL PROTECTED]
_______________________________________________
Zope maillist  -  Zope@zope.org
http://mail.zope.org/mailman/listinfo/zope
**   No cross posts or HTML encoding!  **
(Related lists - 
 http://mail.zope.org/mailman/listinfo/zope-announce
 http://mail.zope.org/mailman/listinfo/zope-dev )

Reply via email to