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

Материал из GedeminWiki
(Различия между версиями)
Перейти к: навигация, поиск
(Лог УБД)
(Типы данных)
Строка 35: Строка 35:
 
   
 
   
 
   CREATE DOMAIN rp2_dstate AS CHAR(1)  
 
   CREATE DOMAIN rp2_dstate AS CHAR(1)  
     CHECK(VALUE IN ('I', 'L', 'B', 'S', 'C', 'R', 'F'))
+
     CHECK(VALUE IN ('L', 'B', 'S', 'F'));
 +
 +
  CREATE DOMAIN rp2_dstate_arch AS CHAR(1)
 +
    CHECK(VALUE IN ('I', 'C', 'R'));
 +
 
  
 
Типы операций:
 
Типы операций:

Версия 10:51, 7 сентября 2009

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

repl_1.png

Как видно на представленном рисунке, несколько Удаленных баз данных (УБД) обмениваются данными с одной Центральной базой данных (ЦБД). Изменение данных может осуществляться как на УБД, так и на ЦБД. Передача изменений напрямую от одной УБД к другой, минуя ЦБД, невозможна.

Совокупность всех УБД и ЦБД, включенных в схему репликации, называется Распределенной базой данных (РБД).

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

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

На рисунке ниже показана РБД с двумя доменами. Согласно представленной схеме, если некоторый объект принадлежит "Домену 1", то его изменения, сделанные на УБД1, будут переданы (реплицированы) на ЦБД и УБД3, но не попадут на УБД2, так как она не входит в "Домен 1". Аналогично, изменения объекта из "Домена 2" будут передаваться только между УБД2 и ЦБД.

repl_2.png

Принадлежность объекта домену может устанавливаться только на основании его класса (вертикальное разбиение) или класса и принадлежности некоторому множеству (горизонтальное разбиение). Пример вертикального разбиения -- все объекты класса "Компания". Пример горизонтального -- все объекты класса "Компания", входящие в папку "Общие клиенты" справочника контактов.

В один момент времени изменение объектов возможно только на одной из баз, которая называется Активной базой данных (АБД). Активная база данных в начальный момент времени задается схемой репликации и называется Главной базой данных (ГБД). Статус активности передается по запросу от одной базы данных к другой. ГБД передает статус активности на ограниченный промежуток времени, по истечении которого ГБД снова становится активной, даже если она не посылала соответствующего запроса.

В рамках домена, в один момент времени, редактирование или удаление объекта возможно только на одной базе данных. Такая база данных называется активной базой данных (АБД). Активная база данных в начальный момент времени задается схемой репликации и называется главной базой данных (ГБД). Статус активности передается по запросу от одной базы данных к другой. ГБД передает статус активности на ограниченный промежуток времени — Ta, по истечении которого ГБД снова становится активной, даже если она не посылала соответствующего запроса. После передачи статуса активности БД становится неактивной. Неактивная база даных (НБД) функционирует в режиме только для чтения.

Мы будем использовать термин база данных (БД) в тех случаях, когда для нас не имеет значение является ли указанная база ЦБД или УБД в схеме репликации, имеет ли она статус активной или нет.

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

Реализация

Метаданные

Типы данных

Состояние объекта:

 CREATE DOMAIN rp2_dstate AS CHAR(1) 
   CHECK(VALUE IN ('L', 'B', 'S', 'F'));

 CREATE DOMAIN rp2_dstate_arch AS CHAR(1) 
   CHECK(VALUE IN ('I', 'C', 'R'));


Типы операций:

 CREATE DOMAIN rp2_doptype AS CHAR(1) 
   CHECK(VALUE IN ('I', 'U', 'D'))

Список баз

 CREATE TABLE rp2_domain (
 )
 CREATE TABLE rp2_domain_class (
 )
 CREATE TABLE rp2_base (
 )
 CREATE TABLE rp2_domain_base (
 )

Лог УБД

 CREATE SEQUENCE rp2_s_log
 CREATE TABLE rp2_rlog (
   rec_num
   obj_id UNIQUE
   obj_class
   obj_subtype 
   obj_state
   logged
 )
 CREATE TABLE rp2_rlog_arch (
   rec_num
   obj_id
   obj_class
   obj_subtype 
   /* obj_state */
   logged
 )

Лог ЦБД

Контроль активности БД

Примечания

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

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