[Zope] - Hints and strategical info for database migration needed (longish ) )

Stefan Franke sfranke@cdc-group.com
Fri, 8 Jan 1999 19:50:15 +0100


After some days of evaluation I decided that Zope is (surprise!-)
exactly what I need for my current application.
I'm trying to publish some thousand elements of strictly hierarchical
data with an advanced search interface (for the user) and a management
interface for which Zope's standard interface would be just fine.

Currently I generate my data strucure - an attributed tree with cyclic
links back from each element to its father - with a python program from
a flat file. I'm a bit uncertain about the best way to migrate this
structure into Zope and would appreciate some opinions about it. 

Since I would like to recycle Zope's management interface, I it seems
better to have the data element-wise included into the persistent
storage with a separate product class for each node or leaf type in
my structure (the tree itself is very heterogenous) than to write an
interface to my existing data management (not speaking of the other 
benefits BoboPOS provides).

The questions I'm concerned about are
- The performance of the query functions: At the moment, the whole
  data fits well into memory (few thousand elements / ~10 MB). How
  big is the overhead in speed and size if I turn each element into
  a persistent product instance.

- Are Products the right way to go?

- Are there any problems with the inherent cyclic structure of the
  data in conjunction with the persistent storage?

- Let's say I would subclass Zope's folder class for my inner nodes.
  I think the links to the containing objects are provided anyway due
  to the aquisition structure?

- And most important: How do migrate my data into the Z database? It
  would be cool for me using a HTTP file upload to completely replace
  the interned database with the data from the uploaded file (I could
  retain my existing flat file parser).
  But how do I access the persistent storage from (let's say) the 
  external method performing the upload). Of course, I have seen the 
  BoboPOS docs, but what are the concrete instances I can access from
  an external method?

Though being generally a little bit overwhelmed by the whole Z 
documentation and confused by the Bobo/Principia legacy naming, the 
latter is one of the most unclear parts for a newbie like me: What is
the surrounding API in a published module. What
functions/modules/globals
can I access?

Any help appreciated - 
Stefan