[Zope] best way to populate ZODB with ~11,000 folders?

Kyler B. Laird laird@ecn.purdue.edu
Thu, 15 Feb 2001 15:26:01 -0500


I'm trying to shove the University into Zope.
I've got (~60K?) users handled and now I want
to attack classes.

We have a text file with roster data and an 
Oracle database of course info.  My plan is
to make a folder for every section of every
course, and make objects or methods for every
piece of data we have about each course (like
"description" and "prerequisites") in these
folders.

This means I'll have paths like
	/courses/2001.1/AT/249/03/02
and that would have
	/courses/2001.1/AT/249/03/02/instructor
even though the instructor might be acquired
from a parent folder.

So...my first step (late last night/early
this morning) was to try to make folders for
every section.  We have 10,699 sections this
semester, and I ran into some limits (like
FastCGI timeout, then Netscape timeout, ...)
in populating the ZODB.

Before I just start kludging my way around
this, I want to make sure there's not a
better way.  I'll be doing this every 
semester, so I want to do it well.

Today I learned about XML-RPC.  We're hard at
work trying to get the HTTPS capability
welded on to it.  (We only use HTTPS for 
Zope.)  It seems that it might be better to
use this to populate the ZODB.

Although I'd rather keep everything in Zope,
I'm thinking I'd write a Python program that
parses the text file and communicates with
Oracle to get all of the data.  As it's
iterating over that data, it would shoot off
XML-RPC transactions with Zope.  There would
be something on the order of 17,000
transactions.  If I decide to handle rosters
through the ZODB, there would be another
230,000 transactions.

Is this a reasonable way to handle this?  Am
I going to kill the ZODB?  Will I swamp it
with transaction logs?  I recall seeing that
the ZODB isn't so great for writing.  I'll
be doing a lot of writing.

We've used Oracle for everything, but I want 
so much to move completely to ZODB so that I
can use ZEO.  I'm willing to put in some
extra effort to move down this path.

Thank you.

--kyler