Это хорошая идея использовать триггеры для связи с измерением времени в таблицах фактов в хранилище данных? - PullRequest
0 голосов
/ 17 мая 2011

Я нахожусь в процессе проектирования хранилища данных. Существует несколько таблиц фактов, и весьма вероятно, что в каждую таблицу фактов вставлены сотни фактов. Хотя это немного рано, но все же я думал об оптимизации.

У меня есть две таблицы времени

  • дата (уникальная строка за каждый день)
  • время суток (уникальный ряд за каждую минуту дня)

Во всех моих таблицах фактов у меня есть столбец с полной датой.

Что говорит ваш опыт, должен ли я использовать операторы select в коде для запроса идентификаторов измерений из таблицы измерений времени или разрешить нулевые столбцы измерения времени в таблицах фактов и использовать триггеры для заполнения значений? *

Ответы [ 2 ]

1 голос
/ 17 мая 2011

Измерения даты и времени суток - это (очень необычный) случай в хранилище данных, когда выгоден суррогатный ключ с «магическими» значениями.Первичные ключи можно сделать в целых числах измерения даты со значениями, такими как 20110516, и в измерениях времени дня 1 - 1440 или 1 - 2400.

Я предлагаю вычислять соответствующие значения в записях фактов и добавлять полядля них, скажем, CALENDAR_ID, TIME_OF_DAY_ID.В зависимости от размера ваших данных, вы, вероятно, выиграете от индексации CALENDAR_ID и, возможно, даже от ее разделения.Если вы уверены в качестве своих данных, вы можете пропустить ограничения внешнего ключа для этих полей, чтобы повысить производительность во время загрузки.

0 голосов
/ 17 мая 2011
  • Для таблиц фактов в таблицах фактов недопустимы пустые значения.
  • Просто используйте ваш ETL для поиска ключей по измерению даты и времени для каждой строки таблицы фактов.
  • В триггерах нетDW, вся загрузка и поиск ключа выполняется через приложение ETL.
...