[Nitro] OG vs Active Record

Jonathan Buch john at oxyliquit.de
Fri Aug 24 14:00:39 EDT 2007


Hi,

> I can appreciate the convinience of using adjacencies.   But
> there are as you suggest other criteria.

I never said I'd be using adjacency lists.  ;)

Right now I'm more on the track on materialized path, which
(with help from postgres) has really good performance for all
operations I need and at the same time is conceptually easy.

> Where I work there's a tree of about 38,000 nodes changing a
> few times a day.  The amount of hand-editing that goes on is
> near nil, though the simplicity of adjacencies has been useful
> in debugging.

Yeah, debugging, good example.  Although an extensive test suite
covering all that might be enough of a safety net for relations
and can provide good enough information when stuff goes wrong...

> The simplicity of adjacencies is a much larger factor if your
> tree is small and there are good reasons to take the short-cut
> of manual edits or manual generation.
>The broadest solution would be maintaining the adjacency list
> *alongside* the nested set.   Simply add a parent_id field to
> each node.  You can hand-insert a node, and run a script to
> have the system place it in the nested set.

I think the NestedSets implementation within Og has the parent
saved too.  That could be a starting place for someone who wants
to investigate on that further.

> Alternatively, you can have a utility script that regenerates
> the adjacency list after an insert.

I heard some professionals use that two layer approach.  They
insert/update only the adjacency list, which is quite quick for
some operations.  Then they just regenerate a nested-sets table
with the new information for fast selects.

Too bad I don't have too much experience yet with real life
high-performance stuff with huge databases.  Thanks Robert for
also replying here.  :)

Jo

-- 
Feel the love
http://pinkjuice.com/pics/ruby.png


More information about the Nitro-general mailing list