Проверка обновленных данных измерений - PullRequest
0 голосов
/ 12 августа 2010

У меня есть база данных OLTP, и в настоящее время я создаю хранилище данных. В DW есть таблица измерений (DimStudents), которая содержит данные об учащемся, такие как сведения об адресе, адрес электронной почты, настройки уведомлений.

В базе данных OLTP эти данные распределены по нескольким таблицам (так как это стандартная база данных OLTP в 3-й нормальной форме).

В настоящее время существует 10 390 записей, но ожидается, что эта цифра будет расти.

Я хочу использовать ETL типа 2, поэтому, если запись изменилась в базе данных OLTP, новая запись добавляется в DW.

Как лучше всего сканировать 10000 записей в DW, а затем сравнивать результаты с результатами в нескольких таблицах, содержащихся в OLTP?

Я подумываю о создании «снимка» с использованием временной таблицы данных OLTP и последующем сравнении результатов с данными в таблице измерений в DW.

Я использую SQL Server 2005. Это не самый эффективный способ. Есть ли альтернативы?

Ответы [ 3 ]

1 голос
/ 13 августа 2010
  • Введение LastUpdated в таблицы исходной системы (OLTP).Таким образом, вы можете извлечь меньше, используя:

    WHERE LastUpdated> = some_time_here

Вы, похоже, используете сервер SQL, поэтому вы также можете попробовать тип обращения к строке (8 байтdb-scope-unique counter)

  • При импорте данных в DW используйте инструмент ETL (SSIS, Pentaho, Talend).Все они имеют составную часть (блок, преобразование) для обработки SCD2 (медленно изменяющийся тип измерения 2).Пример SSIS см. Здесь .Преобразование делает именно то, что вы пытаетесь сделать - все, что вам нужно сделать, это указать, какие столбцы отслеживать и что делать, когда обнаружит изменение.
0 голосов
/ 12 августа 2010

Есть ли в базе данных OLTP контрольный журнал?

Если это так, то вы можете запросить контрольный журнал только для записей, которые были затронуты с момента последнего ETL.

0 голосов
/ 12 августа 2010

Звучит так, будто вы приближаетесь к этому виду назад.Типичный способ выполнения ETL (извлечение, проверка, загрузка):

  1. «Извлечение» данных из базы данных OLTP
  2. Сравнение («проверка») извлеченных данных с размернымданные, чтобы определить, есть ли изменения или какая-либо другая проверка должна быть выполнена
  3. Вставьте данные («Загрузить») в таблицу измерений.

Эффективно, на шаге № 1вы создадите физическую запись с помощью запроса к нескольким таблицам в вашей базе данных OLTP, а затем сравните эту результирующую запись с вашими данными измерений, чтобы определить, было ли внесено изменение.Это стандартный способ ведения дел.Кроме того, 10000 строк довольно незначительны с точки зрения объема.Любой процесс СУБД и ETL должен быть способен обрабатывать этот процесс не более чем за несколько секунд.Я знаю, что в SQL Server есть DTS, хотя я не уверен, изменилось ли имя в более поздних версиях.Это идеальный инструмент для чего-то подобного.

...