Очередь рассылки

Очередь рассылки (таблица DISPATCH_QUEUE) используется для хранения измененных записей базы данных, которые предназначены для репликации. Эта таблица заполняется на источнике данных. Каждая запись в таблице содержит информацию об одной операции с данными, плюс эти данные.

Структура таблицы:

Поле Тип Описание
OPER_DATE   BYTE(6)  Содержит дату операции. Первые 4 байта поля представляют собой количество секунд, прошедших с 1990 г, остальные 2 байта – 65536-е доли секунды. Эти значения хранятся в прямом формате: старшие байты содержат старшую часть слова
EXTDATA   SMALLINT  Признак продолжения записи, если она не уместилась в 3400 байта поля DATA. Для первой части данных это поле заполнено нулем, для второй – единицей и т.д. Т.е., одна операция может описываться двумя и даже тремя записями в таблице DISPATCH_QUEUE, если реплицируемая таблица имеет записи большого размера
DBNODE   CHAR(8)  Имя БД, из которой эти данные получены
TRANSACT_ID   BIGINT  Номер транзакции, которой принадлежит эта операция
SYSLOG_ADDR   BIGINT  Адрес в системном журнале, по которому находится эта запись. Старшие 4 байта содержат номер файла, младшие – адрес в файле
TYP   SMALLINT  Тип операции:

1 – DELETE;

2 – INSERT;

3 – UPDATE;

4 – COMMIT;

7 – CREATE BLOB;

8 – INSERT BLOB;

9 – CLEAR BLOB;

10 – ROLLBACK

BLOBATR   SMALLINT  Используется для BLOB операций. Младший байт содержит номер атрибута в таблице, которому принадлежит BLOB, старший – тип BLOB
CHANNEL   INT  Номер канала, который произвел операцию
TABNUM_SRC   INT  Номер реплицируемой таблицы
ROWID_SRC   INT  Идентификатор строки в исходной таблице
LEN1   INT  Длина первой части буфера данных (в поле DATA)
LEN2   INT  Длина второй части буфера данных (в поле DATA)
DST_SERVER   CHAR(8)  Имя сервера назначения
DST_OWNER   CHAR(66)  Имя владельца таблицы БД приемника
DST_TABLE   CHAR(66)  Имя таблицы БД приемника
DATA   BYTE(3400)  Буфер с данными. Условно разделен на две части с длинами len1 и len2.

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

1 – DELETE. Первая часть содержит старую запись, которая удаляется. Вторая часть пуста;

2 – INSERT. Первая часть содержит новую запись, которая вставляется. Вторая часть пуста;

3 – UPDATE. Первая часть содержит старую запись, которая замещается. Вторая часть содержит новую запись, которая замещает старую;

4 – DELETE BLOB. Первая часть содержит запись, которой принадлежит удаляемый BLOB. Вторая часть пуста;

5 – COMMIT, ROLLBACK. Первая и вторая части пусты