Дельта
Содержание раздела
Дельта — целостная совокупность изменений в логической базе данных.
Дельта позволяет сгруппировать операции записи в целостный набор изменений. Изменять данные логической БД также можно без группировки по дельтам.
Дельты нумеруются по порядку в рамках логической базы данных, начиная с нуля.
Действия с дельтами
Дельту можно открыть, закрыть, отменить (откатить) и удалить.
Дельта, которую открыли и еще не закрыли, называется открытой (или горячей), а дельта, которую закрыли, — закрытой. Для каждой логической базы данных одновременно может быть открыто не более одной дельты.
На рисунке ниже показана последовательность дельт, где дельта 3 является открытой, а все предыдущие — закрытыми.
Минимально допустимая разница между закрытием дельт — 1 секунда.
Метка времени дельты
В запросе на закрытие дельты можно указать метку времени — дату и время закрытия этой дельты. Если метка для дельты не указана, система устанавливает ее равной текущему времени сервера.
Содержимое дельты
Дельта включает все операции записи, начатые после открытия этой дельты и завершенные до ее закрытия.
На рисунке ниже показана последовательность операций записи в дельте 0, где операция 0 является первой операцией дельты, а операция 2 — последней операцией дельты.
Отмена изменений дельты
Отменить все изменения, совершенные в открытой дельте, можно с помощью ROLLBACK DELTA.
Ограничения дельт с метками времени в будущем
При закрытии дельты можно указать любую дату и время, которые превышают дату и время закрытия предыдущей дельты. Если вы указываете дату и время в будущем относительно серверного времени, учитывайте следующие ограничения:
- запрос SELECT без ключевого слова FOR SYSTEM_TIME не возвращает записи с метками времени, превышающими серверное время;
- запрос DELETE не удаляет данные с метками времени, превышающими серверное время;
- выполнение операций записи вне дельт будет недоступно после дельты с меткой времени в будущем до тех пор, пока эта метка не станет равна серверному времени.
Чтобы получить данные «будущих» версий в SELECT-запросе, используйте ключевое слово FOR SYSTEM_TIME с меткой времени, номером дельты или номером операции записи.