- •4.5. Упражнения 67
- •Глава 6. Устройство Informix Dynamic Server 165
- •Глава 7. Эксплуатация информационных систем 177
- •Глава 1 Обзор основных архитектур баз данных
- •1.1. Архитектура на основе разделяемых файлов
- •1.2. Архитектура “Хост-терминал”
- •1.3. Архитектура “Клиент-Сервер”
- •1.4. Архитектура с использованием сервера приложений (трехзвенная архитектура)
- •1.5. Упражнения
- •Глава 2 Модели данных
- •2.1. Уровни восприятия данных
- •2.2. Иерархическая модель данных
- •2.3. Сетевая модель данных
- •2.4. Реляционная модель данных
- •2.5. Объектно-реляционная модель данных
- •Глава 3 Реализация информационных систем на основе продуктов Informix Software
- •3.1. Обзор продуктов Informix
- •3.2. Варианты построения систем
- •Internet/Intranet-конфигурация
- •3.3. Выбор оптимальной конфигурации
- •Глава 4 Математические основы реляционных субд
- •4.1. Основные понятия
- •4.2. Ключи
- •4.3. Основные операции над таблицами и их интерпретация
- •4.4. Нормализация
- •4.5. Упражнения
- •Глава 5 Язык sql
- •5.1. Типы данных, доступные в sql
- •5.3. Основные sql-операторы для доступа и модификации данных
- •5.4. Управление транзакциями
- •5.5. Продвинутые варианты оператора поиска
- •5.5.1. Поиск по нескольким таблицам
- •5.5.2. Устранение повторения данных в операторе select
- •5.5.3. Вычисления внутри оператора select
- •5.5.4. Логические выражения в условии sql-операторов
- •5.5.5. Слияние двух выборок
- •5.5.6. Сортировка выборки
- •5.5.7. Вставка в таблицу нескольких строк одновременно
- •5.6. Использование sql в языках программирования
- •5.7. Программирование сервера базы данных
- •5.7.1. Динамический sql
- •5.7.3. Хранимые процедуры
- •5.7.4. Триггеры
- •5.8. Ограничители (задание целостности на уровне схемы)
- •5.9. Разграничение в sql прав пользователей
- •5.9.1. Права доступа
- •5.9.2. Права на уровне базы данных
- •5.9.3. Права на таблицы
- •5.9.4. Права на хранимые процедуры
- •5.9.5. Кто и как следит за соблюдением прав
- •5.9.6. Механизм ролей
- •5.9.7. Псевдотаблицы (view)
- •5.9.7. Синонимы
- •5.10. Управление одновременным доступом к данным
- •5.10.1. Что бывает, когда несколько человек одновременно пытаются обновить одни и теже данные
- •5.10.2. Открытие базы данных только для себя
- •5.10.3. Блокирование таблицы
- •5.10.4. Механизм блокирования записей и уровни изоляции
- •5.10.5. Управление ожиданием снятия блокировок
- •5.10.6. Тупиковые ситуации
- •5.11. Повышение скорости обработки запросов.
- •5.11.1. Индексы
- •5.11.2. Буферизация журнала транзакций
- •5.11.3. Блокировка на уровне записей и страниц
- •5.11.4. Эффективное построение запросов
- •5.11.5. Сортировка и поиск по коротким полям. Классификаторы
- •5.12. Объектное расширение sql в Informix ds/Universal Data Option
- •5.12.1. Зачем нужна поддержка объектов в серверах бд?
- •5.12.3. Внедрение объектно-ориентированной технологии
- •5.12.4. Реализация объектного подхода в Informix
- •Informix ds/Universal Data Option - объектно-реляционная субд
- •5.12.5. Итак…
- •Глава 6. Устройство Informix Dynamic Server
- •6.1. Внутренняя архитектура dsa
- •6.2. Механизм хранения данных
- •6.3. Инсталляция продукта
- •6.4. Запуск и останов сервера
- •6.5. Работа с русским языком
- •Глава 7. Эксплуатация информационных систем
- •Администрирование серверов баз данных
- •7.2. Обеспечение сохранности данных.
- •7.2.1. Технологии постоянного дублирования
- •7.2.2. Архивация
- •7.2.3. Так как же обеспечить сохранность данных?
- •7.3. Архивирование и восстановление данных
- •7.3.1. Что нужно архивировать
- •7.3.2. Утилиты архивации и восстановления
- •7.3.3. Создание архивов утилитой ontape
- •7.3.4. Восстановление из архивов утилитой ontape
- •7.3.5. Как узнать “когда”?
- •7.3.6. Практические советы
- •7.4. Средства контроля за доступом
- •7.4.1 Как работает аудитинг?
- •7.4.2. Конфигурирование списков протоколируемых событий
- •7.4.3. Задание файлов, запуск и остановка механизма аудитинга
- •Анализ протокола
- •7.4.5. Практические советы или Что делать, если вы хотите…
- •7.5. Реагирование на чрезвычайные ситуации
- •7.6. Мониторинг текущего состояния сервера базы данных
- •7.6.1. Кто работает с сервером базы данных
- •7.6.2. Сколько памяти использует сервер бд
- •7.6.3. Сколько свободного места имеется у сервера бд
- •7.7. Достижение требуемой производительности
- •7.7.1. Как узнать, что ждет некоторый запрос
- •7.7.2. Как выяснять причины падения производительности
- •2. Общие принципы предлагаемой технологии
- •3. Как портировать приложение
Internet/Intranet-конфигурация
Для удаленного доступа к информации, хранящейся на сервере базы данных, конечно же можно использовать сетевые протоколы типа TCP/IP. Однако, что делать в случае, если мы реализуем информационную систему для произвольного пользователя? Например, если речь идет о заказах товарах, то бессмысленно требовать от простых пользователей, чтобы они установили на своих компьютерах спеуиальную программу‑калиента. Для подобного рода задач, кстати, весьма популярных сейчас, нужен “универсальный” клиент, то есть клиент, с помощью которого можно получить доступ к любой информационной системе. В настоящее время существует и де-факто стандарт на подобное взаимодействие - это доступ через Web-браузер по протоколу http. В этом случае надо использовать продукт Informix Universal WebConnect в следующей конфигурации:
+----+-------------+ |+----------------+| Internet/Intranet ||Web-(http)сервер|+---------+--------------+--------..... |+----------------+| +-----+-----+ +-----+-----+ || Univ WebConnect|| |+----+----+| |+----+----+| |+----------------+| || Web || || Web || || сервер IDS || || browser || || browser || |+----------------+| |+---------+| |+---------+| +------------------+ +-----------+ +-----------+ Windows-станция Macintosh
Рис. 3.12. Сетевая конфигурация для доступа к данным по http-протоколу.
В этом случае на сервере базы данных хранятся и формы доступа, и собственно информация. Клиент, имея на своем компьютере установленный Web-браузер получает доступ к Web-(http-)серверу, и запрашивает какие-то данные. Universal WebConnect получает данный запрос, запрашивает у сервера баз данных форму для показа, собственно данные, переводит все это в стандартный вид и возвращает Web-серверу. Web-сервер передает полученные данные пользователю, который видит их через свой Web-браузер.
Интересно отметить, что в данном случае Universal WebConnect выступает одновременно и как программа‑сервер, и как программа‑клиент. Клиентом данная программа является по отношению к серверу базы данных, а сервером - по отношению к Web-браузеру.
3.3. Выбор оптимальной конфигурации
Искусству проектирования систем посвящены многие книги [3,4], многие публикации и научные работы. Тем не менее, существует одно правило, которому стоит следовать всегда, но про которое разработчики и проектировщики систем зачастую забывают. Правило это гласит - программная система должна в максимальной степени решать те задачи, для которых она предназначена. Например, банковская система должна обеспечивать операционистов возможностью ввести платежку и вовсе не должна предоставлять возможность поиграть в компьютерные игры.
Поэтому, при реальной разработке программных проектов на основе СУБД (да и не только их) необходимо ответить на следующие вопросы:
Какие рабочие места дорлжны быть в разрабатываемой системе;
Какие функции должно обеспечивать то или иное рабочее место;
Ответ на каждый вопросов должен содержать описание типа рабочего места, список функций, доступных для данного рабочего места, и т.д.
Выбор инструмента для разработки программы‑клиента
В настояшее время очень популярны решения на основе графических операционных систем (обычно Windows95). Однако алфавитно-цифровые приложения, тем не менее, очень часто являются оптимальным решением. Отметим следующие преимущества решений на основе алфавитно-цифровых приложений.
Когда функциональность рабочих мест строго определена (имеется некоторое количество рабочих форм для ввода/вывода информации, никакие дополнительные задачи запускать не требуется), использование АЦ-терминалов не позволит иметь дополнительные задачи, отвлекаться на игры и т.д.;
Если оператор работает за своим рабочим местом очень продолжительное время, то применение АЦ-терминалов следует считать более эргономичным (несмотря на высокое качество современных графических мониторов, они все же оказывают большее воздействие на глаза, нежели алфавитно-цифровые терминалы, а мышь в таких приложенниях не нужна);
Решения на основе АЦ-терминалов не подвержены воздействию вирусов.
Система на основе АЦ-терминала более безопасна в том смысле, что она не содержит (и не может содержать!) дисков, на которые может быть скопирована конфиденциальная информация.
АЦ-приложения могут реально работать в условиях плохой связи.
Для разработки алфавитно-цифровых приложений Informix предлагает продукт Informix-4GL. В тех случаях, когда требуется максимальная эффективность, а интерфейс с пользователем не очень сложен, может быть рекомендован ESQL/C. Таким образом, если рабочее место должно быть реализовано на основе алфавитно-цифрового интерфейса, для реализации такого рабочего места целесообразно использовать Informix‑4GL или Informix ESQL/C.
Для разработки системных программ, то есть программ, которые взаимодействуют с аппаратурой, обеспечивают пересылку файлов между компьютерами по почтовым протоколам и т.д., и при этом требуют высокой производительности не ведут интенсивного диалога с пользователем, можно рекомендовать использовать продукт ESQL/C. Возможно, использование и Informix‑CLI (то есть ODBC драйверов), но последнее особо целесообразно для задач, которые будут функционировать под управлением MS Windows.
Если же приложение фактически существует, или просто переносится под Informix с, какого-либо ODBC-приложения, например, MS Access, то выбор Informix‑CLI фактически однозначен.
Для разработки графических приложений, работающих под управлением MS Windows, имеет смысл использовать или Informix Dynamic 4GL, или продукцию третьих фирм (SuperNova, VisualC++, Delphi и т.д.). Если графическое приложение будут работать и под MS Windows, и под Unix, то тогда надо использовать многоплатформенную среду разработки, например Informix Dynamic 4GL.
Система для непредсказуемого числа пользователей
В некоторых случаях надо обеспечить доступ к информации не просто большому числу пользователей, а, теоретически, любому жителю страны или даже планеты. Естественная технология доступа в этом случае должна базироваться на мировой сети Internet. Предположим, мы создаем систему резервирования авиабилетов причем система должна обеспечивать покупку билета любому человеку, имеющему кредитную карту и персональный компьютер, подключенный к Internet. Человек, желающий купить авиабилет должен выбрать подходящий рейс, ввести свои данные, номер кредитки, некоторую кодовую информацию (например, PIN-код). Если для такой системы разрабатывать свое собственное специальное приложение‑клиента, то его потребуется устанавливать на каждом компьютере. Вариант с терминальным доступом больше подходит, однако существует более красивое и изящное решение - с использованием Web-технологии.
Когда нужно использовать сервер приложений
При рассмотрении возможных архитектур информационных систем, как один из вариантов был рассмотрен сервер-приложений. На первый взгляд, реализация приложения с использованием сервера приложений требует более объемного кодирования и, как правило, увеличивает время разработки приложения. Тем не менее, во многих случаях использование сервера приложений оправдано и дает эффект. Остановимся более подробно на том, когда выгодно использовать сервер приложений.
Объем пересылаемых данных по сети между клиентом и сервером базы данных велик и, как следствие, производительсность системы в целом низка.
В этом случае можно реализовать сервер приложений, который выполняет обработку большого числа данных непосредственно на компьютере, где находится сервер базы данных. В этом случае нет необходимости передавать по сети большой объем данных и производительность улучшается.
Требуется разработать набор общедоступных процедур, но возможности языка хранимых процедур не удовлетворяют разработчика (например, по причине отсутствия механизмов классов и наследования).
Сервер приложений является обычной программой на некотором языке (например Informix 4GL или NewEra) и, следовательно, из него доступны все возможности, которые есть в этом языке (соответсвенно, 4GL или NewEra). В том числе, пользователь может использовать все преимущества объектно-ориентированного подхода, богатый набор типов данных, событийное управление программой и даже диалоговую пошаговую отладку.
В клиентской программе требуется реализовать действия, выполнение которых на относительно маломощной машине-клиенте требует больших временных затрат.
Исполнение этих действий на другой машине (обычно, в качестве компьютера-сервера используются мощные RISC-машины) позволит сделать приложение более "реактивным", удобным в использовании. При этом приложение будет разрабатываться в одной системе программирования, программисту не потребуется изучать, например, особенности С-компилятора на удаленной машине.
Требуется уменьшить затраты на информационную систему за счет снижения стоимости ресурсов машин-клиентов (клиентов много и очень ресурсоемкие).
Выделение общих кусков программы, выделение общих методов обработки в отдельную программу, размещаемую и исполняемую не на нескольких компьютерах, а только на одном, приведет к снижению общих затрат на аппаратное обеспечение. В сети из 100 персональных компьютеров снижение требований по оперативной памяти на 8 МБт и по жесткому диску на 500 МБт для каждой из персоналок даст выигрыш примерно на $200*100=$20000.
Упрощение, структуризация программного обеспечения
Разделение программы на две части, при четком описании интерфейса между ними, позволяет сделать приложение более управляемым и надежным (принцип "разделяй и властвуй"). Увеличенные затраты на разработку могут с лихвой окупиться упрощением каждой из компонент. Сложность программы растет как, примерно, квадрат ее размера и деление программы на две части, при условии четкого разграничения функций и определенного интерфейса, может примерно вдвое упростить программу (линейный рост сложности против квадратичного).
