Репликация

Материал из Викиконспекты
Версия от 19:19, 17 декабря 2021; Gleb-kov (обсуждение | вклад) (реализация репликации и применение)
Перейти к: навигация, поиск
Определение:
Репликация — это поддержание одинаковых данных на нескольких узлах распределенной системы.

Типы репликации

  • Синхронная -- требует введения распределенных транзакций и гарантирует одинаковое состояние реплик.
  • Асинхронная -- допускает задержки репликации на репликах.

Схемы репликации

  • С основной копией -- запросы на запись поступают в централизованное место, а затем реплицируются
  • Симметричная -- запросы на запись могут поступать в различные копии


Реализация репликации

С основной копией

Репликация с основной копией

Есть одна главная копия данных, изменения из неё реплицируются на все остальные копии. За согласованность изменений отвечает главная копия. Если изменения приводят к несогласованному состоянию, то транзакция откатывается. Запросы на чтение могут быть обработаны любой репликой. Такая реализация эффективна, если количество записей сильно меньше количества запросов чтения.

Симметричная

Симметричная репликация

Чтение и запись могут быть обработаны любой копией. При необходимости реплики могут работать автономно.

Преимущества:

  • Запросы можно отправлять на географически ближайшую реплику

Недостатки:

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

Таким образом, синхронная репликация сложна и малонадежна. В реалньости распределенные базы данных решают эту проблему лучше.

Рассылка изменений

Информация обо всех сделанных изменения содержится в журнале транзакций. Репликация достигается за счёт рассылки протоколов транзакций.

Репликация операторов

  • На реплике выполняются те же операторы
  • Пересылается малый объем данных
  • Операторы должны быть детерминированны
  • Необходимо учитывать взаимный порядок выполнения транзакций.

Репликация записей

  • Пересылается информация об изменении записей
  • Результат детерминирован
  • Вынужденно пересылается большое количество записей

Применения репликации

Вертикальное масштабирование

Большое количество чтений, малое количество записей. Схема репликации с одной копией. Примеры: web-сервера, erp-системы.

Горизонтальное масштабирование

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

Повышение доступности

Ассиметричная схема репликации позволяет менять основную реплику не останавливая работу системы.

Резервное копирование

Ассиметричная схема.

  • Для получения резервной копии добавим специальную реплику, которая будет синхронизирована с основной.
  • В момент взятия резервной копии отключаем синхронизацию.
  • Чтобы сделать следующую резервную копию, синхронизация снова включается.
  • Реплика получает все изменения, сделанные с момента отключения.

Преобразование данных

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