Skip to main content Link Menu Expand (external link) Document Search Copy Copied

Вы находитесь на странице архива. Актуальная документация доступна по ссылке.

Операция записи

Содержание раздела
  1. Нумерация операций
  2. Непротиворечивость изменений в операции
  3. Операции в дельте и вне дельты
  4. Статусы операций
  5. Управление операциями

Операция записи — действие по сохранению изменений данных в логической таблице. Каждая операция является результатом выполнения одного запроса на загрузку или обновление данных. Источником данных может быть топик Kafka, сам запрос или датасорс.

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

Операции атомарны: если системе не удалось выполнить какое-то изменение в таблице, вся операция отменяется. Система изолирует изменения по операции от изменений по другим операциям и позволяет обращаться к данным отдельной операции.

Шаги по добавлению, удалению и изменению данных описаны в разделах Загрузка данных и Обновление данных.

Нумерация операций

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

Система не гарантирует непрерывность нумерации операций.

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

Операции записи в одной логической таблице

Номер операции соответствуют номеру версий данных в истории изменений логической БД. К любой такой версии можно обратиться с помощью ключевого слова FOR SYSTEM_TIME.

Непротиворечивость изменений в операции

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

Информацию о разных состояниях одного объекта необходимо разделять по разным операциям записи, как показано в примере на рисунке ниже. В примере показано изменение данных магазина, сменившего адрес. Первоначальные данные добавлены операцией 2, а новые данные — операцией 3.

Изменение данных магазина, сменившего адрес

Операции в дельте и вне дельты

Операции записи можно выполнять в дельте или вне дельты.

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

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

Статусы операций

Возможные статусы операции записи:

  • Выполняется (0) — обработка операции запущена и еще не завершена,
  • Успешно обработана (1) — обработка операции успешно завершена,
  • Отменяется (2) — отмена операции запущена и еще не завершена,
  • Отменена (3) — отмена операции успешно завершена.

Операции со статусами «Выполняется» и «Отменяется» называются незавершенными, операции со статусами «Успешно обработана» и «Отменена» — завершенными.

Управление операциями

Незавершенные операции записи можно перезапускать и отменять. Подробнее см. в разделе Управление операциями записи.