3. Как портировать приложение
Рассмотрим основные шаги, которые надо предпринять для портирования информационной системы (ИС), написанной на Clipper в среду Informix. Обычно, ИС состоит из нескольких приложений.
Прежде всего, надо убедиться, что портирование приложений возможно в принципе. Для этого надо проанализировать имеющееся приложение на предмет того, не используются ли там какие-то возможности Clipper, которые не реализованы в данной версии драйвера. К таким ограничениям, например, может относиться использование недокументированных вызовов.
Следующий шаг заключается в переносе схемы базы данных и, собственно, данных из файлов (dbf) в сервер Informix. Средства для такого переноса входят в базовую поставку сервера Informix (утилита onload) и существуют в виде свободно распространяемых программ (утилиты преобразования dbf файлов).
Далее надо перекомпилировать существующие приложения на Clipper с использованием Informix Direct Driver for Clipper. Полученные таким образом приложения уже работоспособны с сервером базы данных Informix. Однако, ввиду принципиальных отличий в технологии работы с данными, производительность некоторых программ может быть неудовлетворительной. Для достижения нужной производительности в схему базы данных, возможно, придется добавить некоторые дополнительные индексы на уровне сервера баз данных Informix.
Следует отметить, что на этом этапе уже имеется работающее приложение, причем интерфейс рабочих мест полностью идентичен тому, что было раньше. Следовательно, не требуется переобучать пользователей и менять привычную схему использования ИС.
Дальнейшая миграция ИС заключается в дописывании новых приложений, или переписывании старых. Данный этап может быть растянут по времени. Например, можно вначале переписать только одно приложение, переобучить пользователей, затем другое и т.д. Параллельно с этим можно разрабатывать новые приложения, которые принципиально не могли бы быть реализованы по технологии файл-сервера, например, рабочие места для аналитиков в системе поддержке принятия решений.
Литература
А. Васкевич, Стратегии клиент-сервер
Дж. Ульман. Основы систем баз данных.-М.: Финансы и Статистика, 1983.
К. Дейт, Введение в системы баз данных -М.: Hаука, 1980
Дж. Мартин, “Организация баз данных в вычислительных системах” - М.: Мир, 1980
Дж.Фокс…..
Брукс мл. Мифический человеко-месяц
C.J.Date. Database: A Primer. - Addison-Wesley Publishing, 1983
C.J.Date. An Itroduction to Database Systems. - Addison-Wesley Publishing, 1990
Озкархан Э. "Машины баз данных и управление базами данных",-М.: Мир, 1989
Мейер Д. Теория реляционных баз данных, -М.: Мир, 1987
Смит Дж., Смит Д. "Принципы концептуального проектирования баз данных", -М.: Мир, 1984
Тиори Т., Фрай Дж. Проектирование структуры баз данных, -М.: Мир, 1985
Когаловский М.Р. Технология баз данных на персональных ЭВМ, -М.: Финансы и статистика, 1992.
Codd E.F. A Relational Model For Large Shared Data Banks Communication of ACM, 13:6, 1970, pp. 377-387
M.Stonebraker, D.Moore. Object-Relational DBMSs. The Next Great Wave. Morgan Kaufmann Publishers, San Francisco, 1996
Patrick O’Neil. Database:Principles, Programming and Perfomance, - San Francisco, Morgan Kaufmann Publishers, 1995
Грей П. Логика, алгебра и базы данных, - М.: Машиностроение, 1989
Пин-Шен Чи П. Модель “Сущность-связь” - шаг к единому представлению данных, - СУБД №3, 1995, стр.137-158.
Kent W. A simple guide to five normal forms in relational databases. - Communication of ACM, 26:2, 1983, pp. 120-125
Манифест систем объектно-ориентированных баз данных. М. Аткинсон, Ф. Бансилон, Д. ДеВитт, К. Диттрих, Д. Майер, С. Здоник - Системы Управления Базами Данных, No 4, 1995 стр. 142-155
Л.А. Калиниченко. Стандарт систем управления объектными базами данных ODMG-93: краткий обзор и оценка состояния - Системы Управления Базами Данных N 1, 1996 стр. 102-109
Б.Страуструп . . . . . . .
M.Stonebtraker, D.Moore. Object-Relational DBMSs. The Next Great Wave. Morgan Kaufmann Publishers, San Francisco, 1996
В.Галатенко, А.Гвоздев. Типы и структуры данных в Informix Universal Server. Jet Info/Информационный бюллетень, N12-13, 1997 г.
1) Книга писалась в 1997 году (прим. автора)
2) Достаточно эффективный метод защиты на основе шифрования данных, если он используется в Российской Федерации, должен быть согласован с Российским Законодательством.
3) Здесь и далее при описании примеров, для которых важны принципы, а не детали синтаксиса, автор оставляет за собой право немного отступать от точного синтаксиса тех или иных операторов, чтобы не загромождать примеры несущественными деталями.
4 ) Было бы правильнее говорить не о языке, а об отдельных операторах, так как по предложению CODASYL эти операторы должны были встраиваться в универсальный язык программирования (прим. автора).
5 ) Более подробно об этом можно посмотреть в лекции Е.Кодда, прочитанной при вручении ему Тьюринговской премии.
6 ) Следует отметить, что это не означает принципиальной невозможности иметь в качестве атрибута значения составной типа, например в объектно-реляционных СУБД это можно.
7 ) В нашей реальной жизни это не совсем так - разные дома на одной улице могут обслуживаться разными почтовыми отделениями и, соответственно, иметь разные почтовые индексы, поэтому для точного воспроизведения реальной предметной области надо еще ввести атрибут “номер дома”, но для простоты и ясности примера мы абстрагируемся от этого.
8 ) Поддержка NLS присутствует в продуктах Informix до версии 7.2
9 ) Поддержка GLS присутствует в продуктах Informix начиная с версии 7.2
10) Строго говоря, оператор FOREACH ... END FOREACH не является оператором SQL, а реализуется в прикладной системе на основе SQL-операторов OPEN и FETCH (Прим. автора).
11) Некоторые поля области взаимодействия SQLCA здесь не приведены, так как они в данный момент или не используются, или их использование ограничено. (прим. автора) .
12) Здесь следует сделать одно замечание по терминологии. В некоторых СУБД триггер принадлежит не схеме, не серверу базу данных, а клиентскому приложению. Такой подход тоже, естественно, имеет право на существование, и, более того, используется в инструментальных системах тех СУБД, где триггер является частью схемы. Просто там такие "триггеры" называются несколько более привычно - обработчиками событий.
13) Имеются некоторые ограничения на использование связанных имен. Например, для триггера на удаление связанное имя для нового значения бессмыслено (этого значения просто нет) и, точно так же, бессмысленно связанное имя для старого значения в триггере на вставку.
14) Почти во всех SQL-серверах, в частности, в Informix, есть средства для управления скоростью работы самой программы-сервера. Например, в сервере Informix DS для хранения данных можно использовать физический раздел на жестком диске, можно задавать степень распараллеливания при исполнения пользовательского запроса и т.д. Эти вопросы относятся к администрированию SQL-сервера, а потому будут рассмотрены в соответстующей главе
15) Тем, кто не знаком с алгоритмами быстрого поиска, рекомендуем почитать какую-либо книгу по теории программирования, например, классический трехтомник Дональда Кнута "Искусство программирования для ЭВМ"
16 ) Более аккуратно, следовало бы сказать, что «создается новая переменная (новый экземпляр) специального типа, имеющего некоторую внутреннюю структуру».
17 ) Точнее говоря, копия всех используемых страниц из всех пространств данных, имеющихся в данном экземпляре сервера Informix Dynamic Server (прим. автора).
18 ) Точнее говоря, измененных страниц (прим. автора).
19 ) Допускается, что некоторые параметры могут и отличаться, но существуют строгие правила того, как рассчитывать возможные значения этих параметров. В любом случае, создание архива 0-го уровня после изменения существенных параметров должно считаться правилом хорошего тона.
20) Формат выдачи и набор флажков может меняться от версии к версии, поэтому точную интерпретацию выдачи данной команды следует уточнить в Руководстве по администрированию. Прим. автора.
21 ) Пусть вас не вводят заблуждение колонка Used и значение в 100% для журналов 1..9 - это означает, что в процессе последнего использования они были заполнены на все 100%.
22 ) Более подробное описание обработки событий имеется в системнорй документации
23) Чтобы это работало, пользователей и разработчиков следует, как минимум, проинформировать об этой возможности.
24 ) Напоминаем, что переменная окружения INFORMIXDIR указывает на директорию, в которой расположены файлы текущей инсталляции сервера баз данных Informix.
Предисловие
- 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. Как портировать приложение