Версионирование данных

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

Нумерация версий данных

Версии данных нумеруются в рамках логической БД — в микросекундах с 00:00:00 UTC 1 января 1970 года. Последовательность нумерации гарантируется только на уровне логической сущности, так как запись в разные логические таблицы и синхронизация разных материализованных представлений могут происходить параллельно.

Диапазон актуальности записи

Записи логической таблицы или материализованного представления с одинаковым первичным ключом считаются разными версиями одного объекта.

Для каждой записи фиксируется диапазон ее актуальности:

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

Текущие и исторические записи

Добавленные записи, которые не были удалены или заменены (с незавершенным диапазоном актуальности), называются текущими записями. Замененные и удаленные записи (с завершенным диапазоном актуальности) называются историческими.

Система перемещает обновленные и удаленные записи в категорию исторических:

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

Пример версионирования

На рисунке ниже показан пример нескольких версий данных. В версиях 1745030465002175 и 1745030465113976 изменения внесены в логическую таблицу stores, в версии 1745030465003246 — в другую таблицу.

Записи о магазине, относящиеся к разным версиям данных

Версионирование на физическом уровне

Изменения данных логических таблиц и материализованных представлений сначала сохраняются во временных (буферных) физических таблицах. По мере завершения операций записи данные перемещаются в физические таблицы, предназначенные для постоянного хранения данных.

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

Подробнее о распределении данных по физическим таблицам см. в разделе Физическая схема данных.