Understood Ken.  Good point and I know you're right about performance 
trade-offs.  I've not given up just yet but I'll take your words to heart.

On 3/22/11 9:29 PM, Ken Anderson wrote:
Jon,

My point was that SQL optimizations are much easier to implement (I use Oracle 
too) without an inheritance hierarchy, since EOF is less involved in building 
queries to handle the structure.  I actually have a situation today where I 
regret using 2 levels of inheritance because I cannot tune the queries as 
needed, causing a significant degradation of performance.  This is especially 
true with 2 level hierarchies and batch faulting.  EOF is just unable to 
resolve the super-entities correctly.  When I tested changing it to a one level 
hierarchy, performance increased a thousand fold.

In any case, best of luck!

Ken

On Mar 22, 2011, at 11:04 PM, Jon Nolan wrote:

Hi Ken,

The inheritance is absolutely necessary and works a treat.  My example EO tree 
is just that, an example for the sake of simplicity.  The real model supports 
social network content types and is fairly esoteric (the example is easy to 
understand and is a valid representation).  While quite complicated our model 
supports our needs almost perfectly.  The differences in behavior between types 
can be substantial.

The behavior of the objects and the structure of the model isn't the problem.  
The problem is very much localized to data retrieval speed and is more an 
Oracle issue than a Web Objects one.  I'm trying to optimize it in various ways 
- some on the WO side and others on the DB side.  I'm not considering throwing 
away the substantial benefits of our model design.

The specific behavior I'm looking for is influencing Oracle's optimizer to NOT 
do full table scans when retrieving these objects.  Getting rid of big OR 
qualifiers, controlling the order of restricting v. non-restricting qualifiers, 
utilizing hints, using views, etc.  All in play.

Thanks,
Jon



On 3/22/11 8:18 PM, Ken Anderson wrote:
Not to put a crimp in your model, but is inheritance really necessary here?  
What actual behavior is different?

One level inheritance is hard to optimize - two levels, doubly so (at least!).  
If you could share more about what kind of behavior you're looking for from 
these objects it might be helpful to everyone on the list.

Ken

On Mar 22, 2011, at 7:31 PM, Jon Nolan wrote:

I have a fairly involved EO inheritance tree that works beautifully in every 
way but one.  Here's a quick example illustrating the structure I'm using:

Human
    North American
        American
        Canadian
        Mexican
    European
        German
        Italian
        Spaniard
    Asian
        Korean
        Laotian

etc.  You get the idea.

So if I utilize European.fetchEuropeans(...) a qualifier is generated along the 
lines of HUMAN_TYPE = German or HUMAN_TYPE = Italian or HUMAN_TYPE = Spaniard.  
This would be fine except for the Oracle optimizer deciding not to use the 
HUMAN_TYPE_IDX index.  I've tried using hints but (a) it's difficult to get 
right for a query generated by a ERXBatchingDisplayGroup and (b) the JDBC 
adaptor disconnects me when I try.

There is another qualifier clause which happens to make it so that, in the 
European example, all the returned humans will indeed be German, Italian or 
Spaniard.  Is there any way to simply discard the OR'd HUMAN_TYPE qualifier?  
Any other suggestions?  Do I have something wrong in my model in the first 
place?

Thanks,
Jon
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/webobjects-dev/kenlists%40anderhome.com

This email sent tokenli...@anderhome.com






_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to