Физическая таблица
Физическая таблица — таблица СУБД хранилища, каждая запись которой описывает состояние объекта логической таблицы или материализованного представления в определенный период времени. В зависимости от типа физической таблицы состояние объектов, хранящееся в ней, может быть новым (“горячим”), актуальным или архивным.
Все данные, загруженные в систему, до фиксации изменений считаются новым состоянием объектов и хранятся в виде горячих записей. При фиксации изменений система одномоментно обновляет состояние объектов, исключая возможность чтения грязных данных. Обновление происходит в следующем порядке:
- Сравниваются новое и актуальное состояния объектов.
- Определяется, какие записи нужно добавить (если таких объектов нет среди актуальных данных), а какие — заменить новыми (если объекты уже есть в системе, и нужно обновить их состояние).
- Состояние новых объектов фиксируется в виде актуальных записей.
- Для существующих объектов записи, которые считались актуальными до момента фиксации изменений, перемещаются в категорию архивных, а новое состояние объектов фиксируется в виде актуальных записей.
- Все горячие записи удаляются.
- В историю изменений состояния системы добавляется новая дельта с номером, увеличенным на 1 относительно предыдущей зафиксированной дельты.
На рисунке ниже показан пример обновления состояния объекта логической таблицы clients
— набора данных одного клиента. В примере рассматривается следующая ситуация: номер телефона клиента был ранее изменен со значения phone_1
на phone_2
, это изменение было зафиксировано, и теперь загружаются данные того же клиента с новым адресом (address_2
).
В условиях, рассмотренных в примере, данные клиента обновляются в следующем порядке:
- Загрузка данных: запись с новым адресом (
address_2
) сохраняется в качестве горячей записи. - Фиксация изменений данных: запись с предыдущим адресом (
address_1
) переносится в категорию архивных, запись с новым адресом (address_2
) — в категорию актуальных, и горячая запись удаляется. Обновление записей происходит одномоментно.