Преобразование реляционной базы данных OLTP в модель хранилища данных - PullRequest
5 голосов
/ 15 мая 2009

Каковы общие подходы к проектированию, используемые при загрузке данных из типовой модели базы данных OLTP Entity-Relationship в модель хранилища данных Kartball star / модель Marts?

  • Используете ли вы промежуточную область для выполнения преобразования, а затем загружаете на склад?
  • Как связать данные между хранилищем и базой данных OLTP?
  • Где / Как вы управляете процессом преобразования - в базе данных в виде sprocs, пакетов dts / ssis или SQL из кода приложения?

Ответы [ 5 ]

8 голосов
/ 15 мая 2009

Лично я склонен работать следующим образом:

  1. Сначала спроектируйте хранилище данных. В частности, спроектируйте таблицы, которые необходимы как часть DW, игнорируя любые промежуточные таблицы.
  2. Разработка ETL с использованием служб SSIS, но иногда с помощью служб SSIS, вызывающих хранимые процедуры в задействованных базах данных.
  3. Если какие-либо промежуточные столы необходимы как часть ETL, хорошо, но в то же время убедитесь, что они очищены. Промежуточная таблица, используемая только как часть одной серии шагов ETL, должна быть усечена после того, как эти шаги выполнены, с успехом или без него.
  4. У меня есть пакеты служб SSIS, которые, по крайней мере, обращаются к базе данных OLTP для извлечения данных в промежуточные таблицы. В зависимости от ситуации они могут обрабатывать таблицы OLTP непосредственно в хранилище данных. Все такие запросы выполняются WITH (NOLOCK).
  5. Документ, Документ, Документ. Уточните, какие входные данные используются каждым пакетом и куда идет выход. Обязательно задокументируйте критерии, по которым выбираются входные данные (последние 24 часа? С момента последнего успеха? Новые значения идентификаторов? Все строки?)

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

2 голосов
/ 02 августа 2010

Я согласен с высоко оцененным ответом, но решил добавить следующее:

* Do you use a staging area to perform the transformation and then

загрузить на склад?

Это зависит от типа преобразования, требует ли оно постановки. Постановка предлагает преимущества разбиения ETL на более управляемые куски, но также предоставляет рабочую область, которая позволяет выполнять манипуляции с данными, не затрагивая хранилище. Это может помочь иметь (по крайней мере) некоторые измерения измерений в промежуточной области, в которых хранятся ключи от системы OLTP и ключ последней дим-записи, которые можно использовать в качестве поиска при загрузке записей фактов. Преобразование происходит в самом процессе ETL, но может потребоваться или не потребоваться некоторая подготовка, чтобы помочь ему в этом.

* How do you link data between the warehouse and the OLTP database?

Полезно загрузить бизнес-ключи (или фактические первичные ключи, если они доступны) в хранилище данных в качестве ссылки обратно на систему OLTP. Кроме того, аудит в процессе DW должен записывать происхождение каждого бита данных путем записи процесса загрузки, который его загрузил.

* Where/How do you manage the transformation process - in the

база данных в виде пакетов sprocs, dts / ssis, или SQL из кода приложения?

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

2 голосов
/ 15 мая 2009

В настоящее время я работаю над хранилищем данных малого / среднего размера. Мы принимаем некоторые из концепций, которые выдвигает Кимбалл, то есть звездную схему с таблицами фактов и измерений. Мы структурируем его так, что факты объединяются только с измерениями (не факт с фактом или измерение с измерением - но это наш выбор, не говоря, что это так, как должно быть сделано), поэтому мы сглаживаем все измерения, объединяющие таблицу фактов.

Мы используем SSIS для перемещения данных из производственной БД -> исходной БД -> промежуточной БД -> отчетной БД (мы, вероятно, могли бы использовать меньше БД, но так оно и есть).

SSIS действительно хорош, поскольку позволяет очень логично структурировать потоки данных. Мы используем комбинацию компонентов SSIS и хранимых процедур, где одна приятная особенность SSIS - возможность предоставлять команды SQL в качестве преобразования между потоком данных источника / назначения. Это означает, что мы можем вызывать хранимые процедуры в каждой строке, если мы хотим, что может быть полезно (хотя и немного медленнее).

Мы также используем новую функцию SQL Server 2008, которая называется сбор данных изменений (CDC), которая позволяет вам проверять все изменения в таблице (вы можете указать, какие столбцы вы хотите просмотреть в этих таблицах), поэтому мы используем чтобы узнать, что изменилось в рабочей БД, чтобы мы могли переместить только эти записи в исходную БД для обработки.

1 голос
/ 15 мая 2009

Хорошее объяснение процесса Джона Сандерса.

Если вы хотите реализовать проект Datawarehouse в SQL Server, вы найдете всю информацию, необходимую для доставки всего проекта, в отличном тексте " Набор инструментов Microsoft Data Warehouse ".

Как ни странно, один из авторов - Ральф Кимбалл: -)

0 голосов
/ 16 июня 2010

Возможно, вы захотите взглянуть на Data Vault Modeling . В нем утверждается, что он решает некоторые проблемы с единичными терминами, такие как изменение атрибутов.

...