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.
Упрощение, структуризация программного обеспечения
Разделение программы на две части, при четком описании интерфейса между ними, позволяет сделать приложение более управляемым и надежным (принцип "разделяй и властвуй"). Увеличенные затраты на разработку могут с лихвой окупиться упрощением каждой из компонент. Сложность программы растет как, примерно, квадрат ее размера и деление программы на две части, при условии четкого разграничения функций и определенного интерфейса, может примерно вдвое упростить программу (линейный рост сложности против квадратичного).
- 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. Как портировать приложение