Совет
№4
Исключительно быстрое управление сложными измерениями "Клиент"
Материал опубликован с разрешения компании Ralph Kimball Associates
Автор оригинала: Ральф Кимбал (все
статьи)
Перевод на русский язык: Константин Лисянский
Оригинальный документ располагается здесь.
Многие разработчики хранилищ данных должны иметь дело с трудными
измерениями "Клиент", которые одновременно и широкие и
глубокие. Измерение "Клиент" может иметь 100 или более
описательных атрибутов и содержать миллионы строк. Иногда "клиенты"
- это владельцы полисов медицинского страхования, в других случаях
это - владельцы транспортных средств. Но проблемы проектирования
при этом одинаковые.
Часто в таких ситуациях хранилище данных получает полностью обновлённую
копию измерения "Клиент" с периодичностью, до одного раза
в день. Естественно, идеальной ситуацией было бы, если бы в хранилище
поступали только "дельты" (изменённые данные), но в большинстве
случаев хранилище данных должно находить изменившиеся записи путём
тщательного просмотра всего файла. Этот процесс сравнения вчерашних
записей с сегодняшними для каждой записи в поисках изменений является
очень запутанным и медленным.
Вот метод, который выполняет шаг сравнения с ослепительной скоростью
и предоставляет дополнительный бонус в виде более простой программы
преобразования и загрузки данных. Этот метод основан на простом
коде CRC, который вычисляется для каждой записи (не для каждого
поля) во входящем файле с информацией о клиентах. Больше о CRC через
мгновение. Вот шаги, которые необходимо запрограммировать:
Прочитайте каждую запись сегодняшнего файла с информацией о
клиентах и рассчитайте величину CRC для неё.
Сравните это значение CRC со значением CRC для этой же записи,
которое вы рассчитали вчера и сохранили. Вам нужно будет выполнить
сопоставление записей на основе естественных ключей оперативной
системы (идентификатора клиента) для того чтобы убедиться в том,
что вы сравниваете правильные записи.
Если коды CRC совпадают, можете быть уверены в том, что все
сто полей двух записей полностью совпадают. ВАМ НЕ НАДО СРАВНИВАТЬ
КАЖДОЕ ПОЛЕ ПО ОТДЕЛЬНОСТИ.
Если коды CRC отличаются, вы можете немедленно создавать новый
суррогатный ключ и помещать обновлённую запись в измерение "Клиент"
вашего хранилища. Это медленно изменяющееся измерение типа 2 (SCD
2). Более основательная версия программы могла бы произвести поиск
во всех ста полях для принятия решения о дальнейших действиях.
Может быть, значения некоторых полей приведут к необходимости
переписать запись в таблице измерения хранилища, что будет в случае
SCD типа 1.
Если вы никогда не слышали о кодах CRC, не унывайте: ваш программист
процедур загрузки данных знает, что это такое. CRC - это сокращение
для Cyclic Redundancy Checksum. Это математическая методика создания
уникального кода для каждой входной записи. Алгоритм вычисления
кода CRC можно реализовать с помощью языков программирования Basic
или C. Большинство вводных курсов по программированию описывают
алгоритм построения кода CRC. Обратитесь также к поисковой системе
Google с поиском по ключевым
словам "CRC code" или "checksum utility".
Я буду рад услышать о любых интересных методиках, подобных этой,
разработанных вами для вашего многомерного хранилища данных. Пошлите
мне электронное письмо с описанием вашей методики.
Если вы нашли в сети интересные ссылки на ресурсы по технологиям
хранилищ данных, OLAP, CRM или data mining, и хотите поделиться
ими с другими, присылайте их.
Я с удовольствием размещу их на этом сайте.