我正在寻找一个Django树库并尽力避免嵌套集(它们是维护的噩梦)。
邻接列表模型的缺点一直是无法获取后代而不诉诸多个查询。 Postgres中的WITH子句似乎是解决这个问题的可靠方法。
有没有人见过有关WITH与嵌套的任何效果报告?我假设嵌套集仍然会更快,但只要它们处于相同的复杂性类别,我就可以吞下2倍的性能差异。
Django-Treebeard让我感兴趣。有没有人知道他们在Postgres下运行时是否实现了WITH子句?
根据WITH子句,有没有人在这里切换过嵌套集?
答案 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执行的操作。