И нформационные технологии в управлении
УДК 025.4.03; 002.53.004.65
УПРАВЛЕНИЕ СИНХРОНИЗАЦИЕЙ РАСПРЕДЕЛЕННЫХ РАЗНОРОДНЫХ БАЗ ДАННЫХ НА ОСНОВЕ ОРГАНИЗАЦИИ ТРЕХЭЛЕМЕНТНЫХ ОЧЕРЕДЕЙ
В. Н. Лебедев, Д. В. Москальков, В. Л. Орлов Институт проблем управления им. В. А. Трапезникова, г. Москва
Сформулирована задача обмена данными в распределенных разнородных базах данных и дан алгоритм ее решения. Предложена модель трехэлементной очереди выгрузки данных и построен автомат, лежащий в ее основе, а также разработан алгоритм реализации модели в реляционных СУБД и даны рекомендации по ее возможным применениям.
ВВЕДЕНИЕ
Управление синхронизацией распределенных разнородных баз данных (под синхронизацией понимается поддержание базы данных в целостном состоянии) приобретает все большую актуальность. Это обусловлено необходимостью обмена данными, например, между подразделениями корпоративных систем, иногда находящимися даже в разных странах, но связанными определенными информационно-технологическими процессами.
Примерами таких процессов могут быть учет движения товаров и грузосопроводительных документов между поставщиками и покупателями, обработка документов, связанных с розыском похищенных автомобилей или лиц, обвиняемых в совершении преступлений, полицией нескольких стран на основе оперативного обмена информацией и др.
Если надежность и пропускная способность каналов связи позволяет поддерживать постоянный контакт между узлами информационной сети, то обеспечивается доступ к удаленным данным с возможностью обработки на основе транзакций (OLTP — on-line transaction processing) [1]. Если постоянный контакт между узлами не поддерживается, то синхронизация данных может происходить в режиме off-line путем обмена файлов с данными. Для подавляющего большинства систем
оперативной аналитической обработки (типа OLAP — on-line analysis processing) такой отложенной синхронизации вполне достаточно.
В существующих коммерческих СУБД, таких как Sybase, Oracle, Informix и других, поддержка целостности распределенных баз данных, как правило, реализуется на основе двух механизмов: двухфазной фиксации транзакции и асинхронного тиражирования данных [2—5]. Существующие средства синхронизации рассчитаны на применение в однородной среде, в которой удаленные серверы баз данных работают на одинаковой аппаратно-программной платформе. Как правило, существующие средства репликации подразумевают идентичность структур распределенных баз данных [6]. Для предлагаемой постановки задачи общих механизмов синхронизации разнородных баз данных в настоящее время не существует.
ПОСТАНОВКА ЗАДАЧИ
Рассмотрим один из вариантов реализации процедуры синхронизации данных в разнородной распределенной информационной среде. Пусть имеется распределенная база данных, содержащая информацию о некоторых объектах. Базы данных, хранящиеся на различных серверах, имеют различные структуры, неизвестные другим серверам, а сами серверы могут быть реализованы на различных аппаратно-программных платформах. Прин-
Рис. 1. Схема обмена данными
ципиальное отличие рассматриваемой постановки задачи заключается в том, что существующие средства обмена и синхронизации данных предназначены для работы в полностью однородных средах. Учитывая неоднородность среды, синхронизация осуществляется путем off-Нпе-обмена данными, например, в формате XML. Общая схема обмена данными изображена на рис. 1.
Под процедурой выгрузки понимается анализ изменений локальных данных, подготовка требуемых данных и отправка их в удаленные базы данных. Данные, предназначенные для выгрузки, состоят из информационных блоков, каждый из которых определяет один объект. В информационном блоке, который должен в процессе синхронизации передаваться от одной базы к другой, выделим:
•
тип объекта учета; идентификатор объекта учета; состояние объекта учета; дополнительные данные по объекту учета.
Каждое изменение состояния объекта в какой-либо из баз должно отображаться в удаленных базах данных. Вместе с тем класс рассматриваемых систем подразумевает организацию дискретных сеансов связи с большими интервалами, которые могут достигать нескольких суток. За это время состояние объекта может измениться несколько раз.
Традиционный подход, при котором все изменения объекта выстраиваются в очередь, а затем эти изменения фиксируются во всех внешних базах данных в том же порядке, в каком они заносились в очередь, имеет ряд недостатков. Прежде всего, это увеличивает трафик. Кроме того, передача данных при организации дискретных сеансов связи осуществляется в асинхронном режиме. При этом может оказаться нарушенной последовательность прихода сообщений, что в итоге может при-
вести к искажениям в принимающей базе данных. Таким образом, необходимо разработать модель процесса выгрузки с учетом описанных выше ограничений.
МЕТОД РЕШЕНИЯ
Предлагаемый метод управления синхронизацией основывается на:
• разработке и организации трехэлементных очередей;
• разработке алгоритма коррекции значения объекта в очереди;
• разработке и организации информационного обеспечения.
Организация трехэлементных очередей
В основу метода управления синхронизацией положена организация трехэлементных очередей. Рассмотрим принципы организации и функционирования трехэлементной очереди.
1. Для каждого объекта, подлежащего выгрузке в определенную базу данных, формируется трехэлементная очередь (рис. 2).
2. В первый элемент очереди заносится состояние объекта перед выгрузкой, в процессе выгрузки значение первого элемента перемещается во второй элемент и после получения подтверждения о занесении данных в удаленную базу значение состояния перемещается в третий элемент.
3. При перемещении значения состояния объекта по очереди происходит "обнуление" элемента, в котором это значение находилось. В то же время перемещать значение состояния можно только в свободный элемент очереди. Единственным исключением является третий (последний) элемент, в котором при перемещении может замещаться старое значение.
4. Значение состояния в первом элементе может изменяться. Изменения могут происходить при каждом изменении состояния объекта в системе. Правила изменения определяются специальным алгоритмом, приведенном ниже. В результате
Рис. 2. Организация трехэлементной очереди
значение состояния может остаться без изменения, а может скорректироваться, причем возможен вариант, когда элемент будет "обнулен". Например, если угнанный автомобиль был объявлен в розыск, а затем обнаружен прежде, чем данные об этом происшествии стали выгружаться, то первый элемент следует "обнулить".
5. При переносе значения состояния во второй элемент и освобождении первого элемента должен инициироваться процесс выгрузки. Перенос не может быть осуществлен, если второй элемент не свободен (см. п. 3). Это обусловлено необходимостью завершения предыдущего обмена, а именно, пока не получено подтверждение и второй элемент не освободился — новая операция обмена не может быть инициирована.
6. При получении подтверждения второй элемент освобождается, а его значение переносится в третий элемент.
В разработанном алгоритме ключевой момент заключается в возможности неоднократного изменения значения состояния объекта в первом элементе очереди, что обеспечивает возможность динамической настройки данных к моменту начала сеанса связи. Вместе с тем для осуществления корректной процедуры изменения первого элемента необходимо учитывать не только последнее значение состояния в базе данных, но и значение состояния во втором и третьем элементах, т. е. предысторию обмена данными на предыдущих этапах синхронизации. Для этого необходимо разработать специальный алгоритм.
Алгоритм коррекции значения объекта в очереди
Как уже сказано, в трехэлементной очереди каждый объект определен тремя значениями состояния. Алгоритм коррекции объекта в очереди можно представить в виде конечного автомата Мура, который является частным случаем конечного автомата Мили и отличается от него тем, что его функция выходов зависит только от состояний [7]. Если изобразить такой автомат в виде ориентированного графа, то выход будет определяться соответствующей вершиной (состоянием автомата).
Не ограничивая общности предложенного метода, поясним е го на примере. Определим входной алфавит автомата как множество событий:
А = {а1, а2, а3, а4},
где а1 — постановка объекта в очередь с состоянием "на учете"; а2 — постановка объекта в очередь с состоянием "снят с учета"; а3 — выгрузка объекта; а4 — подтверждение объекта.
Определим множество состояний автомата 4 как множество возможных состояний объекта в очереди (значение "П" соответствует состоянию "на учете",
значение "С" состоянию "снят с учета", "О" — незаполненное состояние, знак "/" разделяет элементы очереди):
1 0/0/0
2 П/0/0
3 0/П/0
4 0/0/П
5 С/П/0
6 С/0/П
7 0/С/П
8 0/0/С
9 П/С/П
10 П/0/С
11 0/П/С
12 С/П/С
Рассмотрим для примера состояние 11 (О/П/С). Значение "С" в третьем элементе говорит о том, что в удаленной базе данных данный объект имеет статус "снят с учета". Значение "П" во втором элементе говорит о том, что объект готов к выгрузке в удаленную базу данных со статусом "на учете". Ноль в первом элементе говорит о том, что с момента готовности объекта к выгрузке, изменений статуса не было.
Определим функцию переходов 5: Q х А о 4 в виде таблицы переходов:
4 а1 а2 а3 а4
1 2 1 1 1
2 2 1 3 1
3 3 5 3 4
4 4 6 4 4
5 3 5 5 6
6 4 6 7 6
7 9 7 7 8
8 10 8 8 8
9 9 7 9 10
10 10 8 11 10
11 11 12 11 4
12 11 12 12 6
Рассмотрим переходы из 11-го состояния. Первое событие (а1) никак не изменяет состояния, так как объект уже выгружен с таким же статусом ("на учете"). Если же статус изменился на "снят с учета" (а2), то изменится значение первого элемента очереди, и объект перейдет в состояние 12. Событие выгрузки (а3) не меняет состояния, так как второй элемент не пустой, т. е. предыдущая выгрузка еще не подтверждена. Событие подтверждения (а4) пе-
18
ШТШ 5С1ЕНСЕ5 № 1 • 2004
ЗАКЛЮЧЕНИЕ
Рис. 3. Структура базы данных
реносит второй элемент в третий, и состояние изменяется на четвертое.
Предложенная модель трехэлементной очереди может быть применена в различных ситуациях, когда в распределенных разнородных информационных средах ведется учет каких-либо объектов.
Организация информационного обеспечения
Для информационного обеспечения предложенного метода можно использовать реляционную базу данных, например со структурой, приведенной на рис. 3. База данных включает в себя следующие таблицы:
OBJECT — содержит информацию об объектах;
STATUS — справочник, содержащий возможные статусы объектов;
OBJTYPE — справочник, содержащий типы объектов;
UNLOADQUEUE — основная таблица, которая хранит состояния объекта в трехэлементной очереди;
Предложенный метод управления синхронизацией может быть применен во всех случаях, когда базы данных хранят информацию о каких-либо объектах. В статье рассмотрена упрощенная схема базы данных; естественно, в каждом конкретном случае структура более сложная. Основная идея заключается в том, что, добавляя в базу данных таблицу и1ЪОАВ_4иЕиЕ и интерпретацию рассмотренного автомата, мы организуем предложенную трехэлементную очередь в распределенной разнородной информационной среде.
Предложенная модель была реализована и внедрена в рамках Информационной вычислительной системы Национального центрального бюро Интерпола в России (ИВС НЦБ Интерпола) для синхронизации данных о физических лицах и угнанных автомобилях в различных подразделениях этой международной организации (см. третью стр. обложки).
ЛИТЕРАТУРА
1. Арсеньев Б. П., Яковлев С. А. Интеграция распределенных баз данных. — М.: Лан ь. — 2001.
2. Калиниченко Б. О. Асинхронное тиражирование данных в гетерогенных средах // СУБД. — 1996. — № 3.
3. Янчук А. В. Репликация. Технология синхронизации распределенных баз данных // Современные техноло гии. — 1999. — № 7.
4. Корнеев В. В., Гарев А. Ф, Васютин С. В., Райх В. В. Базы данных. Интеллектуал ьная обработка информа ции. — М.: Нолидж. — 2000.
5. Барон Г., Ладыженский Г. Технология тиражирования данных в распределенных системах // Открытые системы. — 1994. — № 2.
6. Луковенко А., Фаритов А. Практическая репликация // Открытые системы. — 2001. — № 2.
7. Кузнецов О. П., Адельсон-Вельский Г. М. Дискретная математика для инженера. — М.: Энер гоатомиздат, 1989.
Ш (095) 334-92-81 E-mail: [email protected]
Подписку на журнал {Проблемы управления» можно оформить с любого месяца в любом почтовом отделении [подписной индекс 8ЛУ08 в каталоге Роспечати или 38006 в объединенном каталоге «Пресса России»], а также через редакцию [из любого места России]. Отдельные номера редакция высылает по первому же требованию. Стоимость одного номера — 440 руб.