邻接列表树使用递归WITH(Postgres 8.4)而不是嵌套集

时间:2010-01-31 10:53:47

标签: django adjacency-list django-treebeard

我正在寻找一个Django树库并尽力避免嵌套集(它们是维护的噩梦)。

邻接列表模型的缺点一直是无法获取后代而不诉诸多个查询。 Postgres中的WITH子句似乎是解决这个问题的可靠方法。

有没有人见过有关WITH与嵌套的任何效果报告?我假设嵌套集仍然会更快,但只要它们处于相同的复杂性类别,我就可以吞下2倍的性能差异。

Django-Treebeard让我感兴趣。有没有人知道他们在Postgres下运行时是否实现了WITH子句?

根据WITH子句,有没有人在这里切换过嵌套集?

2 个答案:

答案 0 :(得分:3)

这是另一个比较性能的参考(但没有参考django): http://explainextended.com/2009/09/24/adjacency-list-vs-nested-sets-postgresql/

  

邻接列表与嵌套集:PostgreSQL (Quassnoi)   鉴于上述说法并考虑到嵌套集   模型更难管理,我们可以得出邻接列表的结论   model应该用于管理PostgreSQL 8.4中的分层数据。

答案 1 :(得分:1)

关于这种方法的可能性的一些想法:

http://www.davidcramer.net/code/django/6939/scaling-threaded-comments-on-django-at-disqus.html

简而言之:David Cramer(django-debug-toolbar)非常喜欢递归查询以及他们为Disqus执行的操作。