Войти через соцсеть:
Войти через email:
Рассмотрим задачу получения иерархических данных из реляционной СУБД со следующими вводными:
1. Данные представляют собой дерево (связный граф без циклов)
2. Необходимо для любого узла уметь получать поддерево заданной высоты
3. Необходимо для любого узла уметь получать путь до корня дерева
Рассмотрим отдельные частные случаи, возникшие на практике:
1. Разнотипные элементы на одном уровне дерева
2. Однотипные элементы на разных уровнях дерева
3. Рекурсивные деревья переменной высоты (пример – файловая система, где вложенность файлов внутрь директорий может быть произвольной)
Обсудим решение с использованием идей из GraphQL, которое позволяет построить общий механизм получения произвольным образом организованного дерева с разумно малым* (не всегда минимальным) количеством запросов в БД.