Одной из самых актуальных проблем для информационных систем на сегодняшний
день является хранение распределенных данных. Работа территориально удаленных
филиалов, различных служб доставки, подразделений по обслуживанию клиентов
и т.д. невозможна без наличия собственных баз данных, информация в которых
постоянно изменяется, что приводит к необходимости синхронизации данных между
различными подразделениями организации.
Понимая актуальность данной проблемы, многие производители реляционных СУБД
предлагают в составе своих продуктов готовые решения для репликации данных.
Однако в повседневной практике достаточно часто возникает необходимость построения
гетерогенных решений, то есть использования в рамках корпоративной информационной
системы СУБД различных производителей. Поэтому наличие механизма синхронизации
данных между отдельными частями системы стало насущной необходимостью. Появление
беспроводных технологий передачи данных (Bluetooth) и мобильных пользователей
с карманными персональными компьютерами (КПК) сделало проблему ещё более актуальной.
Для разработки современных корпоративных приложений необходимо решение, которое
позволит объединить в единую информационную среду и серверы масштаба предприятия,
и рабочие станции, и ноутбуки сотрудников, и даже карманные компьютеры. При
этом необходимо, чтобы каждый сотрудник получал только ту информацию, которая
ему нужна, а также мог обмениваться информацией с центральным сервером, находясь
вне офиса компании. И при этом система должна быть надежной и предъявлять минимальные
требования к администрированию.
Подобную задачу можно решить с помощью системы DBSync, разработанной компанией
РЕЛЭКС.
DBSync – это программный комплекс, предназначенный для разработчиков и администраторов
распределенных IT систем. Он обеспечивает конфигурирование, администрирование
и двухстороннюю синхронизацию данных между серверами, персональными, мобильными
и встроенными базами данных. Фактически все они в этом случае являются узлами
одной распределенной базы данных.
Основные возможности DBSync:
- Синхронизация данных между базами данных различных производителей.
Произвольная топология связей между синхронизируемыми базами.
- Фильтрация синхронизируемых данных. Позволяет настроить синхронизацию
только части колонок таблицы или части строк, удовлетворяющих некоторому условию.
- Одно и двунаправленная синхронизация данных для различных таблиц.
- Обнаружение и разрешение конфликтов записей. В случае модификации
одних и тех же данных на разных узлах в процессе синхронизации будет обнаружен
конфликт. DBSync имеет возможность настройки правил разрешения конфликтов.
- Различные способы идентификации записей. Возможность синхронизации
таблиц с суррогатным первичным ключом.
- Интеграция с деревом каталогов. Позволяет хранить условия синхронизации
таблиц во внешнем дереве каталогов в виде объектов. При синхронизации эти условия
используются для выборки данных.
- Автоматическое восстановление синхронизации после сбоев. В случае
потери пакетов или восстановления базы данных из архивной копии DBSync автоматически
производит полную синхронизацию между базами.
- Защита информации от несанкционированного доступа.
Архитектура DBSync
DBSync включает следующие компоненты:
- механизм определения изменений в базе данных,
- модуль формирования пакетов синхронизации,
- модуль обработки пакетов синхронизации,
- транспортный модуль,
- модуль интеграции со службой каталогов.
Взаимодействие основных компонент в процессе синхронизации показано на схеме:
Поддерживаемые платформы и СУБД
Для платформы Windows 2000/XP
- Oracle 8 и выше;
- MS SQL Server 7, MS SQL Server 2000;
- DB2;
- Sybase 7;
- Linter 5.9 и выше ;
- MySQL 4.x (с ограничениями).
Для платформы Windows CE
Для Linux-платформ
- Linter 5.9 и выше;
- MySQL 4.x (с ограничениями);
- Oracle 8 и выше.
Функционирование системы
При установке DBSync в базе данных создается набор служебных таблиц и таблиц
для хранения информации об изменениях в базе данных. В служебных таблицах хранится
следующая информация:
- списки узлов синхронизации (удаленных баз данных);
- списки таблиц, которые необходимо синхронизировать;
- правила синхронизации и т.д.
Для каждой синхронизируемой таблицы создается управляющая таблица и набор
триггеров.
Управляющая таблица не дублирует никакие поля данных из синхронизируемой таблицы.
Управляющая таблица содержит первичный ключ реплицируемой таблицы и небольшую
порцию служебной информации. Эта информация используется DBSync для определения
записей, которые были модифицированы, добавлены или удалены из синхронизируемой
таблицы с момента последней синхронизации. Информация в управляющей таблице
изменяется с помощью триггеров. Кроме признака модификации записи служебная
информация содержит также дату последней модификации и узел, на котором эта
модификация произошла. Таким образом, если между двумя процессами синхронизации
запись в таблице изменяется несколько раз, то ее промежуточные значения не
сохраняются. Такой механизм детектирования называется стратегией снятия
конечного образа .
Достоинством этого метода является то, что он прозрачен для приложений и баз
данных. Это позволяет разработчикам, не переписывая свои приложения, использовать
специальное ПО промежуточного уровня (middleware). Кроме того, не требуется
изменять структуру уже существующих таблиц баз данных.
Стратегия снятия конечного образа использует минимальный перерасход дискового
пространства. В управляющей таблице не дублируются актуальные данные. Только
первичный ключ синхронизируемой таблицы хранится повторно. Количество записей
в управляющей таблице не может превышать количество записей в синхронизируемой
таблице. Объем дополнительной информации не зависит от частоты синхронизации.
Нет никаких ограничений, например таких, как размер промежутка времени между
синхронизацией. Две базы данных могут быть абсолютно независимы, и следующая
синхронизация произойдет тогда, когда это будет требоваться. Управляющая информация
позволяет быстро определять, какие записи изменились с момента последней синхронизации
для конкретного узла. Это позволяет избежать полного сканирования таблиц и
уменьшает время формирования данных. При необходимости можно выбирать изменения
за любой временной интервал и тем самым выгружать данные за прошлые периоды.
Данный метод предоставляет дополнительную информацию для аудита. С его помощью
всегда можно определить, когда и на каком узле модифицировалась та или иная
запись.
Разрешение конфликтов
В процессе работы пользователей с данными может возникнуть ситуация, когда
одна и та же запись будет модифицирована на различных узлах. Такая ситуация
называется конфликтом (коллизией). Существуют несколько типов конфликтов:
- Конфликт первичных ключей
Наиболее серьезным типом конфликтов является конфликт первичных ключей. Первичные
ключи используются DBSync для идентификации записи. Поэтому конфликты первичных
ключей не детектируются и не разрешаются.
- Конфликты, связанные с ограничениями таблицы
Следующий тип конфликтов - это конфликты, связанные с ограничениями таблицы.
Например, столбец синхронизируемой таблицы объявлен как UNIQUE. Предположим,
что в различных узлах были добавлены две различные записи с одним и тем же
значением этой колонки. Обе операции будут разрешены, так как ограничение не
нарушено. Но при синхронизации возникнет конфликт, так как две различные записи
должны будут иметь одинаковое значение для колонки с ограничением UNIQUE. Конфликты
такого типа детектируются, но не разрешаются. Информация о конфликте сохраняется,
и в дальнейшем администратор может попытаться исправить эту ситуацию вручную.
- Конфликты одновременной модификации данных
Одним из наиболее распространенных типов конфликтов является ситуация, когда
одна и та же запись одновременно модифицируется на различных узлах. Конфликты
такого типа детектируются и разрешаются. Разрешение конфликта состоит в автоматическом
принятии решения, какая информация должна остаться в результате синхронизации.
В DBSync реализованы все стандартные стратегии разрешения конфликтов. Правила
разрешения конфликтов могут применяться для всей записи, для отдельных групп
полей (фрагментов) и даже для отдельно взятого поля. При этом различным фрагментам
могут быть назначены разные правила. Это позволяет гибко настраивать DBSync
для конкретной схемы синхронизации.
Способы обмена данными
Обмен данными между узлами может происходить с помощью одного из поддерживаемых
протоколов. К ним относятся TCP/IP, HTTP/HTTPS, E-mail, File и ActiveSync.
- TCP/IP является наиболее универсальным из них. Он используется в корпоративных
сетях и является самым надежным, быстрым и удобным. Если есть возможность,
то для работы синхронизации следует выбирать именно его.
- HTTP/HTTPS протокол менее надежен и быстр, но он может оказаться более
удобным для мобильных клиентов, которые работают через Proxy-серверы.
- E-MAIL - передача пакетов синхронизации по электронной почте;
- FILE - обмен между узлами при помощи файлов;
- ActiveSync - протокол для работы с платформой Windows CE.
В качестве формата обмена данными используется XML, как наиболее универсальный
из всех форматов. За основу структуры XML в DBSync принят формат, используемый
в SyncML, который на сегодняшний день является стандартом де-факто в области
синхронизации с мобильными устройствами. Используемая нами кодировка UTF-8
позволяет без проблем использовать национальные кодировки и обеспечивает переносимость
между различными платформами. DBSync поддерживает синхронизацию бинарных данных,
которые хранятся в базе данных в полях типа BLOB.
Сферы применения DBSync
- организация распределенной информационной системы;
- баланс нагрузки серверов;
- повышение надежности системы за счет резервного копирования;
- организация хранилищ данных;
- поддержка мобильных пользователей.
Варианты применения
Баланс нагрузки серверов
В случае сильной нагрузки на один сервер базы данных возможно решение, когда
параллельно основному серверу подключается один или несколько дополнительных
серверов.
В этом случае DBSync настраивается таким образом, чтобы дополнительные серверы
являлись зеркалом основного. Все операции по модификации данных производятся
на основном сервере и затем рассылаются по вспомогательным посредством DBSync.
Затем, например, все OLTP приложения получают доступ к основному серверу,
а приложения, которые осуществляют поиск информации и генерацию отчетов работают
со вспомогательными серверами. В дальнейшем, при необходимости, в эту конфигурацию
легко можно добавить еще один или несколько вспомогательных серверов. Такая
система хорошо подходит для информационно-аналитических систем, поисковых комплексов,
сильно нагруженных Web-сайтов, интенсивно использующих СУБД.
Хранилище данных
Очень часто возникает ситуация, когда помимо актуальных данных необходима
вся история изменений за предыдущее время. При этом на основном сервере хранить
потерявшие актуальность данные нельзя, так как это сказывается на производительности
системы.
В этом случае идеальным будет решение, которое позволит актуальным данным
мигрировать на другой компьютер по мере устаревания. DBSync позволяет настроить
процесс синхронизации таким образом, чтобы потерявшие актуальность данные переставали
синхронизироваться, и их удаление на одном узле не транслировалось на другой
узел.
Повышение надежности системы
Для систем, критичных к простою, DBSync предлагает решение, позволяющее обеспечить
бесперебойную работу с базой данных в случае сбоев. Для этого два одинаковых
сервера связываются между собой с помощью двунаправленной синхронизации. При
этом для обоих узлов задаются одинаковые правила подписки на таблицы.
В этой ситуации данные, изменяемые на основном сервере немедленно передаются
на backup-сервер. В случае сбоя на основном сервере приложение может продолжать
работать с backup-сервером. После восстановления основного сервера все изменения,
сделанные за этот период на backup-сервере, будут переданы на основной сервер.
Поддержка мобильных пользователей
Во многих организациях необходимо, чтобы их сотрудники могли работать с приложениями,
установленными на ноутбуках и карманных персональных компьютерах. При этом периодически
(например, в конце рабочего дня) они подключаются к локальной сети предприятия
и обмениваются информацией с центральным сервером. Благодаря поддержке многих
протоколов DBSync позволяет реализовать такую конфигурацию системы. При этом
возможна интеграция DBSync с деревом каталогов предприятия. Это упрощает администрирование
системы и позволяет выгружать пользователям только ту информацию, которая им
необходима.
Дополнительную информацию Вы можете получить на сайте www
. relex . ru .
Если у Вас возникли вопросы – пишите на market
@ relex . ru .
Демонстрационные версии программных продуктов компании РЕЛЭКС Вы можете скачать
с сайта http://www.relex.ru/rus/download .