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 <andru..bjectstyle.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
This archive was generated by hypermail 2.0.0 : Thu Jun 03 2010 - 02:38:57 UTC