Gerenciando hierarquias no SQL: conjuntos MPTT / aninhados vs listas de adjacências vs caminhos de armazenamento
Há um tempo que estou lutando com a melhor forma de lidar com hierarquias no SQL. Frustrado pelas limitações das listas de adjacência e pela complexidade dos conjuntos MPTT / aninhados, comecei a pensar em simplesmente armazenar caminhos-chave, como um simplesnode_key/node_key/...
corda. Decidi compilar os prós e contras das três técnicas:
A técnica do caminho armazenado usa as mesmas chamadas ou menos que as outras técnicas em todos os casos de uso, exceto um. Por essa análise, o armazenamento de caminhos é um vencedor claro. Sem mencionar, é muito mais simples de implementar, legível por humanos, etc.
Então a pergunta é: os caminhos armazenados não devem ser considerados uma técnica mais forte que o MPTT? Por que os caminhos armazenados não são uma técnica mais comumente usada e por que você não os usaria no MPTT em uma determinada instância?
Além disso, se você acha que essa análise está incompleta, entre em contat
ATUALIZARAqui estão pelo menos duas coisas que o MPTT pode fazer imediatamente que uma solução de caminho armazenado não fará:
ermite o cálculo da contagem de subnós para cada nó sem nenhuma consulta adicional (mencionada acima Impõe um pedido em nós em um determinado nível. As outras soluções são desordenadas.