Некоторые подробности о сценарии:
1. У нас есть база данных MS SQL Server 2008, которая хранит записи «Ресурсы» в таблице.
2. Ресурсы могут иметь несколько дочерних ресурсов.
3. Дочерний ресурс может принадлежать нескольким родительским ресурсам.
4. Ресурсы связаны друг с другом через промежуточную таблицу, т. Е. Ресурс -> Ссылка -> Ресурс.
5. Может быть «n» уровней родительских и дочерних отношений, но в действительности это может быть не более 3 или 4 глубины.
6. Приложения должны представить представление данных, которое показывает все дерево для данного родителя и всех его дочерних элементов, где дочерние элементы могут быть на 1 потомка дальше от родительского, т.е. Resource (Parent) -> Link -> Resource - > Ссылка -> Ресурс (дочерний)
7. Конечным пользователям в идеале нужно видеть изменения в дереве в реальном времени на основе действий, которые они выполняют над отношениями с ресурсами. Под реальным временем я подразумеваю порядка нескольких секунд, поскольку изменение необходимо отразить в пользовательском интерфейсе.
Я провел некоторую исследовательскую работу с использованием серии представлений, но необходимость использования внешних объединений означает, что их представления не могут быть проиндексированы и, следовательно, могут плохо масштабироваться.
Следующее решение, которое я рассматриваю, - это создание одной или нескольких специальных таблиц, которые содержат плоское представление деревьев ресурсов. Однако вряд ли это поддержит требуемые нами обновления в режиме реального времени.
Кто-нибудь имел дело с подобным сценарием?