Разработка WH.

Объявим БД foodmart OLTP системой. Мы разработаем и спроектируем с нуля систему аналитики.

Schema WH /Схема WH

Поехали разрабатывать такую систему WH! Рекомендую просматривать видео на Youtube (ссылка http://youtu.be/MaQaSMHi57c)

План видео /Video plan (ссылка на youtub http://youtu.be/MaQaSMHi57c)
00:07 Цели и задачи
00:14 Условия
00:34 Схема
00:47 Подключение к БД Foodmart
01:34 Проектирование таблиц
03:41 Добавление суррогатных ключей
11:15 Создание альтернативного ключа
19:43 Добавление дополнительных полей (для Dimension lookup/update)
21:37 Создание и удаление индексов
28:28 Публикация схемы в Mysql
32:32 Публикация схемы в PostgreSQL
33:47 Контрольное измерение

Вот ссылка на схему в редакторе SQL Power Architect и презентацию (Загрузка/Download). Краткий обзор редактора можно посмотреть по этой ссылке (Обзор ER редакторов).

Практически все измерения будем обновлять “Insert / Update”, одну таблицу будем обновлять через “Dimension lookup/update”.

При разработке WН стоит обратить внимание на присутствие “контрольного измерения” (Control Dimension, выделено красным цветом на ER диаграмме), которое будет контролировать полноту таблицы фактов и будет по особому соединятся с таблицей фактов. Пока я не находил аналогов “контрольному измерению” в литературе. Такой тип измерений я разработал при внедрении системы аналитики на своем предприятии. Мне это показалось очень удобным и красивым.

Могу сказать, что это измерение призвано решить следующие виды задач:

  1. Возможность загрузки данных по перекрестным периодам. Очень актуально для России и Дальнего востока, когда связь может отсутствовать неделями.
  2. Измерение ответственно за фильтрацию фактических данных. То есть из поступающего из OLTP множества данных для таблицы фактов мы должны удалить те данные, которые уже есть в контрольном измерении. В итоге получаем “кандидата” фактической таблицы к загрузке в основную таблицу.
  3. Из “кандидата” в “контрольное измерение” берутся только уникальные значения.
  4. Соединение таблицы измерений с фактической таблицей будет происходить по внешнему ключу с ограничением cascade delete.
  5. Так как контрольное измерение содержит дату транзакции (в нашем примере в формате timestamp), то совместно с 4 пунктом дает нам возможность откатывать таблицу фактов на определенную дату.
  6. Увеличение гранулярности (получить детализацию по часам, минутам ….) времени без увеличения размерности таблицы измерений времени.
  7. Не требует вводить составной ключ в таблице фактов (для контроля полноты данных).
  8. И еще многие улучшения, о которых можно поговорить, если будет интересно, в том числе измерение делает возможным применять некоторые алгоритмы ИАД.

Главное при разработке системы помнить, на какие вопросы вы хотите ответить разработав WH.

P.S. После завершения проекта Pentaho CE напишу статейку про обзор видов измерений и добавлю в рассмотрение “контрольное измерение”.

Ссылки по теме:

  1. SQL Power Architect http://www.sqlpower.ca/page/architect_download_os
  2. Часть 5. Организация хранилища данных (WareHouse)