On 31/05/2010, at 11:11 PM, Andrus Adamchik wrote:

> Good thoughts. I really like the adaptive strategy idea, which can probably 
> be used for discriminator-free vertical mapping as well.

I'm not sure about this though: at what point would a user need to start adding 
the discriminator to their historic data? How would they go about it? It sounds 
like you'd need to stick with a strategy from the start.

(It certainly makes looking at data via sql easier with a discriminator too :)

> BTW, semantically "vertical inheritance with discriminator" is essentially 
> single-table inheritance with flattened attributes in subclasses. Which 
> Cayenne supports already, but without any special optimizations for wide|deep 
> hierarchies.

>> On Mon, May 31, 2010 at 8:29 AM, Andrus Adamchik <and...@objectstyle.org> 
>> wrote:
>>> Great. this is the kind of feedback I was looking for :-)
>>> 
>>> On May 31, 2010, at 8:17 AM, Mike Kienenberger wrote:
>>>> What you're suggesting could work, but we have at least one very deep
>>>> and wide inheritance tree in our current app, and the performance hit
>>>> of joining more than a hundred tables (so far) unnecessarily would
>>>> kill us.
>>> 
>>> So how would you do a fetch based on discriminator column approach? I can
>>> think of a 2 step process:
>>> 
>>> 1. Fetch ID's + discriminator columns from the root table.
>>> 2. Fully resolve objects, either doing joins only for the subset of tables
>>> that appeared in result in #1, or doing a separate query (without joins) for
>>> each subclass table matching the set of IDs.
>>> 
>>> Does that sound right?

Yep.

>>> Also I am sort of in favor of my original discriminator-free approach for
>>> smaller hierarchies, so wonder if a fetch strategy can be something
>>> specified for a given super-entity and/or query.

The discriminator-free approach sounds more complex to achieve for the initial 
cut though maybe?

with regards,
--

Lachlan Deck

Reply via email to