Версионирование данных
Изменения, внесенные одной операцией записи, создают новую версию данных в истории изменений логической БД.
Нумерация версий данных
Версии данных нумеруются в рамках логической БД — в микросекундах с 00:00:00 UTC 1 января 1970 года. Последовательность нумерации гарантируется только на уровне логической сущности, так как запись в разные логические таблицы и синхронизация разных материализованных представлений могут происходить параллельно.
Диапазон актуальности записи
Записи логической таблицы или материализованного представления с одинаковым первичным ключом считаются разными версиями одного объекта.
Для каждой записи фиксируется диапазон ее актуальности:
- начало — версия данных в логической БД, когда запись появилась;
- конец — версия, после которой запись была удалена или заменена.
Текущие и исторические записи
Добавленные записи, которые не были удалены или заменены (с незавершенным диапазоном актуальности), называются текущими записями. Замененные и удаленные записи (с завершенным диапазоном актуальности) называются историческими.
Система перемещает обновленные и удаленные записи в категорию исторических:
- для логических таблиц:
- при завершении операции записи — если операция выполнена вне дельты;
- при закрытии дельты — если операция выполнена в дельте;
- для материализованных представлений — при успешном завершении синхронизации.
Пример версионирования
На рисунке ниже показан пример нескольких версий данных. В версиях 1745030465002175
и 1745030465113976
изменения внесены в логическую таблицу stores
, в версии 1745030465003246
— в другую таблицу.
Записи о магазине, относящиеся к разным версиям данных
Версионирование на физическом уровне
Изменения данных логических таблиц и материализованных представлений сначала сохраняются во временных (буферных) физических таблицах. По мере завершения операций записи данные перемещаются в физические таблицы, предназначенные для постоянного хранения данных.
В разных СУБД постоянные данные могут храниться в одной или нескольких физических таблицах.
Подробнее о распределении данных по физическим таблицам см. в разделе Физическая схема данных.