5 ПЕРЕНОС ПРИЛОЖЕНИЙ
И УНАСЛЕДОВАННЫХ ДАННЫХ
В АРХИТЕКТУРУ "КЛИЕНТ/СЕРВЕР"
Одной из наиболее распространенных проблем, связанных с модернизацией эксплуатируемых информационных систем, является применение в них данных, унаследованных от прежних версий и содержащихся, как правило, в форматах настольных СУБД.
Рассмотрим некоторые технические аспекты проблемы использования унаследованных данных применительно к C++Builder.
Унаследованные данные, представляющие собой, как правило, самое ценное из устаревшей информационной системы, довольно редко удается перенести в серверную СУБД безболезненно. Причин тому может быть много: неудачное проектирование данных, нарушенная ссылочная целостность (причины таких нарушений были изложены выше), наконец, ориентация на иные способы' обработки данных, характерные для настольных СУБД и не всегда приемлемые для серверов баз данных.
5.1     Перенос унаследованных данных с помощью Data Migration Wizard
Способов переноса данных может быть несколько. Первый, самый примитивный, и к сожалению весьма распространенный, представляет собой перенос структур данных и самих данных "как есть" с одной платформы на другую с заменой типов данных настольной СУБД на эквивалентные им типы данных сервера. Этой цели служит утилита Data Migration Wizard, входящая в комплект поставки C++Builder. Рассмотрим ее работу на простом примере из двух связанных таблиц. Для этой цели вполне подойдут таблицы CLIENTS.DBF (список клиентов) и HOLDINGS.DBF (список зданий), связанные отношением "один ко многим". Такой пример выбран потому, что таблица CLIENTS содержит графические поля, при переносе которых с платформы на платформу нередко возникают проблемы (в отличие от символьных и числовых полей, для которых обычно можно легко подобрать эквивалентный тип данных). В качестве серверной СУБД используем 90-дневную trial-версию Personal Oracle 7.2 для Windows 95 или Oracle Workgroup Server 7.2 для Windows NT (в принципе подобный пример можно выполнить и с помощью входящего в комплект поставки
80
Перенос приложений и унаследованных данных в архитектуру клиент/сервер
C++Builder локального сервера IB Database). Перед тем как выполнить данный пример, запустим сервер и с помощью входящей в комплект поставки утилиты администрирования сервера (в нашем случае Personal Oracle Navigator) опишем пользователя USER1, от имени которого будут создаваться таблицы, проверив заодно наличие соединения с базой данных (рис. 5.1).
Рис. 5.1. Создание пользователя с помощью Persona/ Oracle Navigator
Далее опишем параметры псевдонима применяемой базы данных (рис. 5.2).
Отметим, что 2: - имя локального сервера Oracle (при работе с Oracle Workgroup Server for Windows NT, расположенным на том же компьютере, на котором находится и C++Builder, можно использовать такое же имя сервера). В случае удаленного сервера следует описать местоположение и доступ к базе данных (имя БД, сетевой протокол, IP-адрес или сетевое имя компьютера) с помощью утилиты SQL*Net Easy Configuration, входящей в комплект поставки серверов Oracle последних версий.
81