Использование среды web как платформы приложений баз данных
Презентацию к данной лекции Вы можете скачать здесь.
9.1. Проектирование баз данных
9.1.1. Понятие базы данных
Большинство автоматизированных систем тем или иным образом используют структурированную информацию. В современных приложениях такие упорядоченные данные принято хранить в базах данных – особых файлах, использование которых вместе со специальными программными средствами позволяет пользователю, как просматривать необходимую информацию, так и манипулировать ею.
Например, телефонный справочник представляет собой простейшую базу данных , в которой вся информация располагается в единственной таблице [1, 2]. Каждая запись в этой таблице содержит идентификатор конкретного человека – ФИО и его номер телефона. Таким образом, таблица состоит из записей, информация в которых разделена на несколько частей – полей (табл. 9.1).
Рассмотрим различные определения базы данных :
- Базой данных является представленная в объективной форме совокупность самостоятельных материалов, систематизированных таким образом, чтобы эти материалы могли быть найдены и обработаны с помощью электронной вычислительной машины [3].
- База данных – организованная в соответствии с определенными правилами и поддерживаемая в памяти компьютера совокупность данных, характеризующая актуальное состояние некоторой предметной области и используемая для удовлетворения информационных потребностей пользователей [4].
- База данных – совокупность данных, хранимых в соответствии со схемой данных, манипулирование которыми выполняют в соответствии с правилами средств моделирования данных [5].
- База данных – некоторый набор перманентных (постоянно хранимых) данных, используемых прикладными программными системами какого-либо предприятия [6].
- База данных – совокупность взаимосвязанных данных, совместно хранимых в одном или нескольких компьютерных файлах [7].
- База данных – совместно используемый набор логически связанных данных (и описание этих данных), предназначенный для удовлетворения информационных потребностей организации [8].
- База данных – это совокупность связанных данных, организованных по определенным правилам, предусматривающим общие принципы описания, хранения и манипулирования, независимая от прикладных программ [9].
Существует множество и других определений, отражающих скорее субъективное мнение тех или иных авторов о том, что означает этот термин в их понимании, однако общепризнанная единая формулировка отсутствует. Наиболее часто используются следующие отличительные признаки [10]:
- База данных хранится и обрабатывается в вычислительной системе. Таким образом, любые некомпьютерные хранилища информации (архивы, библиотеки, картотеки и т. п.) базами данных не являются.
- Данные в базе данных логически структурированы (систематизированы) с целью обеспечения возможности их эффективного поиска и обработки в вычислительной системе. Структурированность подразумевает явное выделение составных частей (элементов), связей между ними, а также типизацию элементов и связей, при которой с типом элемента (связи) соотносится определенная семантика и допустимые операции.
- База данных включает метаданные, описывающие логическую структуру БД в формальном виде (в соответствии с некоторой метамоделью ). В соответствии с ГОСТ Р ИСО МЭК ТО 10032-2007, "постоянные данные в среде базы данных включают в себя схему и базу данных . Схема включает в себя описания содержания, структуры и ограничений целостности, используемые для создания и поддержки базы данных . База данных включает в себя набор постоянных данных, определенных с помощью схемы. Система управления данными использует определения данных в схеме для обеспечения доступа и управления доступом к данным в базе данных " [5].
Из перечисленных признаков только первый является строгим, а другие допускает различные трактовки и различные степени оценки. Можно лишь установить некоторую степень соответствия требованиям к БД.
Многие специалисты указывают на распространенную ошибку, состоящую в некорректном использовании термина база данных вместо термина система управления базами данных . Эти понятия, следовательно, необходимо различать.
Система управления базами данных ( СУБД ) – это специализированная программа (чаще комплекс программ), предназначенная для организации и ведения базы данных [11].
Таким образом, система управления базой данных ( СУБД ) – важнейший компонент информационной системы. Для создания и управления информационной системой СУБД необходима в той же степени, как для разработки программы на алгоритмическом языке необходим транслятор.
Основные функции СУБД [12]:
- управление данными во внешней памяти (на дисках);
- управление данными в оперативной памяти;
- журналирование изменений и восстановление базы данных после сбоев;
- поддержание языков БД (язык определения данных, язык манипулирования данными).
Обычно современная СУБД содержит следующие компоненты [12] (рис. 9.1):
- ядро, которое отвечает за управление данными во внешней и оперативной памяти и журналирование;
- процессор языка базы данных, обеспечивающий оптимизацию запросов на извлечение и изменение данных и создание, как правило, машинно-независимого исполняемого внутреннего кода;
- подсистему поддержки времени исполнения, которая интерпретирует программы манипуляции данными, создающие пользовательский интерфейс с СУБД;
- сервисные программы (внешние утилиты), обеспечивающие ряд дополнительных возможностей по обслуживанию информационной системы.
На рис. 9.2 приведены основные функции и содержимое компонентов обработки баз данных [13].
увеличить изображение
Рис. 9.2. Функции компонентов обработки баз данных
9.1.2. Классификация БД
Существует огромное количество разновидностей баз данных, отличающихся по различным критериям (например, в "Энциклопедии технологий баз данных" М. Р. Когаловского [4] определяются свыше 50 видов БД).
Базы данных могут быть классифицированы [10]:
- По технологии хранения:
- БД во вторичной памяти (традиционные);
- БД в оперативной памяти (in-memory databases);
- БД в третичной памяти (tertiary databases);
- Географические;
- Исторические;
- Научные;
- Мультимедийные;
- Централизованные (сосредоточенные);
- Распределенные.
Подробнее же рассмотрим классификацию БД по моделям данных .
9.1.2.1. Классификация БД по модели данных
В классической теории баз данных, модель данных есть формальная теория представления и обработки данных в системе управления базами данных (СУБД), которая включает, по меньшей мере, три аспекта [12, 14]:
- структура данных – описывает точку зрения пользователя на представление данных;
- набор допустимых операций, выполняемых на структуре данных ( модель данных предполагает, как минимум, наличие языка определения данных (ЯОД), описывающего структуру их хранения, и языка манипулирования данными (ЯМД), включающего операции извлечения и модификации данных);
- ограничения целостности – механизм поддержания соответствия данных предметной области на основе формально описанных правил.
Другими словами, структура данных определяет, что из себя логически представляет база данных, ограничения целостности определяют средства описаний корректных состояний базы данных, набор допустимых операций определяет способы перехода между состояниями базы данных (то есть способы модификации данных) и способы извлечения данных из базы данных [14].
Каждая БД и СУБД строится на основе некоторой явной или неявной модели данных . Все СУБД, построенные на одной и той же модели данных , относят к одному типу. Например, основой реляционных СУБД является реляционная модель данных , сетевых СУБД – сетевая модель данных и т.д.
Длительное время термин " модель данных " использовался без формального определения. Одним из первых специалистов, который достаточно формально определил это понятие, был Э. Кодд. В статье " Модели данных в управлении базами данных" [15] он определил модель данных как комбинацию трех компонентов:
- коллекции типов объектов данных, образующих базовые строительные блоки для любой базы данных, соответствующей модели;
- коллекции общих правил целостности, ограничивающих набор экземпляров тех типов объектов, которые законным образом могут появиться в любой такой базе данных;
- коллекции операций, применимых к таким экземплярам объектов для выборки и других целей.
В процессе исторического развития в СУБД использовалось следующие модели данных [12]:
9.1.2.1.1. Иерархические
Иерархическая модель базы данных состоит из объектов с указателями от родительских объектов к потомкам, соединяя вместе связанную информацию.
Организация данных в СУБД иерархического типа определяется в следующих терминах [12]:
- Атрибут (элемент данных) – наименьшая единица структуры данных. Обычно каждому элементу при описании базы данных присваивается уникальное имя. По этому имени к нему обращаются при обработке. Элемент данных также часто называют полем.
- Запись – именованная совокупность атрибутов. Использование записей позволяет за одно обращение к базе получить некоторую логически связанную совокупность данных. Именно записи изменяются, добавляются и удаляются. Тип записи определяется составом ее атрибутов. Экземпляр записи – конкретная запись с конкретным значением элементов
- Групповое отношение – иерархическое отношение между записями двух типов. Родительская запись (владелец группового отношения) называется исходной записью, а дочерние записи (члены группового отношения) – подчиненными. Иерархическая база данных может хранить только такие древовидные структуры.
Одной из наиболее популярных иерархических СУБД была Information Management System (IMS) компании IBM, появившаяся в 1968 году [13].
Тема 11.2 Язык написания скриптов рнр для доступа к базам данных [усрс, 2 пз]
Возможности языка РНР как системы разработки скриптов: достоинства и недостатки. Принцип работы и конструкции языка РНР. Синтаксис РНР. Переход от HTML к коду РНР. Написание команд. Функции, определяемые пользователем. Написание переменных. Типы переменных и комментарии в РНР. Инициализация массивов. Ссылки на переменные. Операторы в РНР: арифметические, логические и сравнения.
Вопросы для контроля
Возможности языка РНР как системы разработки скриптов: достоинства и недостатки
Переход от HTML к коду РНР. Принцип работы, написание команд, конструкция и синтаксис языка РНР
Написание переменных. Типы переменных и комментарии в РНР. Ссылки на переменные
Инициализация массивов. Функции, определяемые пользователем
Операторы в РНР: арифметические, логические и сравнения
Вопросы тестовых заданий
Ассоциативные массивы, способы объявления массивов
Единицы измерения функция PHP
Константы в PHP
Конструкции цикла в PHP
Принцип работы скриптов
Типы переменных в PHP
Функции в PHP для определения типа переменных
Тема 11.3 Активизация Web-страниц с помощью языка рнр [усрс, 2 Лк]
Активизация Web-страниц. Пересылка данных: отправка и проверка данных из формы. Форматирование пересылаемых данных. Подавление ошибок при обращении к функциям. Определение адреса удаленного хоста, даты и времени. Регулярные выражения. Скрипт проверки правильности e-mail.
Вопросы для контроля
Активизация Web-страниц. Отправка и проверка данных из формы
Форматирование пересылаемых данных
Подавление ошибок при обращении к функциям
Определение адреса удаленного хоста, даты и времени
Скрипт проверки правильности e-mail
Литература: [0], [1] стр. 6–23, 118–144; [2] стр. 465–515, 993–1036; [4] стр. 137–180; [6–7, 14, 18–20, 22]
Вопросы тестовых заданий
Синтаксис скриптов PHP
Результаты работы скриптов PHP
Передача данных из формы
Функции и операторы PHP (func, trim, для удаления файла, для возвращения имя сессии и т.п.)
3 Учебно- методические материалы по усрс
3.1 Основная литература
0. Вишняков, В.А. Вэб-объекты и распределённая обработка в управлении: УМК. В 2-х ч.; Ч. 2 / В. А. Вишняков. – Минск: Изд-во МИУ, 2010. -212 с.
1. Вишняков В.А. Информационный менеджмент ч.4. Основы электронного бизнеса и коммерции. –Мн.: МИУ, 2004. –152.
2. Малыхина М.П. Базы данных: основы, проектирование, использование. –Спб.: БХВ-Петербург, 2004. –512 с.: ил.
3. Хансен Г., Хансен Д. Базы данных: разработка и управление. Пер. с англ. –М.: ЗАО "Изд–во БИНОМ", 1999. –704 с.: ил.
4. MySQL / Ларри Ульман; Пер. с англ. Слинкина А.А.. –М.: ДМК Пресс; СПб.: Питер, 2004. –352 с.: ил.
5. MySQL, 2-е изд.: Пер с англ. –М.: Издательский дом «Вильямс», 2004. –1056 с.: ил. –Парал. тит. англ.
Тут вы можете оставить комментарий к выбранному абзацу или сообщить об ошибке.
Access как средство быстрой разработки приложений. Общее описание и функциональные особенности приложений, использующих системы управления базами данных, развитие веб-технологий с их использованием. Динамическое создание гипертекстовых документов.
Рубрика Программирование, компьютеры и кибернетика Вид реферат Язык русский Дата добавления 15.05.2015 Размер файла 236,2 K Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Использование баз данных для web-приложений
Введение
приложение управление гипертекстовый
Базы данных можно использовать как средство позволяющее реализовать полезные функции. Например, хранение Internet - адресов для рассылки рекламы и т.п.
Если мы имеем выход в интернет, то можем воспользоваться функциями Microsоft Access, для обеспечения доступа к информации базы данных пользователями интернета.
Базы данных - это хранилище объектов данных.
1. Накопление знаний
Самым немаловажным критерием для выбора той или иной базы данных это накопленные знания о ней. Распространенная база данных, такая как MySQL, накопила большое количество информации о ее поведении в разных условиях, и о том, какие системы в принципе можно сконструировать на основе данной базы данных, изменив ее или приспособив.
Нужно понимать, что новая малоизвестная система должна пройти период накопления знаний в каждой из команд разработчиков.
Современное поколение баз данных не очень хорошо приспособлено для работы со сложными связями и различными типами данных.
2. Access - средство быстрой разработки приложений
Приложение базы данных содержит набор объектов, среди которых могут быть таблицы, запросы, формы, отчеты, макросы и модули кода, которые используются вместе и упрощают использование базы данных.
Access относят к средствам быстрой разработки приложений (RAD - Rapid Application Development). Мы можем выделить такие отличительные черты разработки как - наличие объектно-ориентированного языка программирования, который позволяет действенно использовать модульный принцип составления программ; применение визуальных средств разработки, предоставляющих возможность заменить написание программного кода рисование пользовательского интерфейса; поддержка стандартных протоколов обмена данными между приложениями, дозволяющая разработать многоуровневые приложения, не зависящие от источника данных.
3. Приложения, использующие управления базами данных
При использовании или сохранении единичных данных, данные удобно хранить в файлах. Но если данных или их типов очень много или мы имеем дело с большим количеством пользователей, то в таком случае использование системы управления базами данных как часть приложения, дает довольно значительную пользу. У приложений использующих возможности баз данных, прибавляется сложность самого инсталлирования базы данных и объединение ее с приложением. В большинстве нынешних веб-приложений местом хранения данных используют базу данных даже в том случае, когда совокупность данных и сложность не являются большими. В веб-приложениях нужно учитывать возможное количество одновременно работающих пользователей и то, что в базе данных временная блокировка соответствующих мест происходит проще, чем в файлах.
4. Развитие веб-технологий с использованием баз данных
Функции которые реализуются с помощью БД и веб можно разбить на три уровня:
Уровень представления - окна ввода и вывода;
Уровень логики приложения - задачи и правила управления процессом (анализ запросов, контроль данных статистических характеристик и др.);
Уровень данных - механизм постоянного хранения данных - БД. Эти уровни можно реализовать в нескольких вариантах архитектуры распределения БД:
Представление и логика приложения могут размещаться на клиенте БД на сервере.
Представление на клиенте, приложение на сервере приложений, данные на сервере БД.
Достоинства второго варианта:
Логика приложения представляется в виде изолированных компонентов, которые можно использовать в других системах.
Различные уровни приложения можно распространить по различным компонентам, что позволяет повысить производительность и улучшить координацию.
Разработку отдельных уровней можно поручить различным группам разработчиков.
5. Динамическое создание гипертекстовых документов на основе содержимого БД
Обширно применяются следующие технологии создания интерактивного взаимодействия с пользователем на веб использовании Стандартного Интерфейса Шлюза (Commom Gateway Interface) - CGI, включение JavaScript - сценариев в тело веб-страниц; самый мощный предоставляющий неограниченные возможности способ - это применение технологии Java/
В таком варианте доступ к БД осуществляется специальной CGI-программой, которая запускается веб-сервером в ответ на запрос веб-клиента. Такая программа обрабатывая запрос, просматривает содержимое БД и создает выходной HTML-документ, возвращаемый клиенту.
Такое решение действенно для больших баз данных со сложной структурой и при необходимости поддержки операций поиска.
6. Совместное использование базы данных с помощью сайта SharePoint
Приложение SharePoint позволяет использовать преимущества централизованного размещения данных. Кроме того, можно использовать функции SharePoint для управления размещения пользователей и предоставления доступа к данным через веб-браузер.
Способы совместного использования базы данных с помощью SharePoint:
· Публикация веб-базы данных с помощью служб Access
Службы Access предоставляют платформу для создания баз данных, которые можно использовать в интернете. Веб-базы данных конструируются и публикуются с использованием Access 200 и SharePoint, после чего можно использовать веб-базу данных через веб-браузер.
Принцип работы - при публикации веб-базы данных службы Access создают сайт SharePoint, содержащий базу данных. Все объекты базы данных и сами данные перемещаются в списки SharePoint на этом сайте. Чтобы создать веб-базу данных, нужно разрешение конструктора на сайте SharePoint, на котором она будет опубликована.
Данные хранятся в списках SharePoint. Все таблицы преобразуются в списки SharePoint, а записи становятся элементами списка. Это позволяет управлять доступом К веб-базе данных с помощью разрешений SharePoint.
· Сохранение файла базы данных в библиотеке документов SharePoint
Этот способ упрощает управление доступом к базе данных. Базу данных можно сохранить в любой библиотеке документов SharePoint. Это позволяет интегрировать управление файлами баз данных Access с остальными документами и бизнес-данными.
· Перемещение данных в списки SharePoint и связывание с ними
Этот способ позволяет каждому пользователю изменять собственную копию базы данных, поскольку совместный доступ к данным осуществляется через сайт SharePoint. Хотя в данном случае отсутствуют преимущества, получаемые при публикации базы данных на сайте SharePoint, при этом достигается выгода централизованного расположения данных на сайте SharePoint.
7. Использование Access с сервером базы данных
Совместное использование базы данных можно организовать с помощью приложения Access и сервера баз данных (например, сервер SQL Server). Этот способ обеспечивает много преимуществ, но для него требуется дополнительное программное обеспечение - сервер баз данных.
Преимущества данного совместного использования.
· Высокая производительность и масштабируемость. Во многих случаях сервер баз данных обеспечивает более высокую производительность, чем простой файл базы данных Access. Большинство серверов баз данных также обеспечивают поддержку очень крупных баз данных размером до терабайта, что примерно в 500 раз превышает текущий предел для баз данных Access (2ГБ). В целом серверы баз данных работают весьма действенно, обрабатывая запросы параллельно и сводя к минимуму дополнительные требования к памяти при добавлении пользователей.
· Повышенная доступность. В большинстве серверов баз данных предусмотрено резервное копирование базы данных во время ее использования. В результате для резервного копирования данных пользователям не обязательно выходить из базы данных. Кроме того, обычно серверы баз данных очень действенно работают с одновременным изменением и блокировкой записей.
· Улучшенная безопасность. Ни одну базу данных нельзя защитить полностью. Тем не менее серверы баз данных обеспечивают надежную защиту, которая позволяет предотвратить несанкционированное использование данных. В большинстве серверов баз данных используются средства обеспечения безопасности на основе учетных записей, что позволяет контролировать доступ пользователей к таблицам. Даже в случае незаконного получения доступа к интерфейсу Access несанкционированное использование данных будет предотвращено средствами защиты на уровне учетных записей.
· Автоматическое восстановление. Если вдруг произойдет сбой, на некоторых серверах баз данных предусмотрен механизм автоматического восстановления базы данных до последнего состояния всего за несколько минут без вмешательства администратора базы данных.
· Обработка данных на сервере. Использование приложения Access в конфигурации «клиент-сервер» уменьшает объем сетевого трафика благодаря обработке запросов базы данных на сервере перед отправкой результатов клиенту. Обычно сервер обрабатывает данные более эффективно, особенно при работе с большими наборами данных.
8. Оценка рисков использования веб-приложений
Безопасность веб-приложений уже не первый год является важным элементом защиты информационных систем. Беря во внимание тенденцию к переносу стандартных клиент-серверных приложений в веб-среду, растущую популярность AJAX и других элементов Web 2.0 можно сказать, что с течением времени актуальность защиты онлайн приложений только растет.
Базы данных уязвимостей.
С помощью справочников баз данных уязвимостей мы получаем ответы о той или иной проблеме.
Анализ защищенности систем
В качестве примера таких отчетов приводится ежегодный отчет «Статистика уязвимости веб-приложений» компании Positive Technologies (PT) и ежеквартальное обозрение «Website Security Statistics Report» компании WhiteHat Security (WH). Оба отчета имеют близкую структуру и содержат статистику уязвимостей веб-приложений, полученную в ходе работ по тестированию на проникновение, аудита безопасности и др. Для получения данных использовались различные подходы, от сканирования веб-приложений с помощью сканеров с последующей проверкой результатов до тестирования методом «белого ящика», включающего также частичный анализ исходного кода.
Оба отчета используют классификацию уязвимостей Web Application Security Consortium Web Security Threat Classification. В этом документе собраны воедино и организованы различные угрозы безопасности веб-приложений.
Любопытно, что данные отчеты близки не только по структуре, но и по результатам. Так, наиболее распространенной уязвимостью оба источника признают «Межсайтовое выполнение сценариев» (Cross-Site Scripting, XSS). Эта уязвимость была обнаружена в 74% всех сайтов по версии Positive Technologies (см. рис. 2) и в 65 случаях из 00 (см. рис. 3) у клиентов WhiteHat Security.
Наиболее распространенной уязвимостью высокой степенью риска обе компании признают «Внедрение операторов SQL» (SQL Injection) вероятность обнаружения которой составляет 3% - PT и 6% - WH. Меньшая вероятность обнаружения проблем различных типов в трактовке WhiteHat Security вполне объяснима большей зрелостью западного рынка и использованием результатов повторных проверок приложений одного и того же клиента. К сожалению, большинство российских обладателей Web-приложений находится на этапе становления процесса управления информационной безопасностью.
В кое-каких пунктах, например по количеству уязвимостей типа «Утечка информации» (Information Leakage) отчеты достаточно серьезно расходятся (90% - PT и 40% - WH). Это связанно с тем, что WhiteHat Security включает в отчет только уязвимости, имеющие «критичный», «неотложный» и «высокий» уровень риска, в то время как Positive Technologies задействует все найденные недочеты.
Все же вероятность обнаружения уязвимости не является - реализациий угрозы (атаки), которая требуется в классической модели оценки рисков. Для получения информации об инцидентах в основном используются два подхода: регистрация информации об инцидентах и протоколирование попыток с помощью технологии honeypot или антивирусного сканирования.
В качестве интересных примеров первого типа можно привести портал Zone-H и проект Web Hacking Incidents Database. Портал Zone-H регистрирует последствия компрометации Web-приложений. Как правило, информацию в архив заносят сами злоумышленники. Это определяет и наполнение архива, содержащего в основном информацию об атаках «взломать хоть что-нибудь».
База данных Web Hacking Incidents Database пополняется на основе информации, доступной в средствах массовой информации. В связи с этим технические детали, как правило, отсутствуют либо недостаточно конкретны, однако объекты успешных атак весьма и весьма внушительны. Нередко в информации об инциденте имеется информация, позволяющая оценить результаты атаки.
Образцами использования технологии honeypot для определения наиболее вероятных методов атак представлены в публикациях Internet Security Threat Report компании Symantec и отчетах проекта «Distributed Open Proxy Honyepot».
Заключение
В заключение можно сказать то, что на сегодняшний день ни одно веб-приложение не обходится без базы данных. Сегодня идет стремительное развитие интернет-технологий, мир представляет все лучше программы и приложения которые нам помогают и упрощают нашу работу. Благодаря систематизации в базах данных на легко работать в веб-приложениях.
Список литературы
1. Дунаев С.Б. «Intranet-технологии» М., 997
2. Грабер М., «Справочное руководство по SQL» м. 997
3. Фролов А.В., Фролов Г.В. Базы данных в Интернете: практическое руководство по созданию Web-приложений с базами данных. 2000
Подобные документы
Проектирование системы управления базами данных. Особенности реализации в MS SQL. Разработка пользовательского интерфейса. Тестирование и отладка приложения. Руководство пользователя и системного администратора. Анализ и методы разработки приложений.
курсовая работа [867,9 K], добавлен 16.07.2013
Изучение основных принципов разработки приложений баз данных в среде Delphi. Создание таблиц, псевдонима и вычисляемых полей базы данных. Особенности организации поиска и фильтрации. Сортировка данных в таблицах. Построение запросов. Генерация отчетов.
курсовая работа [1,3 M], добавлен 05.02.2017
Обзор программных средств разработки приложений и обоснование выбора языка программирования. Классификация приложений для работы с базами данных. Функциональная структура базы данных с указанием назначения программных модулей, руководство пользователя.
дипломная работа [645,3 K], добавлен 21.11.2010
Хранение и обработка данных. Компоненты системы баз данных. Физическая структура данных. Создание таблиц в MS Access. Загрузка данных, запросы к базе данных. Разработка информационной системы с применением системы управления базами данных MS Access.
курсовая работа [694,0 K], добавлен 17.12.2016
Краткая характеристика и функциональные возможности MS Access. Базы данных и системы управления базами данных. Проектирование в теории и создание на практике базы данных в продукте корпорации Microsoft для управления базами данных "Microsoft Access".
В этом документе описана процедура создания простого веб-приложения, которое подключается к серверу базы данных MySQL. Здесь также рассмотрены основные идеи и технологии веб-разработки, такие какJavaServer Pages (JSP), библиотека стандартных тегов JavaServer Pages (JSTL), интерфейс API связи с базами данных Java (JDBC) и двухуровневая архитектура между клиентом и сервером. Этот учебный курс разработан для начинающих разработчиков, обладающих базовыми знаниями в области веб-разработок и желающих применить свои знания к базе данных MySQL.
MySQL является популярной системой управления базами данных с открытым кодом, которая обычно используется в веб-приложениях благодаря своей скорости, гибкости и надежности. MySQL использует SQL (язык структурированных запросов) для доступа к данным в базе данных и их обработки.
Figure 1. Содержимое этой страницы применимо к IDE NetBeans 7.2, 7.3, 7.4 и 8.0Для работы с этим учебным курсом требуется следующее программное обеспечение и ресурсы.
7.2, 7.3, 7.4, 8.0, пакет Java EE
Драйвер JDBC MySQL Connector/J
GlassFish Server Open Source Edition 3.1.2.2
Примечания:
Комплект загрузки Java среды IDE NetBeans позволяет пользователям установить сервер GlassFish. Для работы с данным учебным курсом требуется сервер GlassFish.
Если необходимо сравнить проект с работающим решением, можно загрузить демонстрационное приложение.
Планирование структуры
С помощью двухуровневой архитектуры, в которой клиент взаимодействует с сервером напрямую, можно создать простое веб-приложение. В рамках данного учебного курса веб-приложение Java взаимодействует напрямую с базой данных MySQL с использованием API связи с базами данных Java. В сущности, именно драйвер MySQL Connector/J JDBC обеспечивает обмен данными между кодом Java, распознанным сервером приложения (GlassFish), и любым содержимым на SQL, языке, понятном для сервера базы данных (MySQL).
Приложение, создаваемое в этом учебном курсе, предполагает создание двух страниц JSP. На каждой такой странице с помощью HTML и CSS реализован простой интерфейс, и применяется технология JSTL для выполнения логики, напрямую запрашивающей базу данных с вставкой извлеченных данных на двух страницах. В базе данных MySQL MyNewDatabase содержатся две таблицы базы данных Subject и Counselor , которые были созданы при работе с учебным курсом Подключение базы данных MySQL. Рассмотрим следующий двухуровневый сценарий.
Для реализации описанного выше сценария необходимо разработать простое приложение для организации IFPWAFCAD Международной ассоциации по консультированию и развитию для бывших профессиональных борцов.
index.jsp
response.jsp
Создание нового проекта
Сначала необходимо создать новый веб-проект в среде IDE:
Figure 4. Используйте мастер создания проекта для создания нового проектаС помощью этого мастера можно создать пустое веб-приложение в стандартном проекте IDE. В стандартном проекте для компиляции, развертывания и выполнения приложения используется созданный в среде IDE сценарий сборки проекта Ant.
В панели "Сервер и параметры" укажите сервер GlassFish в качестве сервера, на котором будет запускаться приложение.
*Примечание.*Сервер GlassFish отображается в раскрывающемся списке 'Сервер', если установлена версия Java IDE NetBeans. Поскольку сервер GlassFish включен в загрузку, он регистрируется в среде IDE автоматически. Для использования в проекте другого сервера нажмите кнопку "Добавить" рядом с полем с раскрывающимся списком "Сервер" и зарегистрируйте другой сервер в среде IDE. Работа с другими серверами, помимо GlassFish в рамках данного учебного курса не рассматривается.
В поле "Версия Java EE" выберите Java EE 5.
Figure 5. Укажите настройки сервера в мастере создания веб-приложенийДля веб-проектов Java EE 6 и Java EE 7 использование дескриптора развертывания web.xml не требуется. Шаблон проекта NetBeans не содержит файл web.xml в проектах Java EE 6 и Java EE 7. Однако в данном учебном курсе рассматривается процесс объявления источника данных в дескрипторе развертывания. Функции, характерные только для Java EE 6 или Java EE 7, не требуются, поэтому в качестве версии проекта можно указать Java EE 5.
Примечание. Точно так же можно указать в качестве версии проекта Java EE 6 или Java EE 7, а затем создать дескриптор развертывания web.xml . В мастере создания файла выберите категорию "Web", а затем выберите "Стандартный дескриптор развертывания".
Подготовка веб-интерфейса
Настройка страницы приветствия
Убедитесь, что страница index.jsp открыта в редакторе. Если файл еще не открыт, дважды щелкните index.jsp под узлом "Веб-страницы" проекта IFPWAFCAD в окне "Проекты".
В редакторе измените текст между тегами <title> на Домашняя страница IFPWAFCAD .
Figure 6. На палитре отображается фрагмент кода при подведении курсора к элементуПалитру можно настроить в соответствии с существующими требованиями - щелкните правой кнопкой мыши палитру и выберите 'Показать крупные значки' и 'Скрыть имена элементов', чтобы палитра выглядела как на рисунке выше.
Установите курсор сразу же после тегов <h1> . (Именно в этом месте будет внедрена новая таблица HTML). Далее в окне "Палитра" дважды щелкните значок "Таблица".
В появившемся диалоговом окне "Вставка таблицы" укажите следующие значения и затем нажмите кнопку "ОК":
Рядов: 2
Столбцов: 1
Размер границы: 0 Код таблицы HTML создан и добавлен на страницу.
Добавьте следующее содержимое в заголовок таблицы и ячейку первой строки таблицы (новое содержимое выделено полужирным шрифтом):
Для нижней строки таблицы вставьте форму HTML. Для этого поместите курсор между второй парой тегов <td> и дважды щелкните значок формы HTML ( ) на палитре. В диалоговом окне "Вставка формы" введите response.jsp в текстовом поле "Действие" и нажмите кнопку "ОК".
Figure 7. Укажите настройки формы в диалоговом окне 'Вставить форму'Между тегами <form> введите следующее содержимое (новое содержимое выделено полужирным шрифтом):
Нажмите клавишу Enter, чтобы добавить пустую строку после добавленного содержимого, затем дважды щелкните "Список" в палитре, чтобы открыть диалоговое окно "Вставить список".
В диалоговом окне "Вставить список" ведите subject_id для текстового поля "Имя" и нажмите "OK". Обратите внимание на то, что к форме добавляется фрагмент кода для раскрывающегося списка.
Количество параметров для раскрывающегося списка не имеет значения. Позже в этом учебном курсе будет показано добавление тегов JSTL для динамического создания на основе данных, полученных из таблицы базы данных "Subject".
Для форматирования кода щелкните правой кнопкой мыши в редакторе и выберите 'Формат' (Alt-Shift-F; Ctrl-Shift-F в Mac). Код автоматически форматируется и должен теперь выглядеть следующим образом:
Для просмотра этой страницы в браузере щелкните правой кнопкой мыши в редакторе и выберите 'Запустить файл' (Shift-F6; Fn-Shift-F6 в Mac). После этого страница JSP будет автоматически скомпилирована и развернута на сервере. Открывается браузер по умолчанию, и в нем выводится страница из местоположения, где она развернута.
Для подготовки интерфейса для страницы response.jsp сначала необходимо создать файл в проекте. Обратите внимание на то, что большая часть содержимого, отображаемого на странице, создана динамически с помощью технологии JSP. Поэтому в следующих шагах будет необходимо добавить метки-заполнители, которые позже будут заменены кодом JSP.
Щелкните правой кнопкой мыши узел проекта "IFPWAFCAD" в окне "Проекты" и выберите "Создать > JSP". Откроется диалоговое окно "Новый файл JSP".
В поле "Имя файла JSP" введите response . Обратите внимание на то, что в настоящий момент для поля "Расположение" выбран каталог "Веб-страницы", это означает, что файл будет создан в каталоге проекта web . Это то же местоположение, что и для страницы приветствия index.jsp .
Примите остальные значения по умолчанию и нажмите кнопку "Готово". В редакторе выполняется создание и открытие шаблона новой страницы response.jsp . Новый узел JSP также отображается в каталоге "Веб-страницы" в окне "Проекты".
Figure 9. Узел response.jsp отображается в окне 'Проекты'В редакторе измените заголовок на IFPWAFCAD -
Удалите строку <h1>Hello World!</h1> строка между тегами <body> . Скопируйте и вставьте в тело страницы следующую таблицу HTML:
Для просмотра этой страницы в браузере щелкните правой кнопкой мыши в редакторе и выберите 'Запустить файл' (Shift-F6; Fn-Shift-F6 в Mac). Выполняется компиляция и развертывание страницы на сервере GlassFish с последующим открытием в браузере по умолчанию.
Figure 10. Файл response.jsp отображается в браузереСоздание таблицы стилей
Создайте простую таблицу стилей для расширения просмотра в веб-интерфейсе. При работе с данным учебным курсом предполагается, что пользователь обладает знаниями о правилах стилей и их влиянии на соответствующие элементы HTML на страницах index.jsp и response.jsp .
Откройте мастер создания файлов, нажав кнопку 'Создать файл' ( ) на главной панели инструментов IDE. Выберите категорию "Web", а затем выберите "Каскадная таблица стилей" и нажмите кнопку "Далее".
Введите style в поле "Имя файла CSS" и нажмите кнопку "Готово". Среда IDE создает пустой файл CSS и располагает его в том же местоположении проекта, что и index.jsp и response.jsp . Обратите внимание на то, что узел для style.css отображается теперь внутри проекта в окне "Проекты", а файл открывается в редакторе.
В редакторе добавьте следующее содержимое к файлу style.css :
Подключите таблицу стилей к index.jsp и response.jsp . На обеих страницах добавьте следующую строку между тегами <head> :
Для быстрого перехода между открытыми в редакторе файлами нажмите CTRL+TAB, а затем выберите требуемый файл.
Подготовка средств обмена данными между приложениями и базой данных
После подготовки источника данных и пула подключений для сервера необходимо определить в приложении необходимость использования источника данных. Как правило, для этого создается запись в дескрипторе развертывания приложения web.xml . Наконец, необходимо проверить доступность для сервера драйвера базы данных (JDBC MySQL Connector/J).
*Примечание. *Для дальнейшей работы необходимо убедиться в том, что база данных MySQL с именем MyNewDatabase настроена корректно и содержит данные примера из ifpwafcad.sql. Этот файл SQL создает две таблицы Subject и Counselor и затем заполняет их данными для примера. Если это не было выполнено ранее, или с этим заданием возникли сложности, то прежде чем продолжить учебный курс, обратитесь к разделу Подключение к базе данных MySQL.
Помимо этого для создания источника данных и работы с сервером GlassFish в рамках данного учебного курса необходимо защитить базу данных паролем. При использовании учетной записи MySQL root по умолчанию с пустым паролем с помощью командной строки можно установить другой пароль.
В качестве пароля в этом учебном курсе используется nbuser . Для установки пароля nbuser в командной строке откройте в системе MySQL каталог bin и введите следующие данные:
Дополнительные сведения приведены в официальном справочном руководстве по работе с MySQL: Защита исходных учетных записей MySQL.
Эта тема очень интересная и непростая, и о ней можно написать большую книгу. В данной статье мы, разумеется, не будем детально рассматривать эти вопросы, тем более что они не имеют отношения к конкретным реализациям J2EE-серверов, в частности к WAS CE. Однако понимание основных аспектов взаимодействия серверов приложений и серверов БД полезно в любом случае. Применительно к WAS CE польза будет состоять в том, что читателю станут гораздо более понятны странный на первый взгляд состав jar-файлов ../repository/ tranql/jars/tranql-1.2.2.jar и наличие нескольких rar-коннекторов в каталоге ../repository/tranql/ rars (и их общее назначение).
Локальные и глобальные транзакции
Само понятие транзакции хорошо знакомо программистам, работающим с БД (зачастую, правда, в весьма упрощенном варианте). А вот деление транзакций на локальные и глобальные появилось в связи с использованием распределенных многозвенных систем.
Локальными транзакциями при взаимодействии с базами данных называются транзакции, управление которыми берет на себя СУБД. С точки зрения программиста, использующего универсальный API для доступа к БД (например, JDBC), локальные транзакции создаются и завершаются в привязке к конкретному соединению с БД. В JDBC явное управление локальными транзакциями выполняется за счет вызова методов объекта типа Connection, таких как setAutoCommit(), commit() или rollback(). Этот режим работы характерен для написания приложений в архитектуре «клиент—сервер». СУБД использует однофазный режим завершения таких транзакций — другими словами, процедура завершения транзакции выполняется за одну команду (commit для подтверждения транзакции). При такой работе нет возможности создать транзакцию, которая «объединяла» бы действия — обычно операторы SQL — с использованием нескольких соединений.
В архитектуре «клиент—сервер» использование однофазных локальных транзакций не вызывает никаких трудностей до тех пор, пока не используются распределенные БД, но последнее встречается довольно редко. Программист в коде клиентского приложения устанавливает соединение с СУБД, явно или неявно начинает локальную транзакцию, выполняет те или иные действия, завершает транзакцию и, если она была последней и все нужные действия уже выполнены, разрывает соединение с СУБД.
Если же используется распределенная БД — другими словами, в контексте одной транзакции должны меняться данные сразу в нескольких БД, — то для решения этой задачи многие производители СУБД обеспечили возможность задания транзакции, выполняемой для нескольких БД этого типа. Такие операции можно условно назвать «локальными транзакциями с двухфазным завершением».
В принципе его можно трактовать как стандартное средство решения проблемы управления транзакциями с двухфазным завершением, не ограниченное возможностями той или иной конкретной реализации СУБД и позволяющее включать в одну распределенную транзакцию разнотипные СУБД, причем стандартным образом.
Поскольку протокол XA по определению является протоколом взаимодействия системных приложений — менеджера транзакций и менеджера ресурсов, то прикладному программисту нет необходимости знать детали этого протокола. Протокол XA — «внутренняя кухня» технологий создания распределенных систем, в том числе J2EE и JDBC.
Итак, глобальными называются транзакции, которые управляются внешним по отношению к СУБД координатором транзакций. Глобальные транзакции могут завершаться как в однофазном, так и в двухфазном режимах.
Транзакции и компонентная модель EJB
Компонентная модель EJB (Enterprise JavaBeans) предназначена для быстрого и качественного создания серверов приложений как основной части распределенных систем. Применительно к теме, затронутой в данной статье, нас будут интересовать два вида EJB-компонентов — session-компоненты с состоянием и entity-компоненты (чтобы окончательно не сбивать читателя с толку с помощью различной их трактовки в разных версиях EJB, будем понимать entity-компоненты в терминах EJB 2.x).
Session-компонент с состоянием — это компонент, который создается на стороне сервера как представитель конкретного клиента, и его задачей является реализация бизнес-логики системы на стороне сервера приложений. Вызов методов этого компонента выполняется (в подавляющем большинстве случаев) в контексте глобальных объектных транзакций. Если состояние этого компонента не нужно сохранять в БД в соответствии с обычной транзакционной логикой, то программисту ничего делать не надо.
Другое дело, если он хочет сохранить состояние создаваемого объекта. Технология EJB не обеспечивает этого автоматически — об этом должен позаботиться сам программист. Обычно для упомянутой цели используется API JDBC, а именно: в коде компонента разработчик создает соединение с БД, начинает локальную транзакцию, задает нужные SQL-операторы, завершает транзакцию (или транзакции) и разрывает соединение.
На самом деле в таком режиме все только выглядит просто. Проблема состоит в том, что разработчик компонента сам не знает, в какой глобальной объектной транзакции участвует данный компонент, и команды управления локальными транзакциями, помещенные в его код, могут противоречить логике работы сервера приложения, который строится из многих составляющих, причем некоторые из них одновременно могут участвовать в одной и той же глобальной транзакции. Чтобы избежать такого рода конфликтов, среда исполнения EJB-компонентов либо запрещает применять команды управления локальными транзакциями в режиме использования транзакций глобальных, либо перехватывает такие команды и игнорирует их, а управление локальными транзакциями на уровне СУБД берет на себя менеджер глобальных транзакций. Другими словами, локальная транзакция на уровне объекта Connection API JDBC начинается и заканчивается не тогда, когда этого требуют правила JDBC или даже сам программист, а тогда, когда соответствующие команды даст глобальный координатор транзакций. Это очень облегчает жизнь прикладному программисту — обычно он просто не помещает в код session-компонентов с состоянием никаких команд управления транзакциями из состава JDBC API. Но за такие удобства для прикладного разработчика должны «расплачиваться» системные программисты — управление соединениями в распределенных системах самым тесным образом связано с управлением глобальными транзакциями.
Еще интереснее обстоит дело с entity-компонентами.
Entity-компоненты по определению являются кэшированным объектным представлением данных из БД на уровне сервера приложения и управляются командами менеджера глобальных транзакций. Несколько упрощая, можно сказать так: при начале глобальной объектной транзакции для данного конкретного компонента его состояние синхронизируется с состоянием БД путем чтения информации из нее (SQL-команда SELECT), при завершении глобальной транзакции измененное в процессе транзакции состояние компонента записывается в БД (SQL-команда UPDATE).
Особенностью entity-компонентов в модели EJB является автоматизация управления состоянием компонента. Программист, создавая компонент, работает с логическими сущностями — как на уровне Java-кода самого компонента, так и на уровне БД. Эта совокупность логических представлений называется «абстрактной схемой» компонента. Для удобства работы с компонентами при таком подходе автору компонента нельзя использовать конкретные названия физических полей в реальной базе данных хотя бы потому, что автор компонента этих названий может просто не знать. То есть использовать при создании компонента язык SQL нельзя. Для тех случаев, когда без него обойтись невозможно, в EJB создан специальный язык, похожий на упрощенный SQL, — Query Language (QL). Операторы QL должны быть переведены в соответствующие SQL-операторы либо на стадии развертывания компонента, либо динамически, в процессе работы. Все это опять-таки увязывает между собой такие разные фрагменты технологий, как управление соединениями, транзакциями, поддержку QL, особенности объектно-реляционного отображения entity-компонентов и многое другое.
После такого общего обзора можно вернуться с небес на землю и создать простое веб-приложение, «общающееся» с БД.
Создание БД и подготовка ее к использованию
В общем случае при использовании WAS CE/Geronimo процесс создания и подготовки БД к работе состоит из следующих шагов:
- запуск (или поиск в сети) нужного сервера БД;
- создание на нем экземпляра БД как логической совокупности таблиц, индексов, представлений, триггеров, хранимых процедур и проч. Для этой цели используются инструменты, поставляемые самим разработчиком СУБД;
- создание пула соединений с этой БД с нужными свойствами и в нужном режиме. Подробно об этом говорилось в предыдущей статье.
В состав WAS CE в качестве одного из сервисов входит СУБД Derby — реализация реляционной БД с открытым исходным текстом. Эта СУБД используется многими сервисами и компонентами WAS CE для решения системных задач, но прикладной программист — особенно для учебных задач — может использовать ее как рабочую СУБД для хранения необходимых данных.
Поскольку СУБД Derby интегрирована в состав WAS CE, использовать ее проще, чем другие СУБД, — в частности, за счет того, что в состав консоли администратора WAS CE входит менеджер управления БД Derby.
В нашем простейшем примере в состав БД (уже существующая БД SystemDatabase) будет входить только одна таблица. Оператор SQL для ее создания имеет такой вид:
Выполнить эту команду можно, набрав ее в поле текста команды менеджера Derby (рис. 1) при выбранной нужной БД (SystemDatabase в данном примере).
Нужные данные можно внести в таблицу с помощью одного или нескольких SQL-операторов INSERT. Для просмотра содержимого таблиц Derby можно задать SQL-оператор SELECT или воспользоваться средствами просмотра содержимого, предоставляемыми менеджером БД Derby.
Если пользователь хочет использовать не существующую, а специально созданную БД, то следует задать имя создаваемой БД и нажать кнопку Create. В этом случае нужно будет создавать, разумеется, пул соединений для этой БД.
Что касается предустановленной БД с именем SystemDatabase, то для нее уже создан пул соединений с именем SystemDatasource и списком свойств, отраженным на рис. 2.
Обратите внимание, что этот пул поддерживает работу в режиме взаимодействия с внешним координатором транзакций и двухфазным завершением.
Использование параметров пула соединений в дескрипторах J2EE-модулей
Об этом подробно говорилось в предыдущей статье, и здесь просто еще раз сформулируем основные положения.
- Важнейшим элементом приложения, использующего БД, является установление связи между пулом и приложением.
- Программист работает с высокоуровневой моделью взаимодействия с СУБД: он получает (обычно с помощью JNDI) доступ к фабрике соединений, роль которой в JDBC играет интерфейс DataSource и производные от него интерфейсы, а затем с помощью вызова метода getConnection() устанавливает логическое соединение с сервером.
- Спецификация J2EE требует, чтобы настройкой занимался не программист, а специалист, реализующий J2EE-роль под названием deployer. Он работает с xml-дескрипторами модулей, из которых строится J2EE-приложение.
- Обычно обращения к пулам соединений с БД выполняются из модулей, которые содержат веб- или EJB-компоненты. Пул соединений трактуется как ресурс J2EE, что приводит к использованию тега в стандартных xml-дескрипторах.
- Специфика реализации практически любого J2EE-сервера требует использования не только стандартного, но и дополнительного xml-дескриптора.
С текстами xml-дескрипторов мы уже знакомы. Основной дескриптор имеет имя web.xml и может содержать следующие строки:
План развертывания WAS CE (специфический для WAS CE дескриптор) имеет имя geronimo-web.xml и может выглядеть так:
Несмотря на то что в большинстве случаев удобнее всего использовать стандартный подход, при котором файлы дескрипторов имеют предопределенные имена (web.xml и geronimo-web.xml) и находятся в каталоге WEB-INF архива веб-приложения (WAR-файла), возможны альтернативные решения, которые зависят от формата создаваемого приложения.
Простые веб-приложения, подобные рассматриваемому в данном примере, можно создавать, а затем развертывать на сервере в виде отдельного WAR-файла. В этом случае специфический для WAS CE xml-дескриптор можно назвать любым именем и хранить его в произвольном месте, не включая в состав war-архива, а при развертывании приложения на сервере просто указать это имя в командной строке, например:
Использование пула на уровне Java-кода
Для простоты приложение будем создавать в виде JSP-документа (пусть он имеет имя my_derby_app.jsp). б?ольшую часть этого документа будет занимать Java-код, HTML-теги понадобятся только для форматирования выводимых данных. Текст вряд ли нуждается в дополнительных пояснениях:
После того как будет создан WAR-файл приложения (который содержит три файла — xml-дескрипторы в подкаталоге WEB-INF и JSP-документ в корневом каталоге), созданное веб-приложение нужно развернуть на сервере с помощью команды deploy.
WAS CE предоставляет разработчикам все необходимое для создания приложений БД, доступ к которым осуществляется с помощью использования интернет-браузера на рабочем месте клиента.
Читайте также: