[Zope-dev] Folderish or SimpleItem object types for structural content

Dieter Maurer dieter at handshake.de
Wed Nov 30 13:53:02 EST 2005


Martijn Jacobs wrote at 2005-11-29 22:09 +0100:
> ...
>That will be true, but I was wondering where to draw the line,  for 
>example with perfomance issues. All the objects will be in a ZCatalog, 
>to allow searching for example. But one 'ObjectManager' step less in the 
>choice what to do with the products results in much less objects in the 
>catalog.

This must be a funny classification scheme...

But anyway: I have a completely different strategy for you:
lets see whether you will like it.

You do not materialize the classification scheme at all but you
have only your leaves (let's call them "object"s).

Each object has its classification as an attribute, say "category".
A "category" thus has the form "topic/subtopic/subsubtopc/...".

You index the "category" with a PathIndex (I would recommend
my "Managable PathIndex") and use canned searches (so called "topic"s)
the recreate the classification structure via searches (if needed).


If you do the last step (use "topic"s for the complete recreation of the
classification structure), then the number of objects will
not decrease (what formerly was a classification folder is now
a "topic"). But the new structure is much more flexible.
You can now assign different categories (say along different
dimensions) to your objects and will get different hierarchical (topical)
views on your object set.


>The estimation about the amount of objects, with only the leave 
>nodes as 'SimpleItem' objects will be 30.000. I never had so many 
>objects in a ZODB, that's why I'm asking this, but as your answer 
>suggests it's still the preferred way.

30.000 is not yet very impressing.

And, how large will be your classification scheme?
Usually, such a scheme is *much* smaller than the classified items
(if the lowest classification level had one (or very few) element,
if would be superfluous). Adding it would give a few more thousand
objects in addition -- you would get 31.000 (or maybe 35.000)
instead of 30.000. Do not be worried about this...


You should take care to use the correct folder implementation, however.
As soon as a folder is likely to have more than a few dozen of objects,
you should use a "BTreeFolder2" rather than a normal folder.
The total number of ZODB objects will go up by this choice
(but you already learned that you need not to worry about this)
but access is much more efficient (if the folder contains large numbers
of children).

-- 
Dieter


More information about the Zope-Dev mailing list