Н.И. Вьюкова

"Инфосистемы Джет", Москва, niva@jet.msk.su


Введение
Сервер Informix-OnLine Dynamic Server 7.1 и распределенная обработка данных
Целостность распределенных данных
Тиражирование для обеспечения высокой готовности
Доступ к разнородным источникам данных. Шлюз Informix-Enterprise Gateway
Сопряжение Informix с открытой распределенной средой DCE
Компоненты DCE
Informix-DCE/Net и другие инструменты создания приложений для DCE
Продукты Informix и развитие архитектуры клиент-сервер
Базы данных Informix и глобальная информационная среда WWW
Заключение
Литература

Предмет статьи - продукты Informix, поддерживающие различные возможности для создания распределенных приложений. Развивая собственные технологии распределенных вычислений, компания Informix уделяет значительное внимание поддержке стандартов (EDA, DCE, X/Open-XA, OLE и др.), созданию продуктов для сопряжения приложений и баз данных Informix с открытыми распределенными средами.

Введение

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

Перспективность. Даже если изначально ИС строится на основе одной локальной базы данных, ориентация на распределенные технологии более перспективна с точки зрения последующего развития и расширения ИС, возможностей ее интеграции с внешними информационными ресурсами.

Экономичность. Для машин среднего класса характерно более оптимальное соотношение цена/производительность, чем для мэйнфреймов.

Доступность данных. Технологии тиражирования в распределенных базах данных позволяют обеспечить более высокую степень доступности данных.

Структура организации. ИС предприятия или учреждения, имеющего филиалы, должна состоять из географически удаленных узлов.

Исторические причины. Проектируемая ИС создается на основе существующего парка из нескольких вычислительных машин и/или баз данных.

В статье рассматриваются технологические решения, предлагаемые компанией Informix Software, Inc. для организации распределенных ИС:

Хранение и согласованная обработка данных на множестве серверов СУБД Informix, поддержка распределенных транзакций.

Интеграция баз данных Informix с другими источниками данных посредством шлюза Informix-Enterprise Gateway.

Погружение приложений, использующих интерфейс ODBC, в открытую среду распределенных вычислений DCE.

Поддержка многоуровневых архитектур клиент-сервер.

Средства доступа к базам данных Informix в среде WWW.

Список затрагиваемых в статье продуктов с краткими характеристиками возможностей приведен в Таблице 1.

Таблица 1. Продукты Informix и распределенные информационные технологии

Informix-OnLine Dynamic Server ( OnLine DS )

  • прозрачный доступ к удаленным серверам СУБД Informix;
  • оптимизация распределенных запросов;
  • оперативная обработка распределенных транзакций;
  • тиражирование данных для обеспечения высокой готовности.

Informix-Enterprise Gateway

  • доступ к разнородным источникам данных

Informix-DCE/Net

  • включение приложений Informix в открытую среду распределенных вычислений Distributed Computing Environment ( DCE ).

Informix-TP/XA

  • включение СУБД Informix в среду, управляемую монитором транзакций.

Informix-NewEra

  • фрагментация приложений

Informix Web Interface Kit

  • доступ к базам данных Informix в среде WWW

Сервер Informix-OnLine Dynamic Server 7.1 и распределенная обработка данных

СУБД Informix, первая версия которой была реализована в 1980 г., традиционно применялась для создания прикладных систем малых и средних предприятий; но, начиная с версии 6.0, сервер Informix-OnLine Dynamic Server (OnLine DS) приобрел ряд качеств, характерных для современных промышленных СУБД, которые используются для реализации крупных проектов. Среди важнейших новых свойств сервера Informix-OnLine DS отметим:

  • многопотоковую архитектуру, обеспечивающую высокую и масштабируемую производительность для симметричных многопроцессорных архитектур (SMP). В настоящее время объявлена новая модель сервера Informix-OnLine Extended Parallel Server (OnLine XPS), предназначенная для архитектур с массовым параллелизмом (MPP) и слабосвязанных (кластерных) систем;
  • средства параллельной обработки запросов, которые многократно ускоряют выполнение сложных запросов, запросов, включающих сортировку и соединение, сканирование больших таблиц, а также операции загрузки и выгрузки таблиц;
  • ряд средств для обеспечения высокой готовности данных;
  • инструменты динамического администрирования, позволяющие выполнять большинство административных действий в оперативном многопользовательском режиме.

Подробное техническое описание архитектуры и возможностей сервера Informix-OnLine DS 7.1 можно найти в [1]; здесь мы остановимся лишь на средствах распределенной обработки данных. Приложение Informix может подключаться одновременно к нескольким базам данных, хранящимся на разных серверах. Данные из множественных источников могут произвольным образом объединяться в запросах, участвовать в транзакциях. В серверных продуктах Informix поддерживается ряд механизмов, которые обеспечивают:

  • независимость программ от фактического местонахождения таблиц;
  • эффективную обработку распределенных запросов;
  • целостность распределенных данных;
  • повышенную степень доступности данных.

Прозрачность расположения данных

В распределенной среде желательно иметь свободу перемещения данных с одного сервера на другой. Администратор может перенести или сдублировать таблицу или целую базу данных, например, для того, чтобы приблизить информацию к ее основным потребителям или для улучшения баланса загрузки серверов. Механизм синонимов, поддерживаемый Informix-OnLine DS, позволяет экранировать от прикладных программ изменения местоположения данных.

Оптимизация распределенных запросов

Оптимизатор запросов Informix-OnLine DS определяет оптимальный способ выполнения запроса, оценивая стоимость необходимых ресурсов. Для оценок используется статистика о содержимом таблиц, сбором которой управляет администратор, а если статистика отсутствует, то применяются эвристические методы.

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

Целостность распределенных данных

Согласованные изменения распределенных данных, хранящихся на разных серверах Informix, выполняются в рамках распределенных транзакций (Рис. 1), для реализации которых используется оптимизированный вариант протокола двухфазной фиксации транзакций (2PC).

CONNECT TO stores@italy
   BEGIN WORK
      UPDATE stores:manufact
      SET manu_code = "SHM"
      WHERE manu_name = "Shimara"
      INSERT INTO stores@france:manufact
      VALUES ("SHM", "SHIMARA", 30)
      INSERT INTO stores@australia:manufact
      VALUES ("SHM", "SHIMARA", 30)
COMMIT WORK


      Рисунок 1.
      Пример распределенной транзакции, которая состоит из локальных транзакций на серверах italy, france, australia. Распределенная транзакция фиксируется только в том случае, если зафиксированы все локальные транзакции. Если хотя бы одна из локальных транзакций была прервана, то выполняется откат всех остальных.

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

Предусмотрен механизм разрешения тупиковых ситуаций, возникающих, например, когда работают два пользователя, и каждый блокирует объект данных, необходимый другому. При обработке распределенных запросов используется параметр конфигурации, задающий время, в течение которого Informix-OnLine DS ожидает разблокирования объекта. По истечении этого периода пользователю выдается сообщение об ошибке.

Практическая применимость решений, основанных на распределенных транзакциях, ограничивается тем, что они подразумевают одновременную доступность всех серверов, а также высокую надежность и хорошую пропускную способность сетевых соединений. Поэтому эксперты рекомендуют (см., например, [2]) везде, где распределенные транзакции не являются абсолютно необходимыми, использовать тиражирование (репликации) данных. Пример задачи, где разумно применение тиражирования, а не распределенных транзакций - поддержание согласованных копий таблицы на нескольких серверах.

Тиражирование для обеспечения высокой готовности

В Informix-OnLine DS 7.1 поддерживается только одна модель тиражирования - полное отображение данных с основного сервера на вторичный для обеспечения высокой доступности данных. В последующих версиях серверных продуктов Informix планируется реализация более развитых средств, которые позволят решать широкий круг задач распределенной обработки данных.

В конфигурации серверов Informix-OnLine DS с тиражированием выделяется один основной и один вторичный сервер. На основном сервере выполняется и чтение, и обновление данных, а все изменения передаются на вторичный сервер, который доступен только на чтение (Рис. 2). В случае отказа основного сервера вторичный автоматически или вручную переводится в режим доступа на чтение и запись (Рис. 3). Прозрачное перенаправление клиентов при отказе основного сервера не поддерживается, но оно может быть реализовано в рамках приложений.

Рисунок 2.
Тиражирование. Основной сервер доступен на чтение и запись, вторичный - только на чтение.

Рисунок 3.
Когда основной сервер выходит из строя, вторичный переводится в режим доступа на чтение, и на запись.

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

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

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

Доступ к разнородным источникам данных. Шлюз Informix-Enterprise Gateway

Шлюз Informix-Enterprise Gateway (см. также [1]) обеспечивает для инструментальных средств и приложений баз данных, выполняемых под управлением операционной системы UNIX или Microsoft Windows, доступ к информации, хранящейся в базах данных более чем 60 типов, среди которых - Oracle, Sybase, Ingres, Adabas, IMS, VSAM, CA-IDMS. Поддерживаемые операционные системы - UNIX, MVS, VM, VMS. Доступ реализуется при помощи программных продуктов Enterprise Data Access SQL (EDA/SQL) компании Information Builders. Шлюз позволяет выполнять распределенные соединения таблиц из разнородных баз данных и импортировать "чужие" данные в базы данных Informix.

Enterprise Gateway выполняется как процесс сервера баз данных Informix, который конвертирует запросы клиентов Informix в запросы EDA/SQL. Когда от клиентского приложения поступает инструкция SQL или удаленный вызов процедуры, предназначенный для Enterprise Gateway, то он перенаправляется на EDA/SQL Server, который обращается к соответствующим реляционным или нереляционным источникам данных. Данные, полученные от EDA/SQL Server, Enterprise Gateway возвращает приложению клиента.

Конечные пользователи обращаются к Enterprise Gateway так же, как к серверу баз данных Informix. Доступ на чтение и запись осуществляется посредством инструкций SQL, отвечающих стандарту синтаксиса ANSI-92 SQL, или удаленных вызовов процедур (RPC - Remote Procedure Call).

Доступ посредством RPC обеспечивается для инструментов разработки и приложений Informix, а также третьих фирм. Удаленные вызовы процедур EDA/SQL выглядят как обращения к хранимым процедурам, поэтому для их использования в приложения требуется внести лишь минимальные изменения. RPC позволяют выполнять операции чтения и записи и возвращать многострочные результаты.

Для обработки многострочных наборов данных, полученных в результате выполнения RPC или инструкции SQL, в Enterprise Gateway поддерживается механизм роллируемых курсоров (scroll cursors), который позволяет осуществлять прямой и обратный просмотр наборов данных.

Enterprise Gateway поддерживает централизованное управление пользовательскими идентификаторами и паролями, отображая их из среды Informix в среду EDA/SQL. EDA/SQL Server обеспечивает безопасность путем взаимодействия с подсистемами безопасности соответствующих ОС. Например, в MVS осуществляется взаимодействие с подсистемами безопасности RACF, ACF2 и CA-Top Secret.

Сопряжение Informix с открытой распределенной средой DCE

Стандарт Distributed Computing Environment (DCE), предложенный в 1990 г. фондом открытого программного обеспечения (Open Software Foundation - OSF), представляет собой набор спецификаций программных сервисов, которые позволяют объединять аппаратно-программные платформы разных поставщиков в интегрированную распределенную вычислительную среду [3]. Этот стандарт поддержан такими производителями, как Hewlett Packard, Digital Equipment, IBM, Sun, которые реализовали соответствующие сервисы для своих операционных систем; число реализаций DCE для других платформ постоянно увеличивается.

Стандарт DCE привлекает все возрастающее внимание как со стороны индустриальных аналитиков, так и со стороны потенциальных пользователей. Но, для того чтобы организации реально могли воспользоваться преимуществами интеграции, т. е. создавать приложения для DCE и переносить в эту среду существующие приложения, необходимы соответствующие инструментальные средства. Компания Informix Software, опираясь на лицензированные технологии своего партнера - компании Open Horizon - реализовала программный продукт Informix-DCE/Net [4]. Informix-DCE/Net открывает доступ к сервисам DCE для всех инструментальных средств Informix, а также любых приложений или инструментальных комплексов от независимых поставщиков, которые используют стандартные вызовы интерфейса ODBC (Рис. 4).

Идея DCE заключается в том, чтобы заставить неоднородную децентрализованную распределенную вычислительную среду функционировать как единый логический вычислительный ресурс. Сервисы DCE призваны экранировать от распределенного приложения, выполняющегося в такой среде, внутреннюю сложность сетевого вычислительного комплекса. DCE содержит:

  • сервис безопасности;
  • сервис директорий (сервис имен);
  • удаленные вызовы процедур;
  • библиотеку потоков;
  • распределенный файловый сервис;
  • распределенный сервис времени.

Ниже описаны перечисленные компоненты DCE и практические аспекты их использования в Informix-DCE/Net.

Компоненты DCE

Сервис безопасности. Сервис безопасности - ключевая компонента в реализации взаимодействий клиент-сервер в среде DCE. Основные функции, предоставляемые сервисом безопасности, - аутентификация, реализуемая средствами Kerberos, проверка полномочий и шифрование. Удаленные вызовы процедур DCE тесно интегрированы с сервисами безопасности, что позволяет обнаруживать нарушения целостности передаваемых сообщений и обеспечивать их конфиденциальность.

Informix-DCE/Net использует все средства обеспечения безопасности, предоставляемые DCE. Например, для каждого приложения клиент-сервер администратор может задать один из пяти уровней защиты:

  • Защита пересылаемых данных только при установлении соединения клиента с сервером.
  • Защита данных только на начальном этапе выполнения удаленного вызова процедуры, когда сервер впервые получает запрос.
  • Гарантии подлинности источника данных. Проверяется, что все поступающие на сервер данные получены от определенного клиента.
  • Гарантии подлинности источника и целостности данных. Проверяется, что отправленные данные не были изменены.
  • Гарантии подлинности источника, целостности и конфиденциальности данных. Выполняются проверки, предусмотренные на предыдущем уровне, и осуществляется шифрование всех пересылаемых данных.

Сервис аутентификации DCE, поддерживаемый Informix-DCE/Net, существенно улучшает характеристики безопасности распределенной среды, упрощая в то же время жизнь как пользователям, так и административному персоналу. Достаточно иметь единое входное имя и пароль для DCE, чтобы обращаться к любой погруженной в эту среду базе данных. При запуске приложения Informix-DCE/Net запрашивает аутентификационную информацию пользователя у DCE и подключает его к требуемой базе данных.

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

С развитием средств управления полномочиями пользователей DCE, Informix-DCE/Net будет обеспечивать более совершенную поддержку безопасности для среды клиент-сервер. Например, администратор сможет ставить в соответствие группы пользователей DCE ролям (или их эквивалентам) в базах данных. Так, для того чтобы описать привилегии доступа к базе данных для сотрудников бухгалтерии, ему достаточно:

  • создать в DCE группу пользователей bookkeeper;
  • описать соответствующую роль (т. е. совокупность привилегий доступа к таблицам) в базе данных;
  • поставить в соответствие этой роли группу пользователей Bookkeeper.

Сервис директорий. Назначение этого сервиса - обеспечить именование ресурсов и предоставить пользователям и приложениям прозрачный доступ к ресурсам по именам. Выделяются два уровня сервиса директорий - локальный и глобальный. Локальный сервис обеспечивает именование в рамках так называемых ячеек DCE, где под ячейкой понимается группа пользователей, систем и ресурсов, объединенных производственной и/или территориальной общностью. Глобальный сервис директорий объединяет ячейки DCE в единую среду именования на основе промышленного стандарта директорий X.500.

Informix-DCE/Net использует локальный сервис директорий для хранения имен и фактических местоположений баз данных. Таким образом, в приложении достаточно указать фиксированное DCE-имя базы данных (например finance), которое не придется изменять при перемещении базы данных на другой сервер.

Удаленные вызовы процедур (Remote Procedure Call - RPC). Модель удаленных вызовов процедур в DCE расширяет модель традиционного процедурного программирования, позволяя осуществлять вызовы процедур на удаленных серверах так же просто, как вызовы локальных процедур. При этом, сервисы представления RPC маскируют различия в способах представления данных на разных машинах.

Informix-DCE/Net реализует все сетевые коммуникации посредством DCE RPC. Благодаря совместимости DCE RPC с большим числом операционных систем, доступ к базам данных не зависит от используемых аппаратно-программных платформ. Независимость DCE RPC от сетевых протоколов позволяет развертывать приложения DCE в сети любого типа.

Библиотека потоков. Механизм потоков - это средство для реализации параллельного выполнения нескольких действий в рамках одного приложения. Прикладной программный интерфейс (API) потоков DCE, совместимый со стандартом POSIX, позволяет создавать и контролировать в пределах процесса множество потоков выполнения, синхронизировать их доступ к глобальным данным.

Как клиентская, так и серверная части Informix-DCE/Net используют средства асинхронной обработки, предоставляемые механизмом потоков. Приложение может выполнять одновременные подключения к нескольким базам данных, причем, благодаря универсальности интерфейса ODBC, эти базы данных могут относиться к СУБД разных типов. Разработчику приложений не придется для этого вникать в тонкости многопотокового программирования - управление потоками, реализующими множественные подключения, выполняет клиент Informix-DCE/Net.

Распределенный файловый сервис (Distributed File Service - DFS). Сервис DFS специфицирован как подсистема DCE, поскольку он состоит из ряда приложений и демонов, которые в совокупности реализуют глобальную файловую систему, доступную всем ячейкам DCE.

Распределенный сервис времени. Сервис времени обеспечивает точную отказоустойчивую синхронизацию системных часов в пределах как локальных, так и глобальных сетей. Сервис времени необходим для работы сервисов безопасности и директорий.

Informix-DCE/Net и другие инструменты создания приложений для DCE

Существует множество разнообразных инструментальных средств для создания приложений клиент-сервер в среде DCE. Наиболее универсальный способ заключается в непосредственном использовании программных интерфейсов DCE при написании приложений на языках C/C++. Однако для этого необходимо изучение примерно 150 различных DCE API, и к проекту невозможно без переобучения привлечь разработчиков, имеющих навыки программирования на других языках 3GL, например КОБОЛ, или на языках 4GL.

Существуют инструментальные средства, которые скрывают сложность программных интерфейсов DCE, автоматически генерируя коммуникационные коды для клиентской и серверной машин. Это упрощает программирование, но требует переноса коммуникационных кодов на целевые машины с последующей компиляцией и сборкой приложения, и эту процедуру приходится производить всякий раз, когда нужно внести какое-либо изменение. К тому же эти инструменты ориентированы на создание трехзвенных приложений клиент-сервер, что оправдано не во всех случаях; например, не имеет смысла преобразовывать к трехзвенной архитектуре приложения Excel или Visual Basic, которые извлекают данные из БД для анализа, построения диаграмм и т. п.

Informix-DCE/Net предлагает альтернативную методику построения приложений клиент-сервер для DCE, основанную на применении широко распространенного интерфейса доступа к базам данных ODBC. Программное обеспечение Informix-DCE/Net позволяет развернуть в среде DCE любое приложение или инструментальное средство, использующее интерфейс ODBC. Таким образом, инструментами для создания DCE-приложений становятся многие популярные системы, PowerBuilder, Visual Basic, SQLWindows, Informix-NewEra, поскольку с их помощью можно строить приложения на основе ODBC.

Любое уже существующее ODBC-приложение без всяких изменений, перекомпиляции и пересборки переносится в среду DCE, получая возможность пользоваться ее преимуществами. Например, в приложении Visual Basic, перенесенном в DCE, можно воспользоваться средствами обеспечения конфиденциальности пересылаемых по сети данных. Достаточно установить соответствующее значение некоторой переменной окружения, чтобы включить режим шифрования запрашиваемой из БД информации, причем это будет осуществляться прозрачным для конечного пользователя образом.

Архитектура Informix-DCE/Net

На Рис. 4 приведена архитектура 2-звенной прикладной среды клиент-сервер на основе Informix-DCE/Net. Использование Informix-DCE/Net возможно и в рамках 3-звенных прикладных систем, включающих мониторы транзакций.

Рисунок 4.
Конфигурация прикладной или инструментальной среды типи клиент-сервер, использующий Informix-DCE/NET для погружения в DCE.

На машине-клиенте на верхнем уровне выполняется приложение, которое посылает запросы к базе данных, используя вызовы ODBC. Вызовы направляются менеджеру драйверов ODBC, который обычно передает их для выполнения одному из драйверов ODBC для конкретной СУБД. Такие драйверы существуют для всех промышленных СУБД: Informix, Oracle, Sybase, DB2 и др. В конфигурации на Рис. 4 менеджер обращается не к драйверу, а к клиентской компоненте Informix-DCE/Net.

Клиентская компонента Informix-DCE/Net - небольшой программный слой, который воспринимает вызовы ODBC, упаковывает их и передает по сети, используя удаленные вызовы процедур DCE. Informix-DCE/Net для Windows реализован в виде динамически загружаемых библиотек (DLL), поэтому при переносе Windows-приложений в среду DCE не требуется их перекомпиляция или пересборка.

На клиентской машине должно выполняться программное обеспечение DCE. Для Windows 3.1 имеется реализация PC-DCE, доступная от компаний Gradient или IBM. Реализации DCE для других платформ доступны от компаний IBM, HP, DEC, Transarc; многие поставщики аппаратных платформ встраивают сервисы DCE в свои версии ОС UNIX.

Поскольку DCE не зависит от сетевого протокола, то Informix-DCE/Net может работать практически с любым типом сети.

На серверной машине также должно выполняться программное обеспечение DCE. Для формирования ячейки DCE необходим доступ к сервису безопасности и локальному сервису директорий. Соответствующие серверы могут работать на той же машине, где находится сервер баз данных, но обычно из соображений защиты административной информации и повышения производительности их располагают где-либо еще.

Серверная компонента Informix-DCE/Net состоит из двух элементов:

  • универсального для всех СУБД модуля, который распознает поступающие по сети вызовы и возвращает запрошенные данные клиентам;
  • набора специфичных для используемых СУБД модулей (драйверов), которые преобразуют вызовы ODBC в вызовы, воспринимаемые программными интерфейсами СУБД (Database Program Interface - DPI).

При переходе от одного типа СУБД к другому или при добавлении еще одной СУБД администратору достаточно заменить (добавить) в конфигурации только библиотеку Informix-DCE/Net для требуемого типа СУБД.

Итак, Informix-DCE/Net предлагает простое решение для проблемы переноса приложений клиент-сервер в среду DCE. DCE - широко принятый стандарт, цель которого - обеспечить в разнородной сетевой среде те преимущества, которых пользователи и администраторы в значительной мере лишились при переходе от мэйфреймов к распределенным конфигурациям. DCE предоставляет единообразные способы обеспечения безопасности, сервис именования ресурсов, однородные способы передачи данных (RPC), управление входными именами, паролями и группами пользователей, поддерживает для всех систем единое время и единый доступ к файловым ресурсам. Средства управления потоками позволяют в рамках одного приложения одновременно работать с несколькими базами данных, т. е. реализуют истинную многозадачность в ОС Windows.

Продукты Informix и развитие архитектуры клиент-сервер

Выше рассматривались аспекты распределенных вычислений, связанные с хранением данных в множественных (однородных или разнородных) источниках данных, а также организация взаимодействия с БД в приложениях клиент-сервер в среде DCE. Настоящий раздел посвящен еще одному аспекту организации распределенных приложений - совершенствованию архитектуры клиент-сервер, построению многозвенных приложений [5].

Все инструменты разработок, предлагаемые Informix, предназначены для создания приложений клиент-сервер. В классической архитектуре серверная часть реализует манипуляции с данными БД, а их обработка и интерфейс с пользователем осуществляется клиентской машиной. Однако обработка больших массивов данных и сложные виды обработки, характерные для приложений поддержки принятия решений, могут перегрузить клиентскую машину и замедлить выполнение приложения. Неэффективно также пересылать большие массивы данных от сервера к клиенту.

Механизм хранимых процедур, реализованный во всех промышленных базах данных и, в частности, в СУБД Informix, позволяет решать эти проблемы за счет частичного переноса вычислительной нагрузки на сервер баз данных. Но такое решение нельзя считать полностью удовлетворительным, поскольку языки хранимых процедур, во-первых, имеют специфический синтаксис, что усложняет программирование и ограничивает переносимость приложений, во-вторых, зачастую предлагают лишь ограниченные вычислительные возможности.

Сопряжение приложений Informix с мониторами транзакций

Более гибкий подход к достижению баланса загрузки - реализация трехзвенных приложений клиент-сервер под управлением мониторов транзакций. Мониторы транзакций снимают нагрузку как с клиентских машин, так и с серверов баз данных, возлагая на себя управление транзакциями и предоствляя средства для реализации многозвенных приложений клиент-сервер, состоящих из клиентских компонентов, серверов приложений и серверов баз данных. В этой модели серверы приложений занимают промежуточное положение; они выполняют прикладные функции, реализуют необходимые для приложений сервисы.

В состав инструментального продукта Informix-ESQL/C входит библиотека C-программ Informix-TP/XA. Эта библиотека обеспечивает для приложений, построенных при помощи Informix-ESQL/C, сопряжение сервера Informix-OnLine DS с менеджерами транзакций, основанными на стандарте X/Open-XA, например TUXEDO System/T [6]. Аналогичную возможность обеспечивает библиотека 4GL-функций Informix-TP/Toolkit для приложений на основе Informix-4GL. Если одна из этих библиотек подключена к приложению, то запросы к серверу баз данных будут направляться к монитору транзакций. Перечислим коротко основные преимущества, предоставляемые мониторами транзакций:

  • Интеграция разнородных СУБД. Монитор транзакций способен выступать в качестве координатора распределенных транзакций между серверами разнородных СУБД, работающих на разных аппаратных платформах. Транзакции реализуются на основе протокола 2PC, обеспечиваются надежные процедуры восстановления при отказе одного (или нескольких) серверов.
  • Эффективное использование системных ресурсов, регулирование баланса загрузки.
  • Масштабируемость, возможность динамического переконфигурирования прикладной среды с учетом изменяющихся потребностей.
  • Высокая доступность данных: при отказе основного сервера запросы перенаправляются к дублирующему серверу.
  • Поддержка различных механизмов идентификации и аутентификации при доступе к приложениям и данным, обеспечение нескольких уровней безопасности.

Построение многозвенных приложений клиент-сервер в среде Informix-NewEra

Приобретение, освоение и развертывание монитора транзакций требует значительных инвестиций, которые не всегда будут оправданы. Инструмент разработок Informix-NewEra 2.0 предлагает в качестве альтернативы средства для так называемой фрагментации приложений [7]. Фрагментация приложения - это распределение множества его прикладных функций на клиентскую и одну или несколько серверных компонент (Рис. 5).

Рисунок 5.
Распределенное приложение, имеющее многозвенную архитектуру клиент-сервер.

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

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

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

Планируется также интеграция с другими системами посредством механизма OLE-автоматизации; например, из приложений Excel или VisualBasic можно будет обратиться к серверным программам NewEra.

Базы данных Informix и глобальная информационная среда WWW

WWW - это информационная система, позволяющая организациям и частным лицам распространять в виде гипертекстовых документов информацию, которую они хотят сделать публично доступной.

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

Приведенные выше примеры показывают, что для реализации многих информационных услуг WWW целесообразно использовать реляционные СУБД. Естественно ожидать также, что сфера применимости баз данных в WWW будет расширяться по мере развития средств безопасности в этой среде и повышения надежности передачи данных. Свободно распространяемые библиотеки Informix-4GL CGI Interface Kit и Informix-ESQL/C CGI Interface Kit, объединенные общим названием Informix Web Interface Kit, позволяют реализовать интерфейс между средой WWW и приложениями Informix. (Informix-4GL и Informix-ESQL/C - языки разработок приложений Informix).

Поясним, как реализуется взаимодействие между базами данных Informix и WWW. Система WWW имеет архитектуру клиент-сервер. Потребители просматривают информацию при помощи программ-клиентов, называемых навигаторами WWW. Навигаторы запрашивают информацию у локальных или глобальных серверов WWW, где поддерживается дерево публикуемых документов. Серверы способны не только предоставлять запрашиваемые документы, но и выполнять внешние приложения, взаимодействуя с ними посредством интерфейса CGI (Common Gateway Interface). Библиотеки CGI Interface Kit как раз и позволяют оформить приложение Informix-4GL или Informix-ESQL/C в виде внешней программы, вызываемой сервером WWW (Рис. 6). Библиотеки содержат функции для чтения входных параметров, полученных от сервера, формирования документа в формате WWW, передачи этого документа серверу. Формируемый WWW-документ может содержать выбранные по запросу клиента данные из БД.

Рисунок 6.
Встраивание приложений Informix в среду WWW.

Заключение

Цель представленнного обзора - охарактеризовать спектр возможностей для реализаций распределенных приложений на основе баз данных и инструментальных средств Informix (см. Таблицу 1).

Наиболее существенные на сегодня технологические пробелы в серверных продуктах Informix, отмечаемые, например, в [2], - это ограниченность средств тиражирования и отсутствие адекватных инструментов для управления сложными конфигурациями распределенных баз данных. Эти направления получат значительное развитие в ближайших версиях серверов Informix.

В дополнение к модели полного тиражирования данных с основного сервера на вторичный предполагается реализация различных моделей дискретного тиражирования, в том числе гетерогенного тиражирования с участием СУБД других типов.

В качестве фундамента для создания комплекса инструментов администрирования Informix выбрана среда TME (Tivoli Management Environment). Новые инструменты позволят осуществлять интегрированное управление всей совокупностью баз данных, невзирая на различия аппаратных платформ и операционных систем. Среди функций администрирования, которые станут теперь доступны на централизованной основе:

  • наблюдение за состоянием серверов, управление конфигурациями;
  • наблюдение за характеристиками производительности серверов;
  • управление реляционными объектами и привилегиями пользователей;
  • управление тиражированием данных;
  • сохранение и восстановление данных;
  • загрузка-выгрузка данных.

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

Следует ожидать, что реализация развитых средств тиражирования и централизованного администрирования выведет распределенные технологии компании Informix в один ряд с технологиями, которые предлагают ее основные конкуренты.

Литература

  1. Н. Вьюкова. Архитектура сервера INFORMIX-OnLine Dynamic Server 7.1 и коммуникационные средства. Jet Info,Вып. 2, 1995.
  2. B. Cameron, S.D. Woodring. Weaving The Dataweb. The Software Strategy Report, Forrester, October, 1994.
  3. N. Leser. Архитектура открытых распределенных систем. Модель OSF DCE. Открытые системы, Вып. 3, 1993.
  4. G. Chung. Informix-DCE/NET Technical White Paper. Informix Systems Journal, Vol. 1, Number 3, July-August 1995.
  5. Г. Ладыженский. Технология "клиент-сервер" и мониторы транзакций. Открытые системы, Вып. 3(7), 1994.
  6. Г. Ладыженский. Система обработки распределенных транзакций TUXEDO. Открытые системы, Вып. 2, 1993.
  7. Application Partitioning with INFORMIX-NewEra. Optimizing Enterprisewide Distributed Computing Architectures. Informix Software, Inc., 1995.