СТАТЬЯ
06.09.01

Centura SQLBase Exchange – эффективное средство построения распределенных БД и конвертирования БД

С. А. Большаков

Введение

Развитие Интернета, корпоративных сетей территориально удаленных организаций, а с другой стороны - объемов хранимой информации и сложности ее обработки, стимулирует создание и внедрение новых эффективных механизмов работы с данными. Особое место сейчас занимают технические решения, ориентированные на распределенную обработку и хранение данных. В данной статье рассматривается программный продукт, ориентированный на поддержку технологий и архитектур Распределенных Баз Данных (РБД) – SQLBase Exchange. Ключевым понятием в этих технологиях является понятие репликации БД – совокупности действий и операций, необходимых для поддержания актуальности данных, хранимых в разных узлах сетей. Раздельное хранение, в конечном счете, обеспечивает более высокие характеристики производительности информационных систем и повышает надежность хранения данных. SQLBase Exchange – это программный продукт, ориентированный на построение репликаций БД (статических и динамических), а также на выполнение операций по реализации репликаций.

С другой стороны, высокую актуальность имеют задачи модернизации информационных систем, в частности, связанные с переходом на новые СУБД и платформы программно-технической среды. Несомненно, очень важной среди многих других является задача сопровождения работающих систем в условиях постоянно изменяющихся пользовательских требований, что приводит к динамике информационных структур и возникновению потребности их изменения. Все это связано с необходимостью преобразования структур данных при условии их сохранения в новых или модернизируемых системах (задача конвертирования данных БД). При конвертировании необходимо иметь возможность преобразовывать форматы данных, отбраковывать и запоминать дефектные записи, интегрировать записи из разных таблиц, выполнять вычисления, сохранять, в конечном счете, целостность представления данных в новых БД. Такие возможности, помимо своего основного назначения, также предоставляет рассматриваемый в статье программный продукт - Centura SQLBase Exchange.

Версии и конфигурации SQLBase Exchange

Версии программного продукта Centura SQLBase Exchange соответствуют версиям SQLBase (6.1, 7.0, 7.5), однако функционально они не связаны между собой, если не считать названия и ограничения применения Exchange (по крайней мере, одной из БД, участвующей в репликации, должен быть сервер SQLBase). Различают три конфигурации поставки Centura SQLBase Exchange:

Составляющие программного продукта SQLBase Exchange

Программный продукт представляет собой совокупность программных элементов, включающих: утилиты, динамические библиотеки, компоненты, примеры использования и документацию в электронном виде. Можно выделить три основных составляющих Centura SQLBase Exchange Server:

За счет большого числа специализированных библиотек поддерживается широкий спектр форматов реплицируемых и конвертируемых данных: SQLbase, Oracle, Sybase, Informix, MS SQL Server, Access, AS/400, dBase (и других .dbf форматов) и ODBC.

Репликации и их создание

Для выполнения действий по пересылке данных или их конвертировании из одной БД в другую нужно описать репликацию, которая является фундаментальным понятием РБД. Создание и настройка репликаций выполняется под управлением Replication Studio. Репликация содержит описание следующих составляющих: источника данных (исходная БД -Source); адресата или приемника данных для пересылки (результирующая БД - Target) и описания способов преобразования данных при пересылке, если они нужны (способ взаимного соответствия данных, карта пересылки - Map). На рисунках, расположенных ниже представлены три закладки интерфейса для задания одной конкретной репликации, которое выполняется за три шага.

На рисунке ниже представлена закладка источника данных репликации. Первоначально должен быть задан тип источника (Source Type), здесь фактически указывается тип СУБД, который используется для источника данных репликации (в нашем случае SQLBase). SQLBase Exchange обеспечивает поддержку очень широкого спектра форматов данных для источников и приемников: ограничений практически нет, можно принимать данные даже из текстовых форматов различных стандартов.


Рис. 1. Закладка для задания свойств источника данных.

Для задания источника данных должен быть определен сервер БД (СУБД), база данных, информация для подключения (имя пользователя и пароль, для некоторых СУБД достаточно и имени пользователя), и исходная таблица (или запрос); можно использовать не только конкретную таблицу данных исходной БД, но и задать произвольный SQL запрос. Для этого включается режим "Use Query Language" и пользователь может ввести любой запрос, причем тут же предоставляется возможность и просмотреть его результаты через пункты меню "VIEW" (т.е., фактически его отладить). Таким образом, сложные преобразования данных можно определить уже при задании источника, задавая пересечения таблиц, указывая сложные условия отсеивания записей из результирующей выборки.

На рисунке ниже представлена закладка для настройки приемника данных репликаций. Первоначально должен быть задан тип приемника (Target Type), здесь также фактически указывается тип СУБД, который используется для источника данных репликации (в нашем случае Access 7.0).


Рис. 2.
Закладка для задания свойств приемника данных репликаций.

Далее нужно определить: конкретный сервер БД, базу данных, данные подключения к БД, результирующую таблицу репликации (или имя вновь создаваемой), а также режим обновления данных (Output Mode). Предусматриваются следующие режимы репликации: перезапись таблицы полностью с заданием ее новой структуры; добавление файлов и записей с сохранением или очисткой последних; обновление записей в результирующей таблице по указанным ключевым полям; режим очистки и обновления для связанных таблиц и режим обновления в таблице по заданным выражениям.

После задания источника данных и приемника данных репликации должно быть задано отображение– карта преобразования (она задается с помощью закладки, представленной на рисунке ниже). Окно карты преобразований (Map) разбито горизонтально на две части: верхняя показывает описание структур данных источника, а нижняя часть используется для описания структуры данных приемника. Для входной структуры дано перечисление всех полей источника данных и выделено специальное поле со звездочкой, означающее все его поля. Построение описания приемника может быть выполнено вручную и в режиме drag and drop. Для переноса всех полей источника нужно перетащить звездочку в нижнюю таблицу. При задании полей и их типов выполняется контроль (в соответствии с типом СУБД, выбранным для приемника данных репликации), в поле источника можно задать выражения, которые задаются с помощью удобного визуального редактора выражений. В выражениях могут участвовать: поля источника и приемника, константы, функции, формулы, выражения и даже процедуры на упрощенном языке структурного программирования. Это позволяет задавать сложные преобразования данных при их репликации и конвертировании. В правой части каждого из окон структур данных (и исходного, и результирующего) показаны свойства каждого из выделенных полей структур. Можно сделать необходимые настройки приемника данных, задать значения по умолчанию с использованием выражений и функций. Предусмотрено задание журнала работы пользователя, кодовых страниц кодировки и многих других параметров настройки репликации. Предусматривается также режим сохранения отбракованных записей, которые по тем или иным причинам не могут быть преобразованы для передачи приемнику данных. Можно задать уровни изоляции для подключения к источнику или приемнику данных, что позволяет определить приоритеты выполнения репликаций и режим добавления данных в БД без выключения информационной системы из штатного режима работы.


Рис. 3. Закладка для задания карты пересылки данных.

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

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

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

Выполнение репликации выполняется в ручном или автоматическом режиме. В ручном режиме нужно после создания репликации запустить ее с помощью кнопки или пункта меню в закладке "Map". Для автоматического запуска используется Replication Agent, использование которого рассмотрено ниже.

Пакетная обработка

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


Рис. 4. Настройка пакета репликаций.

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

Организация распределенных БД

Таким образом, для организации работы информационной системы с распределенными БД необходимо описать все возможные репликации и определить порядок и условия их выполнения. Если это выполняется в распределенной сети, то необходим продукт SQLBase Exchange Server, на локальном компьютере достаточно конфигурации SQLBase Exchange Desktop. Порядок выполнения может быть регламентным (в заданные сроки) или автоматическим. В регламентном режиме (например, в периоды связи с удаленными БД) работа по обновлению может быть выполнена вручную с помощью Replication Studio, причем можно запускать отдельные репликации или их пакеты. Для поддержки работы в автоматическом режиме используется Replication Agent, который представляет собой АХ-компонент, на базе которого могут быть построены процедуры для выполнения отдельных и пакетных репликаций. Использование этого компонента возможно с любыми средствами разработки, позволяющими внедрять АХ (VC++, VB, CTD, Delphi, BCPPB и др.). На их базе строится процедура, которая может инициироваться по времени, или из хранимых процедур и триггеров СУБД, в зависимости от требуемых режимов обновления данных в РБД и происходящих их изменениях в частях БД (DELETE, UPDATE или INSERT).

Replication Agent предусматривает использование следующих основных методов:

Replication Agent позволяет обрабатывать в программе агента следующие события:

Replication Agent обладает многочисленными свойствами, основные из них следующие:

Ниже приведен пример функции для выполнения отдельной репликации с использованием методов и свойств Replication Agent. Предварительно предполагается, что в примерах созданы файлы репликаций (*.sbs) и определен объект типа Replication Agent (RepAgent и RepAgent1):

function Replicate ( setName, tgt, src, log )
{
// Задание имени репликации и загрузка репликации
RepAgent.RepSpecFilename=setName;
RepAgent.LoadRepSpec();
//Формирование в динамике имени таблицы для репликации
table=RepAgent.TgtDbTableName;
//Установка имен БД и журналов репликаций
RepAgent.TgtDbName=tgt;
RepAgent.TgtDbTableName=table;
RepAgent.SrcDbName=src;
RepAgent.LogFilename=log;
// Выполнение репликации
RepAgent.Update();
}

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

При организации пакетной обработки необходимо создать специальный массив имен репликаций и выполнить его с помощью специальных функций. Ниже дан пример на Visual Basic для выполнения пакета репликаций.

Dim r As Long
Dim f
Dim i
f = Array("Step1.sbs", "Step2.sbs", "Step3.sbs")
RepAgent1.StartBatch
For i = 0 To 2
  RepAgent1.RepSpecFileName = f(i)
  RepAgent1.LoadRepSpec
  r = RepAgent1.Update
  If r <> 0 Then
    ' incorrect SBS file name or path?
    Exit Sub
  End If
Next i
RepAgent1.CommitBatch

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

Заключение

В заключение отметим, программный продукт SQLBase Exchange предоставляет комплекс удобных технических решений по организации распределенных БД, причем не только на базе "родных" программных продуктов Centura (CTD и SQLBase), но и других, работающих совместно с СУБД SQLBase. Подкупает простота, гибкость настройки и наглядность описания самых сложных способов преобразования данных, которые необходимы для информационных систем с распределенными БД.

Дополнительная информация

Дополнительную информацию Вы можете получить в компании Interface Ltd.

Отправить ссылку на страницу по e-mail
Обсудить на форуме Centura Software


Interface Ltd.
Тel/Fax: +7(095) 105-0049 (многоканальный)
Отправить E-Mail
http://www.interface.ru
Ваши замечания и предложения отправляйте автору
По техническим вопросам обращайтесь к вебмастеру
Документ опубликован: 06.09.01