АВТОМАТИЧЕСКАЯ ПРЕТРАНСЛЯЦИЯ СЛОЖНЫХ SQL-ЗАПРОСОВ
К РЕГУЛЯРНОМУ ПЛАНУ В CLUSTERIX-ПОДОБНЫХ СУБД

И.А. Казанцев, Р.К. Классен (КНИТУ-КАИ)

Вводятся понятия «сложного» и «простого» SQL-запроса по критерию сложности выполнения их претрансляции к регулярному плану. Выделяются «сложные» и «простые» запросы в составе ограниченного теста TPC-H (без операций записи). Рассматривается полный цикл претрансляции «простых» SQL-запросов. Предлагаются методы разбора и претрансляции «сложных» SQLзапросов. Представляются результаты экспериментов по выполнению «сложных» и «простых» запросов ограниченного теста TPC-H в СУБД Clusterix-N при их автоматической претрансляции. На обсуждение выносится сравнение автоматической претрансляции с ручной по итогам выполненных экспериментов и возможные способы улучшения автоматической перетрансляции.

В общем случае сложный запрос представляется набором простых запросов и способов их соединения. Сложность разбора заключается в том, чтобы определить условия соединения запросов и подзапросов. Для того, чтобы определить условие соединения необходимо определить структуру, которая содержит подзапрос (сравнение, FROM, HAVING). В дереве данная структура всегда находится выше подзапроса, но не всегда на одном расстоянии, поэтому поиск структуры идёт до первого разветвления. После чего данная структура и весь подзапрос исключаются из обхода основного дерева, а по исключенному дереву начинается новый обход.

На текущем этапе работы удалось разработать претранслятор, способный обрабатывать в автоматическом режиме простые SQL-запросы. Также возможна обработка некоторых сложных SQL-запросов. Многие SQL-операции требуют реализации в претрансляторе. Помочь в этом может глубокое изучение стандартов SQL.

Для справки:
Развитие информационных технологий требует обработки все большего объема информации. Направление «BigData» актуально как никогда. Создано великое множество инструментов и СУБД для работы с большими данными. Примерами СУБД могут служить: MS SQL Server, Oracle Database, SciDB, VoltDB, PostgreSQL XL, Clusterix и т.д. Большинство систем BigData – это закрытые коммерческие продукты с очень высокой стоимостью. Открытые системы существенно уступают коммерческим по надежности и, в гораздо меньшей мере, по производительности. Большинство систем класса BigData требуют наличия серьезных вычислительных мощностей для обеспечения приемлемой производительности. Идея создания отечественной СУБД, способной работать на сравнительно недорогих вычислительных кластерах, эффективно использовать их ресурсы и обрабатывать большие массивы данных, вылилась в создание параллельной СУБД консервативного типа Clusterix-N.

ПРЕЗЕНТАЦИЯ ДОКЛАДА

ВИДЕО ДОКЛАДА: