Базы данных входят всё прочнее в нашу жизнь, а потому даже простому пользователю, не претендующему на глубокое знание информационных технологий, но имеющему дело с базами данных по роду своих рабочих обязанностей, имеет смысл знать слова, которыми бросаются крутые спецы по этим самым базам данных. Одно из этих загадочных для многих слов - репликация. О том, что оно обозначает применительно к базам данных, и призвана рассказать эта небольшая заметка.
Термин "репликация" пришёл в ИТ из генетики (привет биологам!). Там он обозначает процесс удвоения ДНК - необходимый момент при делении клетки. ДНК - это самый что ни на есть важный носитель информации в мире, поэтому для работы с данными в компьютере был выбран этот биологический термин.
Но, тем не менее, репликация ДНК имеет лишь отдалённое сходство с репликацией БД. Репликация БД - это синхронизация информации для нескольких разных баз данных. В простейшем случае репликация - это просто копирование информации из одной БД в другую. Но простейшие случаи, к сожалению, одновременно и редчайшие, в результате чего репликация БД становится довольно-таки часто нетривиальной задачей. Скользкое место при репликации - возможный конфликт данных, для разрешения которого необходима разработка специфических для каждой задачи алгоритмов.
Репликация делится на несколько классов. Она бывает однонаправленной (односторонней) и мультинаправленной (многосторонней) - эта классификация проводится по направлению передачи данных между базами данных. Однонаправленная репликация обычно используется при синхронизации резервной копии БД с актуальной БД, многонаправленная - при синхронизации двух, так сказать, самостоятельных филиалов одной БД.
Также репликация бывает синхронной и асинхронной. При синхронной репликации может существовать только одна версия данных - это накладывает ограничения на работу с данными во время репликации. Асинхронная репликация позволяет избежать этой проблемы, но при ней база данных может иметь несовместимые, с точки зрения пользователя, данные. Обычно именно асинхронную репликацию имеют в виду, когда говорят о репликации базы данных вообще.
Различают репликацию и по такому признаку, как время её проведения. Если репликация проводится немедленно после внесения изменений в БД, то это репликация реального времени, в противном случае мы имеем дело с отложенной репликацией.
По способу связи между базами данных репликация делится на прямую и недетерминированную. Прямая - это когда канал связи между базами достаточно устойчив. Если же базы данных связываются по неустойчивому каналу (скажем, через Dial-Up), то приёмник информации не может в любой нужный ему момент связаться с источником информации, из-за чего решения, принимаемые им при конфликте данных, носят вероятностный (недетерминированный) характер.
Таким образом, самый простой способ репликации - это прямая синхронная односторонняя репликация (реального времени или же отложенная, в данном случае значения не имеет). Как я уже говорил, репликацией это никто не называет, используется термин "копирование". Самый сложный случай - это недетерминированная асинхронная многосторонняя репликация. Вот такая репликация - это уже настоящая репликация и одновременно настоящая головная боль для программиста, который должен её реализовывать. Но пользователю уже о его проблемах знать не обязательно.
Ещё раз подчеркну, что репликация базы данных - не самая простая в общем случае задача, решаемая при разработке распределённых систем. Поэтому отнеситесь с пониманием к людям, которые ругаются по её поводу - они, скорее всего, имеют на то основания.
Вадим СТАНКЕВИЧ,
dreamdrusch@tut.by
Комментарии