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

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

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

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

Кто-нибудь здесь переключился с вложенных наборов в свете предложения WITH?

4
Koobz 31 Янв 2010 в 13:53
Treebeard похож на MPTT, за исключением того, что он предлагает несколько реализаций дерева (включая базовую модель списка смежности). Проблема, которую я пытаюсь решить, заключается в реализации эффективной древовидной структуры без вложенных наборов. «WITH» — это относительно новая технология для РСУБД с открытым исходным кодом, и у нее есть потенциал, чтобы сделать это возможным. Интересно, кто-нибудь использовал это на практике?
 – 
Koobz
1 Фев 2010 в 02:46

2 ответа

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

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

3
Bryce 6 Мар 2012 в 00:09

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

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

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

0
Koobz 15 Июн 2010 в 07:58