Порядок
разработки ETL-процессов
Автор: Евгений Островский
Аннотация
Извлечение, преобразование и загрузка, известные среди специалистов
по базам данных под аббревиатурой ETL (Extract, Transform and Load),
— это основные этапы переноса информации из одной базы данных (приложения)
в другую. Для достижения успеха при проектировании переноса данных
из одной системы в другую крайне важно четко представлять процессы
обработки данных, а также структуру данных исходного приложения
и приложения назначения.
Данная статья описывает общие правила разработки ETL-процессов
и определяет последовательность операций при загрузке хранилища
данных (ХД) из источников данных.
Введение
Стандартизация последовательности операций при загрузке ХД, учитывая
важность и стоимость многих решений ETL, позволит избежать повторения
ошибок, сделанных в предыдущих разработках. Кроме того, опыт разработки
ETL выявил общие части ETL-процессов при загрузке разнородных источников,
что позволяет говорить о единообразии подхода к разработке ETL для
источников данных произвольного происхождения.
Проще говоря, приложения ETL извлекают информацию из исходной базы
данных, преобразуют ее в формат, поддерживаемый базой данных назначения,
а затем загружают в нее преобразованную информацию. Для того чтобы
инициировать процесс ETL, применяются программы извлечения данных
для чтения записей в исходной базе данных и для подготовки информации,
хранящейся в этих записях, к процессу преобразования. Чтобы извлечь
данные из исходной базы данных, можно выбрать один из трех вариантов:
создать собственные программы, обратиться к готовому специализированному
инструментарию ETL или использовать сочетание и того и другого.
В производственном центре Datagy создан собственный оригинальный
инструментарий, который позволяет сочетать технологические приемы,
сложившиеся в Datagy, с программами независимых разработчиков, которые
выполняют специализированные функции, уникальные для конкретного
окружения.
Во многих случаях существующий инструментарий ETL способен удовлетворить
большую часть требований к переносу данных. Описав в целом задачи
и преимущества ETL-процессов, давайте рассмотрим их место и алгоритм
работы в процессе построения хранилищ данных.
Структура процесса перегрузки данных
Процесс
В общем случае, программист ETL может представлять себе архитектуру
ХД в виде совокупности трёх областей: источник данных (совокупность
таблиц оперативной системы и дополнительных справочников (классификаторов,
таблиц согласования), позволяющую создать многомерную модель данных
с требуемыми измерениями), промежуточная область (совокупность таблиц,
использующихся исключительно как промежуточные при загрузке ХД)
и приёмник данных. Движение данных от источника к приёмнику называют
потоком данных. Необходимые потоки данных формирует и описывает
аналитик.
Таблица 1: Основные стадии процесса загрузки
данных
Процесс перегрузки данных – это реализация потока данных от единственного
набора данных источника до одного или нескольких наборов данных
ХД.
Различают следующие классы процессов:
1. По характеру загрузки:
a. Процесс начальной загрузки (Initial load)
b. Процесс обновляющей загрузки (Refreshing load)
2. По виду источника данных:
a. SCF (источник данных – стандартный классификатор Datagy, чаще
всего – структурированный текстовый файл)
b. UCF (источник данных – стандартный классификатор оперативной
системы, пользовательский классификатор)
c. MLR (источник данных – RDS или таблица фактов оперативной системы)
d. DWH (источник данных – хранилище данных)
Процесс перегрузки данных включает в себя одну или несколько фаз,
которые выполняются по очереди, в зависимости от типа фазы.
Фаза
Фаза процесса перегрузки данных (подпроцесс, обеспечивающий решение
определённой задачи в рамках ETL-процесса) соответствует стадии
загрузки источника данных, то есть количество используемых фаз ограничено
стадиями, которые должен пройти набор данных источника, чтобы быть
загруженным в ХД.
Фаза состоит из шагов и может включать операции управления выполнением
перегрузки. Управление выполнением заключается в анализе количества
записей в ключевых таблицах и флагов состояния, и реализуется с
помощью языка скриптов утилиты SQLExecutor.
Шаг
Шаги представляют собой отдельные SQL-запросы, которые выполняют
единичные действия по перегрузке, преобразованию и выборке данных.
Каждый запрос (равно как и скрипты фаз и процессов) оформляется
в отдельном файле в соответствии со «Стандартом на оформление технологических
документов».
Группа процессов
Группы процессов введены для организации периодических перегрузок
данных и указывают чёткую последовательность выполнения процессов
внутри группы.
Стадии загрузки источника данных
В процессе загрузки, данные проходят следующие основные стадии,
каждая из которых реализуется в виде отдельной фазы процесса перегрузки
данных:
№ |
Название |
Обозначение |
Описание |
Подпроцессы |
1 |
Извлечение |
IDC |
Стадия извлечения данных из источника и загрузки их в промежуточную
область. |
• Download
• Structuring
• Refinement
• Transfer
• Upload |
2 |
Выявление ошибок |
LOADSTER |
Данные проходят проверку на соответствие спецификациям и потенциальную
возможность загрузки в ХД. |
• STER
• STAC |
3 |
Преобразование |
MLRCONV |
Данные группируются и приводятся к виду, конформному модели
данных ХД. |
• STCF |
4 |
Распределение |
MLRDISTR |
Данные распределяются на несколько потоков, в зависимости
от способа, которым они должны быть загружены в ХД. |
• STIN
• STUP |
5 |
Вставка |
SQLLOAD |
Подготовленные данные поступают в ХД. |
• INSERT
• UPDATE
• BACKUP1
• DELETE2
|
1 Операция резервирования BACKUP в основной
массе проектов по созданию двухуровневых ХД не применяется. Требуется
дальнейшее рассмотрение целесообразности введения этой операции
вообще, так как она может быть заменена применением SCD уровня 2
и выше.
2 Операция удаления записей из ХД в
общем случае не реализуется из-за отсутствия потребности в ней.
Решение о её создании принимается каждый раз, если того требует
техническое задание.
Для удобства отслеживания новых публикаций на сайте рекомендую
подписаться на рассылку или подписаться
на канал RSS.
Если вы нашли в сети интересные ссылки на ресурсы
по технологиям хранилищ данных, OLAP, CRM или data mining, и хотите
поделиться ими с другими, присылайте
их. Я с удовольствием размещу их на этом сайте. |