ТЕХНОЛОГИЯ РЕПЛИКАЦИИ ДЛЯ СОЗДАНИЯ РАСПРЕДЕЛЁННЫХ БАЗ ДАННЫХ НА ОСНОВЕ ORACLE 8I И MS SQL SERVER 7.0 Н.А.Лашкин, В.Г.Орчиков Государственный НИИ информационных технологий и телекоммуникаций, Москва Тел.: (095) 237-57-73, e-mail: valera@informika.ru Рассматривается задача репликации данных в распределённой неоднородной SQL базе данных, т.е. включающей SQL серверы различных производителей. Если распределенная база данных является однородной, то репликация может быть осуществлена стандартными средствами. В этом случае основу репликации обычно составляет ODBC драйвер и стандартный интерфейс, например Replication Manager, позволяющие создавать все основные сценарии выполнения репликации, к которым относятся множественная публикация, централизованная публикация и централизованная подписка. Если база данных являются неоднородной, то в ряде случаев, например для Oracle 8 и MS SQL 7, для организации репликации также можно воспользоваться штатными средствами СУБД. Но использование только ODBC драйвера для связи двух разнородных СУБД накладывает ограничения на базу данных. К тому же, если возникает необходимость связать такие базы данных, как, например, PostgreSQL и Progress, обойтись стандартным методом становится ещё более затруднительно. Поэтому была предпринята попытка написания собственного пакета программ, который бы позволил передавать данные между серверами независимо от того, какая именно СУБД установлена, какой сценарий репликации необходимо использовать и на какой платформе работают СУБД. Первый вариант решения выглядит следующим образом. С помощью Web-интерфейса, CGI-сценариев и ODBC драйвера на одном из серверов изменяются данные в таблицах, участвующих в репликации. Транзакции обновления таблиц сохраняются в отдельном файле на сервере, который с помощью ftp протокола или e-mail передаются на другой сервер, где соответствующая программа при помощи ODBC драйвера производит изменения в соответствующих таблицах. Существенным недостатком этого метода является то, что если данные в таблицах изменять каким-либо иным, отличным от способа Web-форм, способом, то репликация не происходит. Поэтому этот способ не решает все поставленные перед ним задачи и его можно использовать только в частных случаях. Более удачным вариантом решения проблемы является следующий. На сервере запускается программа, которая через определённые, установленные администратором моменты времени просматривает на сервере базы данных таблицы, участвующие в репликации, и считывает из них информацию в буфер (временный файл). Затем производится сравнение данных из буфера с данными, хранящимися в соответствующих таблицах другого сервера. В случае нахождения несоответствия, т.е. если в таблицах отсутствует какая-либо информация, эта информация пересылается из буфера в таблицу. После приведения таблиц к соответствию, файл буфера удаляется. Если же в процессе репликации происходит какой-либо сбой в работе системы, то файл буфера остаётся, и после восстановления работоспособности системы, репликация автоматически продолжается. Параллельно с этим, ведётся log-файл, в котором фиксируются все происходящие процессы. Созданием буферного и log файлов добивается большая отказоустойчивость системы. Вся процедура связи с СУБД происходит с помощью ODBC драйвера, что делает их прозрачными друг для друга. Программы написаны на языке С и являются переносимыми, что также делает применение этого способа более удобным. Данные решения предполагается использовать в прототипе распределенной базы данных образовательной статистики, при этом базовыми вариантами SQL серверов приняты MS SQL 7, Oracle 8i и PostgreSQL 6.5.