Статья опубликована в рамках: CXXIII Международной научно-практической конференции «Научное сообщество студентов XXI столетия. ТЕХНИЧЕСКИЕ НАУКИ» (Россия, г. Новосибирск, 09 марта 2023 г.)
Наука: Технические науки
Секция: Технологии
Скачать книгу(-и): Сборник статей конференции
дипломов
РАЗРАБОТКА ПРАВИЛ ГРАММАТИКИ ПОСТРОЕНИЯ AST(ABSTRACT SYNTAX TREE) ДЛЯ POSTGRES SQL/PL ЯЗЫКОВ И ПРИЛОЖЕНИЯ ГЕНЕРАЦИИ ЕДИНОЙ ХРАНИМОЙ ПРОЦЕДУРЫ ИЗ НАБОРА ВЫЗЫВАЕМЫХ ХП (ХРАНИМЫХ ПРОЦЕДУР) ДЛЯ РЕШЕНИЯ ЗАДАЧИ ОПТИМИЗАЦИИ РАБОТЫ БАЗЫ ДАННЫХ
DEVELOPMENT GRAMMAR RULES FOR BUILDING AST(ABSTRACT SYNTAX TREE) FOR POSTGRES SQL/PL LANGUAGES AND APPLICATION FOR GENERATION A SINGLE STORED PROCEDURE FROM A SET OF CALLED SP (STORED PROCEDURES) FOR SOLVING PERFORMANCE TASKS FOR DATABASE
Anar Shaimardanova
student, Department of Computer Science and Information Technologies, Saratov State University,
Russia, Saratov
Sergei Mironov
scientific advisor, candidate of Sciences in Physics and Mathematics, associate professor, Saratov State University,
Russia, Saratov
АННОТАЦИЯ
В работе рассматривается решение по разработке правил грамматики и разработка приложения для оптимизации работы базы данных.
ABSTRACT
In this work we consider a solution for developing grammar rules and developing an application for solving performance tasks for database.
Ключевые слова: PostgreSQL; хранимые процедуры; plpgsql; оптимизация.
Keywords: PostgreSQL; stored procedures; plpgsql; performance.
В современном мире быстрое взаимодействие с базами данных является действительно важным. В промышленных базах данных обычно хранится огромное число данных. Эффективное и быстрое взаимодействие с данными позволяет выпускать более качественные продукты, экономить ресурсы как технические, так и финансовые.
На сегодняшний день существует множество способов увеличения скорости работы как самих баз данных, так и запросов. Часто в базах данных используются специальные объекты, называемые хранимыми процедурами. С помощью них разработчики могут вынести определенный функционал, который будет скомпилирован один раз и будет храниться на сервере.
Разработчики, используя хранимые процедуры, обычно стремятся к тому, чтобы каждая функция выполняла строго свои задачи и включала в себя как можно меньше строк кода. Но так как одна небольшая функция может выполнить только небольшое количество задач, создаются множество маленьких функций, которые затем вызываются в основной хранимой процедуре. Обычно данная ситуация усугубляется вызовом хранимых процедур в цикле. В результате на систему управления базами данных обрушивается большое число вызовов хранимых процедур, что заставляет ее огромное число раз переключать контекст вызовов. Это неизбежно ведет к деградации производительности.
Опишем решение данной проблемы. Решение разрабатывается для языка plpgsql – процедурный язык для системы управления базами данных PostgreSQL. PostgreSQL – один из наиболее успешных Open Source продуктов. PostgreSQL может использоваться из многих языков программирования, в том числе из Java, C, C++, Python [1].
При помощи яызка plpgsql разрабатываются хранимые процедуры.
Решение проблемы состоит в следующем: необходимо проанализировать код основной хранимой процедуры, создать ее клон, в который будут помещены коды вызываемых ею подпроцедур.
Далее необходимо сделать следующее:
- выбрать инструмент лексического анализа;
- создать для него словарь ключевых слов (для PostgresSQL и PostgresPL языков);
- описать правила построения абстрактного синтаксического дерева;
- написать тесты хранимых процедур для проверки построения абстрактного синтаксического дерева.
После чего необходимо разработать приложение, которое для каждой хранимой процедуры построит абстрактное синтаксическое дерево через вызов созданного парсера plpgsql и, в случае, если вызов подпроцедур имеется, будет заменять вызовы подпроцедур на коды этих процедур.
Работа выполнялась на языке Java. Для парсинга хранимых процедур была использована библиотека ANTLRv4 для Java. ANTLRv4 — это генератор парсеров, который может быть использован для чтения, обработки, выполнения или определения структурированного текста или бинарных файлов [2].
Были созданы лексеры и парсеры, включающие правила, необходимые для парсинга хранимых процедур и создания абстрактного синтаксического дерева дерева хранимых процедур. Были написаны классы, фиксирующие нужную информацию во время парсинга хранимых процедур.
Планируется реализация функционала, который будет заменять код вызываемых подпроцедур в хранимой процедуре на код этих процедур.
Список литературы:
- Р. Стоунз, Н. Мэттью. PostgreSQL. Основы. Санкт-Петербург: Символ-Плюс, 2002. — 21 с.
- Parr, T. The Definitive ANTLR 4 Reference. Texas: The Pragmatic Bookshelf, 2012 – 11 с.
дипломов
Оставить комментарий