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