2004 г
XML-СУБД Sedna: технические особенности и варианты использования
Максим Гринев, Сергей Кузнецов,
Андрей Фомичев
Статья была опубликована в журнале “ Открытые системы”
содержание
Технические особенности
В настоящее время оптимизация запросов в СУБД Sedna основывается на методах
перезаписи XQuery -запросов под управлением набора правил. В будущих версиях
системы будет использоваться и оценочная оптимизация. В текущем оптимизаторе
запросов используются следующие методы.
- Метод открытой подстановки тел функций [7] позволяет заменить
вызов определенной пользователем функции на ее тело. Открытая подстановка устраняет
накладные расходы, порождаемые при вызове функции, и дает возможность совместной
статической оптимизации тела функции совместно с общим кодом запроса. Реализованный
алгоритм открытой подстановки корректно обрабатывает вызовы не рекурсивных
и структурно рекурсивных функций и разумным образом завершается при обработке
вызовов произвольных рекурсивных функций.
- Метод “выдавливания” ( push down )
предикатов ниже конструкторов элементов XML [8] позволяет изменить порядок
операций таким образом, чтобы предикаты применялись до выполнения конструкторов
XML -элементов. Это позволяет уменьшить размер промежуточных результатов, к
которым применяются конструкторы.
- При применении метода “проекции преобразования” ( projection of transformation )
[8] выражение XPath статически применяется к конструкторам элементов. Это позволяет
избежать избыточных вычислений в конструкторах XML -элементов на стадии выполнения
запроса.
- Метод упрощения запроса на основе использования схемы оказывается
полезным в тех случаях, когда схема XML -документа доступна оптимизатору, а
запрос сформулирован пользователем, не имеющим отчетливого представления об
этой схеме. Получение более точной формулировки запроса позволяет избежать
избыточного сканирования данных, свойственного запросам, при формулировке которых
не учитывалась схема. Этот оптимизационный метод базируется на статическом
выводе типов данных в языке XQuery .
- Метод повышения уровня декларативности формулировки запроса дает
возможность расширить пространство поиска оптимизатора при выборе оптимального
плана выполнения запроса. Метод является адаптацией аналогичного SQL -ориентированного
метода [9], позволяющего преобразовывать SQL -запросы со вложенными подзапросами
в эквивалентные запросы с соединениями.
- Нормализация предикатов соединения состоит в их приведении в
конъюнктивную нормальную форму, чтобы можно было использовать различные алгоритмы
выполнения операции соединения, а не только алгоритм вложенных циклов. Для
достижения этой цели в оптимизаторе СУБД Sedna из предикатов соединения извлекаются
подвыражения, подобные операторам XPath , и помещаются вне операций соединения,
где они вычисляются только один раз.
- Наконец, метод распознавания инвариантных подвыражений в теле итерационных операций
и вынесения их за пределы этих операций позволяет уменьшить вычислительную сложность
запроса.
Для обеспечения сериализуемости транзакций применяется вариант известного
строгого двухфазного протокола синхронизационных блокировок (2 PL ). В текущей
версии системы единицей блокировки является XML -документ целиком. Однако во
многих случаях блокировка всего XML -документа не требуется и приводит к уменьшению
уровня параллельности. Поэтому разрабатывается новый метод “гранулированных”
блокировок, позволяющий поддерживать высокий уровень параллельности [10].
Основная идея метода состоит в использовании нумерующей схемы для блокировки
узлов и поддеревьев XML -документа. Блокировка целого поддерева реализуется
посредством блокировки интервала меток нумерующей схемы, включающего метки
всех узлов этого поддерева. Этот интервал может быть вычислен на основе метки
корневого узла поддерева. При этом подходе для блокировки поддерева не требуется
блокировка узлов-предков корня поддерева в “целевом” ( intention )
режиме.
содержание назад вперед
|
|