Steve Spicklmire has also written the ZCVSMixin product (which I've never actually used) that might let you integration filesystem versioning with Zope more easily as well...
-----Original Message----- From: Patrick Lewis [mailto:pl@teleport.com] Sent: Friday, July 21, 2000 12:50 PM To: 'zope@zope.org' Subject: Re: [Zope] request for advice
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>
_______________________________________________ Zope maillist - Zope@zope.org http://lists.zope.org/mailman/listinfo/zope ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope-dev )