Дельта

Содержание раздела
  1. Действия с дельтами
  2. Метка времени дельты
  3. Содержимое дельты
  4. Отмена изменений дельты
  5. Ограничения дельт с метками времени в будущем

Дельта — целостная совокупность изменений в логической базе данных.

Дельта позволяет сгруппировать операции записи в целостный набор изменений. Изменять данные логической БД также можно без группировки по дельтам.

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

Действия с дельтами

Дельту можно открыть, закрыть, отменить (откатить) и удалить.

Дельта, которую открыли и еще не закрыли, называется открытой (или горячей), а дельта, которую закрыли, — закрытой. Для каждой логической базы данных одновременно может быть открыто не более одной дельты.

На рисунке ниже показана последовательность дельт, где дельта 3 является открытой, а все предыдущие — закрытыми.

Открытая и закрытые дельты

Минимально допустимая разница между закрытием дельт — 1 секунда.

Метка времени дельты

В запросе на закрытие дельты можно указать метку времени — дату и время закрытия этой дельты. Если метка для дельты не указана, система устанавливает ее равной текущему времени сервера.

Содержимое дельты

Дельта включает все операции записи, начатые после открытия этой дельты и завершенные до ее закрытия.

На рисунке ниже показана последовательность операций записи в дельте 0, где операция 0 является первой операцией дельты, а операция 2 — последней операцией дельты.

Операции записи дельты

Отмена изменений дельты

Отменить все изменения, совершенные в открытой дельте, можно с помощью ROLLBACK DELTA.

Ограничения дельт с метками времени в будущем

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

  • запрос SELECT без ключевого слова FOR SYSTEM_TIME не возвращает записи с метками времени, превышающими серверное время;
  • запрос DELETE не удаляет данные с метками времени, превышающими серверное время;
  • выполнение операций записи вне дельт будет недоступно после дельты с меткой времени в будущем до тех пор, пока эта метка не станет равна серверному времени.

Чтобы получить данные «будущих» версий в SELECT-запросе, используйте ключевое слово FOR SYSTEM_TIME с меткой времени, номером дельты или номером операции записи.