Мультинаправленная репликация в схеме "звезда" (постановка)

Материал из GedeminWiki
Перейти к: навигация, поиск
  1. Репликация на уровне таблиц реляционной базы данных.
  2. В репликации участвует одна главная база данных (master) и неограниченное количество удаленных баз данных (remote).
  3. Обмен между удаленными базами данных происходит через главную (топология "звезда").
  4. На каждой базе данных может быть свой набор таблиц, участвующих в репликации. При условии, что при переносе изменений будет сохраняться целостность данных.
  5. Структура таблиц, участвующих в репликации, может отличаться на разных базах. При условии, что при переносе изменений будет сохраняться целостность данных.
  6. Каждая база данных имеет свой уникальный идентификатор -- DBID.
  7. Для каждой таблицы T, участвующей в репликации, создается таблица T' для хранения версий записей.
  8. Таблица T' содержит все поля из таблицы T. Но, ограничения и индексы не создаются.
  9. В таблице T' создается поле-первичный ключ modid -- идентификатор модификации. modid -- целое число, увеличивающееся от более ранних изменений к более поздним. modid является первичным ключем и одновременно внешним ключем на таблицу лога. При логировании операции удаления в таблице модификаций заполняются только поля modid и идентификатор записи.
  10. Изменения, сделанные в рамках одной транзакции, переносятся на удаленную базу данных как единое целое (при репликации сохраняется атомарность изменений).
  11. При перемещении за пределы базы данных записи идентифицируются глобальным РУИДом, уникальным для всех БД, участвующих в репликации.
  12. Все изменения фиксируются в таблице лога с помощью триггеров AFTER на таблицах, участвующих в схеме репликации.
CREATE TABLE gd_repl_log (
  id        dintkey,            -- сюда направлена ссылка из таблицы с модификациями
  ts        dtimestamp_notnull,
  relname   drelationname,
  op        CHAR(1) NOT NULL,   -- I, U, D
  trid      dintkey,            -- идентификатор транзакции
  dbid      dintkey,            -- идентификатор базы данных, где были произведены изменения
 
  CONSTRAINT gd_pk_repl_log PRIMARY KEY (id)
);

Пример

Персональные инструменты
Пространства имён

Варианты
Действия
Навигация
Инструменты