Дерево списка смежностей, использующее рекурсивный оператор WITH (Postgres 8.4) вместо вложенного набора - PullRequest
4 голосов
/ 31 января 2010

Я ищу библиотеку деревьев Django и делаю все возможное, чтобы избежать вложенных наборов (это кошмар для обслуживания).

Минусами модели списка смежности всегда была невозможность извлечения потомков без обращения к нескольким запросам. Предложение WITH в Postgres кажется солидным решением этой проблемы.

Кто-нибудь видел какие-либо отчеты о производительности, касающиеся WITH и Nested Set? Я предполагаю, что Вложенный набор будет все еще быстрее, но пока они находятся в одном классе сложности, я мог бы проглотить 2-кратное несоответствие производительности.

Джанго-Древобород меня интересует. Кто-нибудь знает, реализовали ли они предложение WITH при запуске под Postgres?

Кто-нибудь здесь сделал переход от Nested Sets в свете предложения WITH?

Ответы [ 2 ]

3 голосов
/ 06 марта 2012

Вот еще одна ссылка, сравнивающая производительность (но без ссылки на django): http://explainextended.com/2009/09/24/adjacency-list-vs-nested-sets-postgresql/

Список смежности и вложенные множества: PostgreSQL (Quassnoi) Учитывая сказанное выше и учитывая, что вложенные множества Модель гораздо сложнее в управлении, мы можем заключить, что список смежности Модель должна использоваться для управления иерархическими данными в PostgreSQL 8.4.

1 голос
/ 15 июня 2010

Некоторые мысли о возможностях этого подхода здесь:

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

Вкратце: Дэвид Крамер (django-debug-toolbar) действительно любит рекурсивные запросы и то, как они выполнялись для Disqus.

...