ну в итоге thread-am `отдается PriorityBlockingQueque. объекты в ней, правда, могут быть композитами. т.е. если развернуть, то таки дерево. priority помогает выполнение/ресурсы сбалансировать - в зависимости от точки входа в граф, даже для одного стейта графа планы разные собираются, не только по балансу, но и по объёму работ/данных/требуемых ресурсов (собс-но из за этой фичи и все затевалось).ALV00 wrote: ↑07 Mar 2018 00:37Интересно, как этот план запоминается? Тоже дерево?Ann4Ann wrote: ↑01 Mar 2018 15:02 я сейчас очень похожую задачу пишу, только у меня не дерево, а граф, так что стейт сложнее. вначале один-в-один как у автора написала, но очень уж оно не сбалансровано все. в итоге по времени и по перформансу мне легче вышло вначале сделать легкий траверс графа (в лоб) собирая инфу для heavy lifting в какой-то мнее.. execution plan.
получился приятный сайд-эффект : сейчас я уже этот план в базе сохранять могу (одна таблица), выяснилось, что очень удобно народу взять конкретный стейт. при этом новый траверс на живом графе уже может выдать другой план для той же точки входа.