Koobz
Koobz

Reputation: 6938

Adjacency List Tree Using Recursive WITH (Postgres 8.4) instead of Nested Set

I'm looking for a Django tree library and doing my best to avoid Nested Sets (they're a nightmare to maintain).

The cons of the adjacency list model have always been an inability to fetch descendants without resorting to multiple queries. The WITH clause in Postgres seems like a solid solution to this problem.

Has anyone seen any performance reports regarding WITH vs. Nested Set? I assume the Nested set will still be faster but as long as they're in the same complexity class, I could swallow a 2x performance discrepancy.

Django-Treebeard interests me. Does anyone know if they've implemented the WITH clause when running under Postgres?

Has anyone here made the switch away from Nested Sets in light of the WITH clause?

Upvotes: 5

Views: 2644

Answers (2)

Koobz
Koobz

Reputation: 6938

Some thoughts regarding the possibilities of this approach here:

https://cra.mr/2010/05/30/scaling-threaded-comments-on-django-at-disqus/

In short: David Cramer (django-debug-toolbar) really likes recursive queries and how they've performed for Disqus.

Upvotes: 1

Bryce
Bryce

Reputation: 8712

Here's another reference comparing the performance (but without reference to django): http://explainextended.com/2009/09/24/adjacency-list-vs-nested-sets-postgresql/

Adjacency list vs. nested sets: PostgreSQL (Quassnoi) Given the said above and taking into account that the nested sets model is much harder to manage, we can conclude that adjacency list model should be used to manage hierarchical data in PostgreSQL 8.4.

Upvotes: 4

Related Questions