[Zope] request for advice

Patrick Lewis pl@teleport.com
Fri, 21 Jul 2000 09:49:53 -0700


On Fri, Jul 21, 2000 at 04:29:01PM +0100, Seb Bacon wrote:
> Hello folks,
> 
> I'm just beginning to design my first big Zope application.  I'm writing to
> ask zopististitiatatas for some advice, since I'm a bit of a newbie and I
> want to make sure:
> 
> [a] I reuse as much code as possible 
> [b] I make my code as reusable as possible
> [c] my application is stable and scalable
> 
> 1. Background to the application
> 
> I'm building an extranet product in Zope.  Much of it will be centered
> around a 'VersioningObject'.
> 
> An example of such an object might be an image, a Word document.  The
> objects will have a preview view associated with them.  For word docs, this
> will be a html-ised version, for photos it will be a thumbnail.  Perhaps in
> the future each object will also have rudimentary online editing facilities.
> 
> The objects will all support versioning.  This means each object can be
> superceded by another object of the same type.  The version number will be
> incremented.  Versions will also have Confera forums associated with them,
> and ACLs.
> 
> Now as I see it, I want a VersioningObject to be a Folderish object that can
> contain a set of Versions, which are just a load of File objects of the same
> type.  The folder has a method which slects its most recent child file
> object and displays it by calling its preview method.  Older versions are
> read-only and are listed by title only.
> 
> 2) My questions:
> 
> i) I'm worried about the sheer volume of binary data that would accrue in
> the VersioningObject: a single VersioningObject might be a Word doc of 25Mb.
> If it has 10 versions and there are 10 such objects, that's 2.5Gb in the
> ZOBD.  I presume this would be a bad idea performance-wise; any suggestions?
> ii) I'm interested in using ZPatterns because I reckon they sound like they
> might enhance the reusability etc. of the code; I know there have been some
> pointers recently, but which ZPatterns could I benefit from?  or are they
> too arcance to worry about for now?
> iii) Is there any other miscellaneous advice?  e.g. has anything like this
> been done already?
> 
> 
> Thanking you all, ladies and gentlemen.
> 
> Seb.

A couple of ideas: 

- Don't save your data (documents, images) in the ZODB. Instead, save it
to disk using the Local File System product.  This will prevent the ZODB
from getting too big for most OSes.

- I think it would be kind of interesting to use RCS for something like
this on the backend. Build your methods in Zope to manipulate RCS, and
then you get all the functionality of RCS "for free", and don't have to
reinvent the wheel. You may run into problems with people not working with
the most current document (I grab something from the database, Jill
commits some changes to the same document, I make some changes, commit
them, and destroy Jill's changes), but you would have that problem anyway
as you initially described it.

Hope this helps.

-- 
Patrick Lewis <pl@teleport.com>