Медленно меняющиеся измерения (Slowly changing dimensions)

Синонимы: SCDs

В теории баз данных медленно меняющимися называют измерения, значения которых со временем могут изменяться, но не часто. При этом изменяются неключевые атрибуты измерения.

Примером таких измерений может являться «Клиент», т.к. клиент может изменить фамилию, номер паспорта и другие атрибуты, но происходит это очень редко. Таким образом, такие изменения случаются хотя и редко, но являются непредсказуемыми, происходят под воздействием внешних факторов случайного характера и не укладываются в общую схему работы с данными. Это способно создать определённые проблемы, например, нарушить ссылочную целостность данных.

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

Для всех типов медленно меняющихся измерений метод обработки записей основан на предварительном определении производимого с ней действия: вставки, изменения, удаления. Каждому действию будет соответствовать своя логика обработки, а для записи установлен один из следующих статусов:

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

Как правило, механизм работы с медленно меняющимися измерениями реализуется в подсистеме ETL корпоративных хранилищ данных, а статус записи присваивается в момент обнаружения изменений.

Можно выделить три вида медленно-меняющихся измерений:

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

Если в измерениях второго типа число фиксируемых изменений не ограниченно, то в измерениях 3-го типа оно ограничено числом дополнительных полей.