Я столкнулся с подобной проблемой с одним из моих проектов. У нас была огромная иерархия, которая будет расти вечно.
Мне нужно было быстро пройти через него и затем найти нужную группу после некоторых сложных проверок.
Вместо того, чтобы идти к SQL Server и ломать голову, как я могу сделать это там эффективно, когда я знал, что рекурсивные запросы - единственное жизнеспособное решение. Но действительно ли вы знаете, возможна ли вообще какая-либо оптимизация в Рекурсивных запросах. Есть ли какая-либо гарантия того, что ваша иерархия не увеличится в будущем, и в один прекрасный день вы обнаружите, что ваши рекурсивные запросы слишком медленны для использования в работе?
Итак, я решил дать Neo4J шанс. Это графическая база данных со многими полезными встроенными алгоритмами, удивительно быстрым обходом с достойной документацией и примерами.
Сохраните иерархию в Neo4J и получите доступ к иерархии с помощью Thrift Service (или чего-то еще).
Да, вам придется написать код, который будет интегрировать ваши запросы SQL с Neo4J, но у вас будет масштабируемое и более перспективное решение.
Надеюсь, вы найдете это полезным.