@Leoniq

Как построить дерево на php?

В Symfony можно создать дерево разными стратегиями:
  1. nested-set
  2. closure-table
  3. materialized-path

Какой из них лучше всего использовать в каких случаях?
Буду благодарен за пояснение!
  • Вопрос задан
  • 117 просмотров
Решения вопроса 1
Aco
@Aco
Full Stack Developer
Всё по случаю, но чаще всего рано или поздно переходят nested-set или на её вариации.

Если подробнее:
nested-set много плюсов и немного минусов
Плюсы:
- но быстрое и экономичное "линейное" чтение.
- элементы заранее отсортированы в дереве
- всегда можно получить путь вложенности для любого элемента одним простым и быстрым запросом
- всегда есть количество (item.right - item.left) элементов в ветке у каждого узла

Минусы:
- запрос на изменение довольно сложный и может задевать все элементы дерева
- менять дерево должен только один запрос в один момент времени иначе всё развалится
- не простой алгоритм для понимания и программирования

closure-table стандартный parent-child дерево:
Плюсы:
- быстрая вставка
- простой алгоритм для понимания и программирования

Минусы:
- не собрать по иерархии "вверх" весь путь до объекта
- сортировку надо делать
- рекурсия при сборке

Увы про Materialized Path мало что могу сказать - мало взаимодействовал, мало экспертизы
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@necrodeflorator
Зависит от того, какую задачу решаете
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
ЭТП «ТОРГИ 223» Нижний Новгород
от 50 000 ₽
Сбер Москва
До 240 000 ₽
RecruitIT Москва
от 120 000 до 150 000 ₽
20 окт. 2020, в 11:53
100000 руб./за проект
20 окт. 2020, в 11:52
2000 руб./за проект
20 окт. 2020, в 11:44
100000 руб./за проект