Использование собственного журнала транзакций в распределенной информационной системе   

   

Кратко опишем некоторые технические термины в контексте статьи:

  • Распределенная информационная система – кластер информационных баз данных, обменивающихся между собой в онлайн режиме средствами технологии «Репликация информационных баз данных» компании СофтПоинт.

  • Сущности – основные единицы обмена между базами данных, все остальные элементы являются зависимыми от них. Конфликты анализируются только для сущностей. Например, документ или справочник – сущности. Табличная часть документа/справочника, регистр бухгалтерии, регистр накопления – зависимые от них элементы.

  • Собственный журнал транзакций – это последовательность действий, выполнив которые можно откатить все изменения для каждой сущности.

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

  • Подписчик – рабочая база данных пользователя.


Как видно из рисунка, при одновременном изменении одной и той же сущности ("Документ 1"), после конфликта данные по ней будут различаться. Это связано со спецификой онлайн репликации посредством MS SQL. В отличие, например, от объектной репликации в прикладных системах (1С 7.7, 8.1), в которых по объекту выгружается вся информация, независимо от изменений, в онлайн репликации MS SQL переносится только изменяемые данные. В этих двух подходах есть и преимущества и недостатки, их рассмотрение выходит за рамки данной статьи.

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

Кратко опишем алгоритм работы собственного журнала транзакций для предыдущего примера.


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

Также есть возможность усовершенствовать механизм путем рассылки писем о конфликтах ответственным лицам для принятия решений по дальнейшим действиям.

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

Автор статьи Баркетов Павел

Статья: Использование собственного журнала транзакций в распределенной информационной системе

Перейти на главную страницу компании "Софтпоинт"