[development] Lineage module --- nested trees

Earl Miles merlin at logrus.com
Fri Dec 9 16:22:18 UTC 2005

Adrian Rossouw wrote:
> On 09 Dec 2005, at 3:22 AM, Earl Miles wrote:
>> I've gotten, surprisingly, no comments on this at all. Has anyone  
>> looked at this? I need some feedback before I can move forward. I  at 
>> least need to know I'm on the right track.
> My personal opinion is that a generic tree algorithm is less useful  
> than the generic relationship API that has been proposed and is
> being worked on. There are four 'competing' implementations of this  
> API, of which one (ally's hier module) is actually implemented
> as a nested tree in the database (iirc). Your implementation could  
> almost be considered the 5th, albeit lacking in flexibility.
> Trees / Hierarchies are just one type of relationship, and I also  think 
> that caching / persisting trees is probably going to be more  effective
> for a lot of cases, but it will fall apart with _lots_ of data. I am  
> not casting judgement on your code / plans, but I like how Vlado is
> approaching the problem, and thus my support goes to him.

I don't know that the two ideas are really the same.

Everyone I've spoken with about the relationships are very interested in 
creating user-defined relationships and are focusing on a very generic setup.

I think that's great, and I really look forward to seeing what they produce.

That said, all of those implementations seem to be relatively far out. And I 
don't know that they'll actually address the problem this is solving. In fact, 
as a generic API, all of those relationship modules can choose, if they like, to 
utilize this API to improve the sorting results of their relationships, if they 
believe they will gain a benefit from it.

You might say that my implementation is a relationship module that's lacking 
flexibility, but I disagree. It isn't defining, controlling, or even storing 
relationships. That's some other piece of code's job. This one is simply a piece 
of code whose sole purpose is to enhance the performance of existing code.

More information about the development mailing list