Введение - Система автоматизированного разделения кода прикладных программ

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

Хотя такие программы могут различаться по своей структуре, решаемым задачам, и визуальному представлению, все они сталкиваются с одинаковыми проблемами:

1. Высокая чувствительность ко времени выполнения.

В трехуровневой архитектуре, в рамках которой и будут проводиться исследования, запрос клиента проходит следующий цикл: отправка на сервер обработки клиентских запросов, преобразование в соответствующий запрос к базе данных, передача на сервер базы данных, обработка и получение результата, отправка результата на сервер приложений, обработка и преобразование результата в требуемый клиентом вид, отправка результата и отображение результата в клиентском приложении.

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

Клиенты, в свою, очередь, ожидают выполнения своих операций практически мгновенно, а в условиях конкуренции между схожими программными продуктами, скорость может стать ключевым фактором для выбора одной и отказа от других систем.

2. Изначальная неоптимальность кода и, как следствие, растрата ресурсов системы и снижение времени выполнения запросов.

Разработчики фокусируются в первую очередь на том языке, на котором программируется сервер приложений. Запросы к базе данных пишутся так, чтобы получить некоторую долю информации, и затем быстро (не в плане производительности, а в плане написания кода) обработать ее. Языки программирования имеют намного больше встроенных средств, чем, к примеру, SQL, и обработчики информации на них писать занимает значительно меньше времени.

Целью данного исследования является создание системы, которая будет уменьшать время выполнения клиентских запросов, за счет разделения исходного кода сервера приложений на 2 компоненты и переместить часть обработки данных ближе к месту их хранения.

Для достижения данной цели необходимо выполнить ряд задач:

    1. Создать систему анализа исходного кода программы. Исходя из набора файлов с кодом сервера приложений, должны выявляться подходящие для преобразования фрагменты кода - получающие информацию из БД, обрабатывающие ее и имеющие конечный результат. 2. Создать систему разделения, которая по выбранным методам, создаст классы и методы для удаленного вызова и отредактирует первоначальный код их вызова. 3. Создать окружение для исходных программ, которое будет обеспечивать синхронизацию передаваемых данных и передачу результата, а также будет собирать статистические данные о времени выполнения для последующего анализа результатов. 4. Создать или выбрать одну из существующих баз данных и программу на которой будет проводиться тестирование системы. 5. Провести тестирование: программы до применения системы и после ее применения.

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

В результате система пытается соединить достоинства двух - и трехуровневой архитектуры, приблизить данные к месту их обработки, распределить нагрузку между сервером БД и сервером приложений, сохранив при этом безопасность и надежность.

Несмотря на то, что используемые модели архитектуры, построение графа зависимостей, преобразование запросов в хранимые процедуры - применяются достаточно давно и хорошо известны, приложение этих знаний к программам работающим с БД является достаточно новым. На данную тематику вышло 2 публикации: первая - летом 2012 года в журнале, посвященном большим базам данных "The VLDB journal", и в начале 2013 года в MIT, обе написаны группой из студентов и профессоров MIT и университета Cornell [1,2]. Именно эти публикации и послужили основой для данной работы.

С учетом представленных в вышеуказанных работах результатов, данное направление оптимизации работы приложений вероятно будет активно развиваться, но на данный момент работы по данной тематике практически отсутствуют.

Похожие статьи




Введение - Система автоматизированного разделения кода прикладных программ

Предыдущая | Следующая