Saltar al contenido

Modelos de datos jerárquicos: lista de adyacencia frente a conjuntos anidados

Solución:

Nested sets son mejores para el rendimiento, si no necesita actualizaciones frecuentes o un orden jerárquico.

Si necesita actualizaciones de árbol o un orden jerárquico, es mejor usar parent-child modelo de datos.

Se construye fácilmente en Oracle y SQL Server 2005+, y no tan fácilmente (pero aún posible) en MySQL.

Yo usaría el algoritmo MPTT, Modified Preorder Tree Traversal, para este tipo de datos jerárquicos. Esto permite un gran rendimiento al atravesar el árbol y encontrar niños, si no le importa una pequeña penalización en los cambios en la estructura.

Afortunadamente, Django tiene una gran biblioteca disponible para esto, django-mptt. Lo he utilizado en varios proyectos con mucho éxito. También está django-treebeard, que ofrece varios algoritmos alternativos, pero no lo he usado (y de todos modos no parece tan popular como mptt).

Según estos artículos:

http://explainextended.com/2009/09/24/adjacency-list-vs-nested-sets-postgresql/ http://explainextended.com/2009/09/29/adjacency-list-vs-nested-sets- mysql /

“MySQL es el único sistema de los cuatro grandes (MySQL, Oracle, SQL Server, PostgreSQL) para el que el modelo de conjuntos anidados muestra un rendimiento decente y se puede considerar para almacenar datos jerárquicos”.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *