.5 Методы диагностики производительности запросов
уществуют различные способы проверки производительности работы запросов, к примеру, применение трассировочных файлов, средства Оrаclе DBMS_SQLТUNЕ (с рекомендациями по оптимизации запроса), AWR (automatic workload repository) и другие.
Среди всех инструментов диагностики производительности работы запросов наиболее простым и достаточно действенным является просмотр плана выполнения запросов через программы Toad, PL/SQL Developer и др., а также на основе служебных представлений, к примеру, таких как v$sql_plan, v$sql_plan_monitor и v$sql_bind_capture, показывающий значения переменных, которые используются в запросе.
Следует отметить, что, если через служебные представления v$sql_plan и v$sql_plan_monitor можно получить реальный план выполнения запроса, то через подстанoвку текста запроса в программы Toad, PL/SQL Developer и другие аналогичные программы будет получен план исполнения запроса, построенный оптимизатором.
Программные средства, которые позволяют получить планы исполнения запросов, можно разделить на две группы:
программные средства, которые позволяют получить план запроса, построенный оптимизатором;
программные средства, которые позволяют получить реальный план выполнения запроса;
К программным средствам, которые позволяют получить план исполнения запроса, построенный оптимизатором, относятся PL/SQL Developer, SQL Navigator, Toad и другие. Это достаточно важный момент, так как необходимо учитывать, что реальный план выполнения запроса может отличаться от плана, который показывают эти программы. Они выдают показатели ресурсоемкости запроса, среди которых наиболее важными являются:
соst - стоимость выполнения;
сardinality - кардинальность.
Чем больше значения этих показателей, тем менее эффективен запрос.
План выполнения запроса с параметрами cost и cardinality можно получить, выполнив после анализируемого запроса другой запрос, который формирует план исполнения:
Текст запроса;* FROM TABLE(dbms_xplan.display_cursor());
Реальный план исполнения запроса и указанные выше параметры для анализа запроса можно получить из динамических представлений: V$SQL_PLAN и V$SQL_PLAN_MONITOR.
Значение идентификатора sql_id можно использовать для получения реального плана исполнения запроса:
SELECT * from v$sql_plan where sql_id='SQL_ID';
SQL_ID может быть получен из нескольких представлений, например, из V$SQL:
SELECT sql_id from v$sql
WHERE sql_fulltext like '%уникальный строка из текста запроса%';
.10 Недостатки приведенных методов, PL/SQL Developer и другие аналогичные позволяют получить лишь план запроса, который строится оптимизатором, а не реальный план выполнения.
Использование служебных представлений требует высокой квалификации, но даже опытному разработчику сложно будет держать в голове запросы к служебным представлениям.
Большие запросы имеют объемный план выполнения и
при просмотре плана запроса через стандартную утилиту SQL Plus возникает
проблема - план имеет неудобный для чтения вид.
2. ПРОЕКТИРОВАНИЕ ПП
Стоит понимать, что главным этапом в работе над
ПП, будь то веб-сайт или приложение, является совсем не процесс написания
программного кода. Под словом главный подразумевается не время, которое уходит
на этап разработки, а имеется ввиду наиболее важный этап, который и определит
успешность дальнейшей работы над проектом.
.1 Постановка задачи
Основной сегмент пользователей программы - студенты, изучающие курс «Базы данных». Также ПП могут использовать разработчики информационных систем и администраторы баз данных.
В целом программный продукт для поддержки процесса выявления проблемных запросов должен удовлетворять следующему набору требований:
ПП должен как можно меньше загружать сам сервер;
ПП должно показывать реальный план исполнения запроса, если это возможно;
ПП должен быть кроссплатформенным;
время получения плана запроса не должно быть более 5 секунд;
план запроса должен представляться в удобном для пользователя виде, с выделением проблемных мест запроса;
представление информации должно быть наглядным;
необходима возможность работать с несколькими подключениями к БД.
. Исполняемый модуль
Содержит код, который будет запускаться при открытии файла. Так как одно из требований к ПП - это кроссплатформенность, то для того, чтобы реализовать его, необходимо либо писать код для каждой платформы, что является неоптимальным, либо писать код на языке программирования Java, но, как известно, принцип «write once, run anywhere» соблюдается не в полной мере, поэтому нельзя дать полные гарантии, что такая реализация программного средства будет корректно работать на разных платформах.
Возможно потребуется установка программы.
. Веб-приложение
Для работы требуется лишь браузер, но возможны проблемы с поддержкой старых браузеров.
На основании обзора каждого из подходов было
решено реализовывать программное средство как веб-приложение.
.3 Выбор средств разработки
Основными критериями при выборе инструментов разработки являлись:
Скорость разработки
Надежность
Производительность
Расширяемость
Простота в использовании
.3.1 Выбор веб-фреймворка
Чтобы избавиться от различных проблем реализации, можно изначально создавать приложение на жёстком каркасе, который позволит расширить функционал - подключить к себе дополнительные модули.
Такой каркас называют фреймворком. Фреймворк - это не простая программная библиотека. Если библиотека - это обычный набор вспомогательных функций, которые никак не повлияют на архитектуру программы, то фреймворк сам является архитектурой, он гарантирует определенную структуру приложений и их поведение по умолчанию.
Наиболее популярные веб-фреймворки:(Python);
Yii2 (PHP);on Rails.
На основе требований к инструментам разработки в качестве основного фреймворка для разработки веб-приложения был выбран Yii2. Это современный и очень функциональный фреймворк для разработки веб-приложений. Для Yii2 уже разработано много различных библиотек, расширений и виджетов как основными, так и сторонними разработчиками. Все это позволяет ускорить процесс разработки качественных приложений.
Основные особенности Yii2:
Модель MVC (Model, view, controller);
философия простого и элегантного кода;для реляционных и NoSQL БД;
Поддержка REST API;
Отличная расширяемость. Можно настроить или заменить абсолютно любую часть кода фреймворка. Используя архитектуру расширений легко использовать код сообщества или делиться кодом.
Одна из главных целей фреймворка Yii -
производительность.
.3.2 Выбор инструментов для front-end разработки
Выбранный набор инструментов для разработки front-end’a:
. Bootstrap.- это полезный набор инструментов для создания веб-приложений, который включает в себя HTML и CSS шаблоны оформления для типографики, кнопок, меток, форм и других различных компонентов веб-интерфейса, включая js-расширения.
Преимущества использования:
Экономия времени - используются готовые стили и шаблоны;
Высокая скорость разработки;
Гармоничный дизайн - все компоненты используют единый стиль;
Простота в использовании;
Совместимость с браузерами и устройствами;
Открытое программное обеспечение - бесплатная загрузка и открытый исходный код;.- это JavaScript-библиотека, которая основана на шаблоне проектирования Model-View-Presenter (MVP). Backbone.js придает структуру веб-приложениям с помощью моделей с биндигами по ключу, событиями пользователя, коллекций с большим набором методов с перечислимыми сущностями, представлений с обработкой событий..js
В состав этой библиотеки входят более 80 функций, упрощающих и ускоряющих разработку: функциональное связывание, шаблонизация, проверка на равенство и другое.
Библиотека JavaScript, упрощающая взаимодействие
JavaScript и HTML, также предоставляет удобный API для AJAX.препроцессор,
динамический язык стилей.
.3.3 Выбор СУБД приложения
Наиболее приспособленной СУБД для применения в веб-среде является MySQL, именно она будет использоваться для хранения пользовательской информации, также стоит учесть, что при работе не потребуется обработки большого объема информации.
Основные значимые преимущества MySQL:
бесплатная СУБД;
интерфейс с PHP;
занимает мало места;
надежность;
быстрая работа;
отличная поддержка со стороны
хостинг-провайдеров.
.3.4 Выбор сборки веб-сервера
В качестве веб-сервера был выбран Apache. Как известно, связка Apache, PHP и MySQL работает достаточно надежно и производительно, к тому же имеется практически на всех хостингах.
Для реализации этой связки будет использоваться
XAMPP - дистрибутив Apache, который также содержит PHP и MySQL. XAMPP является
кроссплатформенным, для установки требуется лишь запустить инсталлятор и
выбрать минимальные настройки.
.3.5 Выбор системы управления версиями
Система управления версиями облегчает работу с изменяющейся информацией, позволяет хранить несколько версий разрабатываемого продукта, и при необходимости возвращаться к более ранним версиям.
Существует два типа систем: централизованные и распределенные. В централизованных системах контроля версий создается удаленное хранилище с рабочим набором, в котором ведется работа с изменяющимися файлами. Другой пользователь централизованной системы управления версиями будет подключаться к удаленному хранилищу со своим рабочим набором, он может получить файлы и обновления других пользователей и добавить свои собственные. Вся работа с системой будет проходить как цикл внесения и получения изменений. Преимущества такой системы заключается в том, что системный администратор может управлять резервными копиями, отслеживать все обновления и делать системные возвраты для всех разработчиков. Минус таких систем в том, что невозможно получить доступ к хранилищу, если сервер не работает.
В распределенных системах контроля версий хранилище находится на локальной машине разработчика, также имеется рабочий набор с файлами. Также можно создать дополнительное удаленное хранилище для осуществления резервного копирования.
В качестве системы контроля версий выбрана
распределённая система управления версиями Git совместно с облачной системой
GitHub, в которой создана резервная копия локального хранилища.
.3.6 Выбор среды разработки
На данный момент наиболее популярной средой разработки для языка PHP является PhpStorm.
Основные особенности:
Автодополнение, форматирование, подсветка синтаксиса;
Рефакторинг кода;
Поддержка MVC фреймворков;, CSS, JavaScript редактор;
Интеграция с системами управления версиями;UML;
Инструменты для работы с базами данных.
.4 Выбор и обоснование методологии разработки
Методология - это совокупность принципов, методов, понятий, средств и способов, которые определяют стиль разработки ПО
Именно методология определяет каким образом будет выполняться разработка.
Существует много различных методологий создания ПО. Выбор методологии зависит от сложности проекта, сроков разработки, количества разработчиков.
Было решено выбрать гибкую методологию разработки (Agile) - это серия подходов к разработке ПО, которые ориентируются на применение интерактивной разработки с динамически формирующимися требованиями.
Существует несколько методик, которые относятся к гибким методологиям разработки, в частности Scrum, DSDM, экстремальное программирование, FDD.
Большинство таких методологий направлены на уменьшение рисков путём сведения процессов разработки к серии коротких циклов, которые называют итерациями, итерации обычно длятся несколько недель, и каждая итерация выглядит как программный проект в миниатюре и включает все задачи, которые необходимы для минимального прироста в функциональности проекта: планирование, проектирование, анализ требований, программирование, документирование, тестирование.
Хотя одной итерации недостаточно, чтобы выпустить новую версию продукта, но подразумевается, что гибкий ПП готов к выпуску в конце каждой итерации. По окончании итерации выполняется переоценка приоритетов разработки.
Для управления задачами и agile-процессами
использовалась система управления проектами YouTrack.
.5 Проектирование архитектуры программной
системы
На рисунке 2.1 представлена архитектура системы.
Рисунок 2.1 - Диаграмма архитектуры ПП
Описание сущностей:Connection Helper
используется для получения соединения с базой данных ORACLE. Соединение
устанавливается с помощью функций интерфейса OCI 8 (Oracle Connection
Interface);работает с базой данных, выполняет необходимые запросы к
БД;обрабатывает данные - результаты запросов и представляет их в необходимом
формате - массив, объект или JSON;, Views, Controllers - модели, представления
и контроллеры веб-приложения.
.6 Проектирование структуры сайта
Для проектирования структуры сайта использовался метод карт памяти (Mind map).
Карта памяти или карта мыслей, интеллект-карта, ассоциативная карта - это метод структуризации определенных концепций с графическим представлением информации в виде диаграммы.
Карта памяти реализуется в виде древовидной схемы, на которой представляются основные понятия, сущности, задачи, связанные ветвями, которые отходят от центрального узла.
Основное преимущество проектирования структуры сайта с использованием карты памяти является простота и интуитивность данного подхода.
Для построения интеллект-карты использовалась бесплатная и свободно распространяемая программа XMind.
На рисунке 2.2 представлена структура сайта, созданная с помощью метода карт памяти.
На данном этапе это лишь опорная структура, которая
будет использоваться в процессе разработки, и которая может измениться в
дальнейшем в виду непредвиденных обстоятельств.
Рисунок 2.2 - Структура сайта
Описание структурных элементов:
фигуры желтого цвета - это сущности, страницы, физические разделы веб-сайта;
фигуры серого цвета - это условные разделы для группировки в них элементов;
фигуры темно-серого цвета - это функциональные
элементы веб-страницы, которые отвечают за некоторую логику или действия.
2.7 Диаграмма прецедентов
При проектировании ПП использовался язык UML (Unified Modeling Language) - язык графического описания для объектного моделирования в области разработки ПО. С помощью UML была построена диаграмма прецедентов.
Диаграмма прецедентов показывает связь между актерами и прецедентами.
Актер - множество взаимосвязанных ролей.
Прецедент представляет собой определенную возможность моделируемой системы, с помощью которой пользователь может получить необходимый ему результат.
Диаграмма прецедентов описывает функциональность и поведение.
При создании диаграммы необходимо:
Отделить систему от ее окружающей среды;
Определить актеров и варианты их взаимодействия с системой;
На диаграмме (рисунок 2.3) показаны варианты взаимодействия пользователя с сайтом, будь то обычный посетитель или зарегистрированный пользователь.
Посетитель имеет возможность зарегистрироваться или просматривать целевую страницу, на которой находится справочная информация о системе.
Пользователю, после входа со своим логином и
паролем, доступна возможность управлять личной информацией, доступен основной
функционал ПП, редактор подключений к БД и просмотр главной страницы, на
которой расположена информация о БД.
Рисунок 2.3 - Диаграмма прецендентов
Прототипирование пользовательского интерфейса
Прототипирование - это быстрый, черновой набросок готового проекта, с целью создания базовой структуры и её анализа.