
- •Базы данных
- •Раздел 5. Средства разработки приложений. Защита баз данных (Лекции 15÷16)
- •Задачи администратора базы данных
- •Пример. Обязанности администратора базы данных oracle
- •Защита данных
- •Идентификация и проверка подлинности пользователей
- •Управление доступом
- •Поддержание целостности данных в субд
- •Средства поддержания высокой готовности
- •Тиражирование данных
- •Угрозы, специфичные для субд
- •Подходы к управлению производительностью субд
- •Обработка запросов
- •Эффективные алгоритмы выполнения запросов
БД - Раздел 5.
Базы данных
Раздел 5. Средства разработки приложений. Защита баз данных (Лекции 15÷16)
Лекция 15. Современные средства разработки приложений. Доступ к данным из прикладных приложений. Обзор технологий ADO, OLE, ODBC. Создание форм и отчетов; программный инструментарий создания пользовательского интерфейса.
При работе с реляционными БД можно условно выделить две основные задачи:
- собственно работа с БД, включающая создание и ведение БД (создание таблиц, добавление записи в таблицу, удаление записи, обновление, выборка нужной записи);
- создание пользовательских приложений, включающих разработку пользовательского интерфейса по работе с базой данных.
Даже хорошо спроектированная БД мало полезна без приложений, которые обеспечивают ее жизнедеятельность, удовлетворяя потребности пользователей в информации. При этом пользователи ждут программ, которые помогали бы им решать их задачи быстро и обладали широкими возможностями поиска и обработки информации. Поэтому проектировщику базы данных следует также обратить внимание на проектирование модулей приложений, которые будут дополнять базу данных.
Как уже отмечалось, – на этапе анализа системные аналитики разрабатывают функциональную модель предметной области. Эта модель является входными данными для этапа проектирования модулей приложений БД.
Элементы функциональной модели позволяют описать функции обработки данных, организовать их в соответствии с бизнес-требованиями и, следовательно, построить отображения этих функций в набор определений модулей приложений. При этом следует придерживаться следующих двух правил: избегать создания дублирующего кода и стараться не создавать больших модулей со сложной логикой.
Как правило, проектирование модулей приложений выполняется параллельно с проектированием физической структуры базы данных. Эти две задачи взаимосвязаны. Практически любое решение в моделировании данных почти всегда выгодно для одних модулей и создает проблемы для других. Поэтому проектировщик БД должен учитывать последствия выбираемых им решений и выбирать компромиссные варианты, ориентируясь на пользователя.
Чтобы спроектировать модули приложений, необходимо знать, как будет работать информационная система с БД. Такую информацию можно получить из функциональной модели предметной области. Для проектирования модулей приложений проектировщику нужен набор спецификаций функций, которые задают необходимые требования к обработке бизнес-данных, а также набор зависимостей между различными бизнес-функциями.
Фактически это означает, что входом для решения задачи проектирования модулей приложений является иерархия функций. На выходе проектировщик должен получить описание (спецификацию) модулей приложений, а в процессе проектирования модулей проектировщик строит отображение бизнес-требований в спецификации программных модулей.
При отображении функций в модули необходимо получить схему, которая ставит в соответствие каждой функции определенный модуль.
К сожалению, унифицированных и простых способов отображения функций в модули приложений пока не существует. Это обусловлено, прежде всего, сложностью выработки критерия того, что полученное отображение оптимально (т.е. имеется довольно широкий семантический произвол в обосновании вариантов того или иного отображения). Как показывает опыт проектирования, мнение относительно состава и количества модулей приложений в процессе проектирования меняется неоднократно.
Как указывалось, целью проектирования модулей является реализация функциональных возможностей, которые удовлетворяют бизнес-требованиям, выявленным в функциональной модели предметной области базы данных. Однако при этом необходимо рассмотреть достаточное число процессов, которые не вытекают непосредственно из сформулированных бизнес-функций. Например, возможность выдачи результатов работы модуля в файл или на принтер.
Набор модулей приложений базы данных, который непосредственно не следует из бизнес-функций, но необходим для обеспечения работы системы, называется системным.
К таким модулям можно отнести процедуры резервного копирования и автоматического восстановления, модули, предоставляющие пользователям возможность менять свой пароль, модули печати, модули навигации по приложениям базы данных и т.д.
Проектировщик базы данных самостоятельно разрабатывает спецификации таких модулей.
Сложность решения задачи проектирования модулей обусловлена еще и тем, что проектировщик баз данных должен выделить из всего планируемого кода серверный код.
При этом следует придерживаться следующих простых правил:
Задействовать как можно больше ограничений на колонки реляционных таблиц для реализации правил обработки данных без процедурного кода.
Задействовать триггеры базы данных для процедурного ввода правил обработки данных, в частности, для поддержки ссылочной целостности данных.
Задействовать хранимые процедуры для инкапсуляции общих бизнес-функций.
Использовать требования производительности при принятии окончательного выбора о разделении кода.
В последнее время хорошие результаты в разработке и проектировании систем и, в частности, модулей приложений получены с применением объектно-ориентированного подхода на основе унифицированного языка моделирования UML и CASE-инструментария, который этот язык поддерживает.
Однако рассмотрение этой методики разработки систем представляет собой предмет отдельных курсов, и здесь излагаться не будет.
Разработка должна включать проектирование процесса тестирования модулей приложений. Как правило, тесты и их проведение планируются для удовлетворения требований приемо-сдаточных испытаний. Поэтому разработку стратегии тестирования следует начинать с детального изучения этих требований.
Как показывает практика, планирование тестирования приложений базы данных должно начинаться еще на стадии анализа. Имеется вероятность того, что заказчик может отказаться от ранее принятых критериев испытаний в процессе выполнения проекта. Однако чаще всего планирование тестирования откладывают до этапа проектирования, и, таким образом, составление плана тестирования становится задачей проектировщика базы данных или администратора баз данных.
В процессе тестирования должно быть выяснено, что приложение базы данных делает то, что от него требуется, т.е. отвечает сформулированным требованиям приемо-сдаточных испытаний.
Как правило, в процессе проектирования проектировщик базы данных предлагает стратегию (или план) комплексного и системного тестирования. При разработке стратегии тестирования следует помнить о том, что должны использоваться тесты следующих категорий:
Автономные тесты (тесты модулей).
Тесты связей модулей.
Системный тест для приложения базы данных в целом.
Приемо-сдаточные испытания (которые может проводить заказчик).
Тесты производительности.
Обычно после проведения приемо-сдаточных испытаний подписывается Акт приемки-сдачи. Считается, что система переходит в состояние опытной эксплуатации, на которой выявляются и исправляются ошибки. После окончания стадии опытной эксплуатации систему переводят в состояние промышленной эксплуатации.
Доступ к данным из приложений; технологии ADO, OLE, ODBC.
Существует несколько способов доступа к данным из средств разработки и клиентских приложений. Подавляющее большинство систем управления БД содержит в своем составе библиотеки, предоставляющие специальный прикладной программный интерфейс (Application Programming Interface – API) для доступа к данным этой СУБД. Обычно такой интерфейс представляет собой набор функций, вызываемых из клиентского приложения. В случае настольных СУБД эти функции обеспечивают чтение/запись файлов БД, а в случае серверных СУБД инициируют передачу запросов серверу БД и получение от сервера результатов выполнения запросов или кодов ошибок, интерпретируемых клиентским приложением. Библиотеки, содержащие API для доступа к данным серверной СУБД, обычно входят в состав ее клиентского программного обеспечения, устанавливаемого на компьютерах, где функционируют клиентские приложения.
Обычно Windows-версии клиентского программного обеспечения наиболее популярных серверных СУБД, в частности Microsoft SQL Server, Oracle, Informix, содержат также СОМ-серверы, предоставляющие объекты для доступа к данным и метаданным.
Использование клиентского API (или клиентских Сом-объектов) является наиболее очевидным (и нередко самым эффективным с точки зрения производительности) способом манипуляции данными в приложении. Однако в этом случае созданное приложение сможет использовать данные только СУБД этого производителя, и замена ее на другую (например, с целью расширения хранилища данных или перехода в архитектуру «клиент-сервер») повлечет за собой переписывание значительной части кода клиентского приложения – клиентские API и объектные модели не подчиняются никаким стандартам и различны для разных СУБД.
Другой способ манипуляции данными в приложении базируется на применении универсальных механизмов доступа к данным. Указанный механизм обычно реализован в виде библиотек и дополнительных модулей, называемых драйверами или провайдерами. Библиотеки содержат некий стандартный набор функций или классов, укомплектованный согласно той или иной спецификации. Дополнительные модули, специфичные для различных СУБД, реализуют непосредственное обращение к функциям клиентского API конкретных СУБД.
Отметим, что достоинством универсальных механизмов является возможность применения одного и того же абстрактного API, а во многих случаях – СОМ-серверов, компонентов, классов для доступа к разным типам СУБД. Поэтому приложения, использующие универсальные механизмы доступа к данным, легко модифицировать при необходимости замены СУБД. Причем модификация, как правило, затрагивает не код приложения как таковой, а настройки доступа к данным, содержащиеся в реестре или внешних файлах. Недостатками универсальности являются невозможность доступа к уникальной функциональности конкретной СУБД, снижение производительности приложений, а также усложнение процедуры поставки приложения — ведь в его состав нужно включать библиотеки, ответственные за реализацию универсальных механизмов, драйверы для конкретных СУБД, а также обеспечивать настройки, необходимые для их правильного функционирования.
Известные наиболее популярные универсальные механизмы доступа к данным:
• BDE (Borland Database Engine);
• ODBC (Open Database Connectivity);
• OLE DB;
• ADO (ActiveX Data Objects).
Универсальные механизмы ODBC, OLE DB и ADO фирмы Microsoft представляют собой по существу промышленные стандарты. BDE фирмы Borland так и не стал промышленным стандартом, однако до недавнего времени применялся довольно широко, так как до выхода Delphi 5 был практически единственным универсальным механизмом доступа к данным, поддерживаемым средствами разработки Borland на уровне компонентов и классов.
Графическая интерпретация механизмов доступа к данным из приложений приведена на рис.
Рис. Возможные механизмы доступа к данным из приложений
В общем случае приложение, использующее БД, может применять следующие механизмы доступа:
• непосредственный вызов функций клиентского API (или обращение к СОМ-объектам клиентских библиотек);
• вызов функций ODBC API (или применение классов, инкапсулирующих подобные вызовы);
• непосредственное обращение к интерфейсам OLE DB;
• применение ADO (или применение классов, инкапсулирующих обращение к объектам ADO);
. применение ADO + OLE DB + ODBC;
• применение BDE + SQL Links (или применение классов, инкапсулирующих обращение к функциям BDE);
• применение BDE + ODBC Link + ODBC.
Кроме вышеуказанных, существуют и другие способы доступа к данным, использующие перечисленные универсальные механизмы или непосредственно клиентские API.
Лекция 16. Основные задачи администрирования баз данных. Защита баз данных; целостность и сохранность баз данных. Подходы к повышению производительности и оптимизации баз данных.
Работа с базами данных – достаточно сложная сфера применения информационных технологий. Процессы создания и использования приложений баз данных требуют квалифицированного управления. Управление базами данных на всех стадиях их жизненного цикла принято называть администрированием; специализирующееся на этом лицо или группа лиц называется администратор баз данных (АБД). На предприятиях для этих целей создаются службы АБД.
Администрирование баз данных требует знания архитектуры СУБД, всех ее функций и объектов, необходимо владеть методами проектирования и разработки баз данных. АБД отвечает за целостность информационных ресурсов. На нем лежит ответственность по созданию, обновлению и сохранности связанных между собой резервных копий файлов, исходя из задач предприятия. АБД должен в подробностях знать существующие механизмы восстановления программного обеспечения БД.
Возможны ситуации, при которых администратору БД потребуется на основе логических прикладных моделей создавать элементы физической схемы, а также поддерживать связь пользователей с системой и обеспечивать соответствующий уровень информационной безопасности, следя за тем, чтобы доступ к данным имели только те люди, которые в нем нуждаются.
Администратор БД должен уметь определять узкие места системы, ограничивающие ее производительность, настраивать SQL и программное обеспечение СУБД и обладать знаниями, необходимыми для решения вопросов оптимизации быстродействия БД.