logo search
Книга по БД(Вальке А

3.3. Выбор оптимальной конфигурации

Искусству проектирования систем посвящены многие книги [3,4], многие публикации и научные работы. Тем не менее, существует одно правило, которому стоит следовать всегда, но про которое разработчики и проектировщики систем зачастую забывают. Правило это гласит - программная система должна в максимальной степени решать те задачи, для которых она предназначена. Например, банковская система должна обеспечивать операционистов возможностью ввести платежку и вовсе не должна предоставлять возможность поиграть в компьютерные игры.

Поэтому, при реальной разработке программных проектов на основе СУБД (да и не только их) необходимо ответить на следующие вопросы:

  1. Какие рабочие места дорлжны быть в разрабатываемой системе;

  2. Какие функции должно обеспечивать то или иное рабочее место;

Ответ на каждый вопросов должен содержать описание типа рабочего места, список функций, доступных для данного рабочего места, и т.д.

Выбор инструмента для разработки программы‑клиента

В настояшее время очень популярны решения на основе графических операционных систем (обычно 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-технологии.

Когда нужно использовать сервер приложений

При рассмотрении возможных архитектур информационных систем, как один из вариантов был рассмотрен сервер-приложений. На первый взгляд, реализация приложения с использованием сервера приложений требует более объемного кодирования и, как правило, увеличивает время разработки приложения. Тем не менее, во многих случаях использование сервера приложений оправдано и дает эффект. Остановимся более подробно на том, когда выгодно использовать сервер приложений.

  1. Объем пересылаемых данных по сети между клиентом и сервером базы данных велик и, как следствие, производительсность системы в целом низка.

В этом случае можно реализовать сервер приложений, который выполняет обработку большого числа данных непосредственно на компьютере, где находится сервер базы данных. В этом случае нет необходимости передавать по сети большой объем данных и производительность улучшается.

  1. Требуется разработать набор общедоступных процедур, но возможности языка хранимых процедур не удовлетворяют разработчика (например, по причине отсутствия механизмов классов и наследования).

Сервер приложений является обычной программой на некотором языке (например Informix 4GL или NewEra) и, следовательно, из него доступны все возможности, которые есть в этом языке (соответсвенно, 4GL или NewEra). В том числе, пользователь может использовать все преимущества объектно-ориентированного подхода, богатый набор типов данных, событийное управление программой и даже диалоговую пошаговую отладку.

  1. В клиентской программе требуется реализовать действия, выполнение которых на относительно маломощной машине-клиенте требует больших временных затрат.

Исполнение этих действий на другой машине (обычно, в качестве компьютера-сервера используются мощные RISC-машины) позволит сделать приложение более "реактивным", удобным в использовании. При этом приложение будет разрабатываться в одной системе программирования, программисту не потребуется изучать, например, особенности С-компилятора на удаленной машине.

  1. Требуется уменьшить затраты на информационную систему за счет снижения стоимости ресурсов машин-клиентов (клиентов много и очень ресурсоемкие).

Выделение общих кусков программы, выделение общих методов обработки в отдельную программу, размещаемую и исполняемую не на нескольких компьютерах, а только на одном, приведет к снижению общих затрат на аппаратное обеспечение. В сети из 100 персональных компьютеров снижение требований по оперативной памяти на 8 МБт и по жесткому диску на 500 МБт для каждой из персоналок даст выигрыш примерно на $200*100=$20000.

  1. Упрощение, структуризация программного обеспечения

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