I agree with many of the comments put forth so far, but
I have a question: In what order did you learn these lessons (no pun intended).
It sounded like you learned that order hurts after you had already flattened the
structure. So I wonder if the question of processing overhead associated with
hierarchal structure was actually an artifact of order not being important? It
seems that another lesson that might be learned is that moving nodes around in a
hierarchal structure is not so easy in XSLT-- of course DOM (where size allows)
is a much better option for that kind of processing.
When Thomas mentioned dependency I started thinking
about the picker's dependence on the parent tract (in the original model). The
amount of grapes that the picker could pick clearly is dependent upon the amount
of ripe grapes in the parent tract and number of active sibling
pickers. Here the hierarchy does a good job of grouping where that is maybe more
difficult in the flat version.
I was also making guesses about "moving" a picker from
one tract to another. I wondered if the picker was known a priori (i.e., looking
for a job) or if the tract simply wanted any available picker. If the tract
wanted a specific picker (the tract owner's son for instance) then in the real
world someone (the application) would have to go and check each tract until they
found him-- this again seems like the hierarchal model more adequately
represents the real world-- while we can all recognize that simply looping
through all of the pickers would be quicker.
This brings me to my next question(s): were the
"problems" speed oriented or only difficulty oriented? Other than number of
lines, what specifically made it difficult? What did all of those lines contain?
Finally, and as an aside, why didn't you choose to use
RDF in the flat model. It seems supremely suited to it. Additionally you could
add in various OWL relationships to create new kinds of pickers that can only
pick certain kinds of grapes, etc. This is a Semantic Web example waiting to
happen. In fact the OWL examples already surround this area
It is a very interesting example :