2010-01-31 1 views
4

Django 트리 라이브러리를 찾고 중첩 된 집합을 피하기 위해 최선을 다하고 있습니다 (유지 관리하는 것이 악몽입니다).인접 목록 트리 중첩 된 집합 대신 재귀 WITH (Postgres 8.4) 사용

인접 목록 모델의 단점은 항상 여러 쿼리를 사용하지 않고 하위 항목을 가져올 수 없다는 것입니다. Postgres의 WITH 절은이 문제에 대한 견고한 해결책 인 것처럼 보입니다.

WITH 대 Nested Set에 관한 실적 보고서를 본 사람이 있습니까? 중첩 된 집합이 여전히 더 빠를 것이라고 가정하지만 동일한 복잡성 클래스에있는 한 2 배의 성능 불일치를 삼킬 수 있습니다.

장고 나무에 관심이 있습니다. Postgres에서 실행될 때 WITH 절을 구현했는지 알 수 있습니까?

WITH 절에 비추어 중첩 된 집합에서 스위치를 만들었습니까? 여기에이 접근법의 가능성에 대한

+0

django-mptt (http://code.google.com/p/django-mptt/)는 수정 된 선주문 트리 순회의 장고 구현입니다. 반면에, 어떤 문제를 해결하지 않고서는 알기가 어렵습니다. 슬프게도, 나는 django-treebeard가 어떤 일을하는지 전혀 모릅니다. 그래서 나는 당신의 질문에 더 도움이 될 수 없습니다. –

+0

Treebeard는 다중 트리 구현 (기본 인접 목록 모델 포함)을 제공한다는 점을 제외하면 MPTT와 유사합니다. 내가 해결하려고하는 문제는 중첩 된 집합을 피하면서 효율적인 트리 구조를 구현하는 것입니다. "WITH"는 오픈 소스 RDBMS에 관한 한 비교적 새로운 기술이며이를 가능하게 할 잠재력이 있습니다. 나는 누군가가 그것을 실제로 사용했는지 궁금해. – Koobz

답변

3

여기에 성능을 비교하는 또 다른 기준이다 (그러나 관계없이 장고) : 중첩 된 세트 대 http://explainextended.com/2009/09/24/adjacency-list-vs-nested-sets-postgresql/

인접리스트 : PostgreSQL의 (Quassnoi) 는 위에서 말했다와 고려 감안할 그 중첩 된 집합 모델을 관리하는 것이 훨씬 더 어렵다면 PostgreSQL 8.4에서 인접성 목록 모델을 사용하여 계층 적 데이터를 관리해야한다고 결론 지을 수 있습니다.