Согласованность транзакций

В контексте репликации данных согласованность транзакций означает, что на всех узлах данные будут иметь идентичные состояния, соответствующие тому, которое могло возникнуть при выполнении всех транзакций на одном и том же узле. Репликация вно­сит в процессы некоторый элемент случайности, который выражается в появлении оп­ределенных временных задержек между моментом выполнения изменения в данных и моментом репликации этих сведений подписчикам. В SQL Server 2000 задержки репли­кации относятся к одному из двух возможных вариантов согласованности транзакций: гарантированной неполной согласованности (guaranteed loose consistency) и гарантированно­му отсутствию согласованности (guaranteed no consistency).

Гарантированная неполная согласованность означает, что синхронизация данных между сервером-источником и сервером-получателем не выполняется немедленно. Прежде чем подробнее остановиться на этом варианте, рассмотрим еще одну модель распределенных данных — гарантированную точную согласованность (guaranteed tight consistency). Она может быть реализована в SQL Server с использованием двухступен­чатого протокола фиксации изменений. В этой модели все выполняемые транзакции либо фиксируются, либо отменяются одновременно на всех серверах, поэтому дан­ные всех серверов всегда синхронизированы на 100%.

В модели с гарантированной неполной согласованностью транзакции фиксируют­ся или отменяются только на исходном сервере. После завершения транзакции све­дения о выполненных изменениях асинхронно рассылаются на серверы-подписчики. Самое большое различие между моделями гарантированной точной и гарантирован­ной неполной согласованности данных заключается в том, что в последнем случае между выполнением изменений на исходном сервере и их репликацией на сервер-подписчик проходит некоторое время, на протяжении которого базы данных оста­ются несогласованными. Модель гарантированной неполной согласованности дан­ных реализуется в функциях репликации транзакций и синхронизации. Модель, реа­лизуемая в функции непосредственно обновляемых подписчиков, можно считать промежуточной между моделями гарантированной точной и гарантированной не­полной согласованности данных. В этом случае двухступенчатый протокол фиксации изменений (точная согласованность) используется при взаимодействии серверов двух узлов (публикующий сервер и подписчик), после чего запускается механизм стан­дартной репликации транзакций (неполная согласованность), применяемый для пе­редачи сведений об изменении в адрес всех остальных подписчиков.

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

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