О репликации базы данных

Современные информационные системы предъявляют достаточно высокие требования к скорости отработки информации при условии одновременной работы большого количества клиентов. Кроме того, развиваясь, такие системы должны легко масштабироваться без ущерба для скоростных характеристик системы.

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

Вопросы построения распределенной базы данных единой информационной системы возникают и при развитии компании, когда создаются удаленные филиалы, магазины и склады. Каждая удаленная информационная система с целью повышения устойчивости должна работать самостоятельно, периодически отправляя в Центральный офис консолидированную информацию. Для исключения человеческого фактора в вопросе периодической синхронизации информации базы данных должны быть включены в общую систему репликации.

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

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

Терминология и классификация

Репликация - процесс приведения данных электронных таблиц двух БД в идентичное состояние. Процесс репликации основан на понятиях "издатель" и "подписчик". Издателем является сервер публикации, т.е. сервер, отправляющий информацию. Подписчиком является соответственно принимающий сервер - сервер подписки. Репликацию можно классифицировать по разному. В рамках данной статьи остановимся на следующих вариантах:
  1. По направлению репликации.
    • однонаправленная или односторонняя репликация - данные изменяются только в одной из БД, а в другой не подвергаются изменениям;
    • многонаправленная или многосторонняя репликация - данные могут изменяться и вводиться во всех БД;
  2. По времени проведения сеанса репликации.
    • репликация реального времени - данные должны быть засинхронизированны немедленно после изменений;
    • отложенная или асинхронная репликация - процесс репликации запускается по какому либо событию во времени;
  3. По способу передачи информации во время процесса репликации.
    • прямая репликация - репликация выполняется при помощи программы клиента, которая имеет устойчивое соединение с серверами распределенных БД;
    • недетерминированная или вероятностная репликация - репликация выполняется при помощи программы клиента, которая не имеет устойчивого соединения с серверами распределенных БД;
  4. По способу анализа реплицируемой информации.
    • репликация по состоянию - алгоритм репликации работает по принципу сравнения записей одной таблицы с записями другой, и на основании этого принимается решение о синхронизации;
    • репликация изменений - алгоритм репликации переносит только изменения информации БД, хранящиеся в журнале вносимых транзакций БД.

Функциональные требования к серверу репликации

При разработке сервера репликации были определены основные требования, которым он должен удовлетворять:

Сервер репликации удовлетворяет не только этим требованиям, но и имеет еще ряд дополнительных функций, которые позволяют наглядно контролировать процесс репликации, устанавливать и контролировать параметры канала соединения с удаленными серверами, выполнять экспортно/импортные операции для доставки информации на жестких носителях и загрузки ее в сервер подписки при отсутствии канала связи.

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

Партнеры:

Rambler's Top100 Рейтинг@Mail.ru