Пресс-центр | Пресс-релизы
Солютекс, 12.11 '2007
Новые возможности модулей
Компания «Солютекс» объявляет о новых возможностях структуры модулей XS2 Framework, которые теперь могут работать как в «старом», традиционном, режиме Nested Sets (вложенные множества) так и в новом Id/Parent (списки смежности), позволяющем на порядки увеличить скорость вставки в случаях, когда количество объектов в деревьях превышает 200-250 тысяч единиц.
«Мы ценим доверие наших клиентов и разработчиков, поэтому уделяем много внимания обратной совместимости XS2 API. Это нововведение, разумеется, как и все предыдущие обновления ядра XS2 Framework, пройдет незаметно для функциональности уже существующих проектов, хотя, безусловно, будет очень полезным при проектировке новых систем, предполагающих хранение большого количества объектов в деревьях модулей», говорит Виктор Ясиновский, IT-директор компании «Солютекс», — «В XS2 исторически существовал только один — NS-подход к структурам деревьев модулей. Теперь разработчик может сам в любой момент времени выбрать, какой из двух наиболее популярных механизмов подходит для максимально эффективного решения поставленной перед ним задачи, разумеется, при этом все функции XS2 API работают одинаково».
При использовании в деревьях структуры Nested Sets (вложенные множества) сильно упрощается выборка определенных элементов дерева, таких как родительская ветка, подчиненные узлы, ветка, в которой участвует узел и т.д., но при этом операции изменения дерева (вставка и перемещение) весьма трудоемкие. Напротив, для деревьев со списками смежности (Id/Parent) операции выборки веток и колена трудоемки (рекурсивные запросы), а вставки и операции над деревом весьма просты.
| Тип операции над деревом |
Nested Sets |
Id/Parent |
| Прямая выборка детей |
Да |
Да |
| Прямая выборка поддерева (всех потомков) |
Да |
Нет, рекурсия |
| Прямая выборка пути от узла до корня (всех предков) |
Да |
Нет, рекурсия |
| Быстрое определение количества всех потомков узла |
Да |
Нет, рекурсия |
| Быстрое определение уровня |
Да |
Нет, рекурсия |
| Порядок следования узлов при сортировке |
Да |
Нет |
| Быстрая вставка новых узлов |
Нет |
Да |
| Быстрое перемещение поддерева |
Нет |
Да |
| Быстрое удаление поддерева |
Да |
Да, каскадное |
| Дополнительная поддержка целостности |
Нужна |
Не нужна |
«По сути дела ничего не меняется, просто теперь у разработчика появилась возможность в любой момент менять тип деревьев модуля. То есть, если модуль предполагает хранение небольших объемов информации и при этом весьма важна скорость выборки «колен» (подчиненных узлов), то имеет смысл традиционный для XS2 подход — структура вложенных множеств. Если же для модуля важна скорость вставки объектов, то имеет смысл использовать тип дерева Id/Parent (списки смежностей). Это может быть очень полезным и эффективным решением, например, в системах документооборота или больших www-конференциях», говорит Арсений Лебедев, руководитель отдела R&D компании «Солютекс».
|