Вы находитесь на страницах старой версии сайта. Перейдите на новую версию OLAP.ru |
Поиск по сайту | ||||||
Новости | ||||||
Основы OLAP | ||||||
Продукты | ||||||
Business Objects/ Crystal Decisions | ||||||
Каталог | ||||||
OLAP в жизни | ||||||
Тенденции | ||||||
Download | ||||||
| ||||||
Порядок разработки ETL-процессовЕ.В. Островский, специалист производственного центра Datagy компании "Диасофт" ВведениеИзвлечение, преобразование и загрузка, известные среди специалистов по базам данных под аббревиатурой ETL, – это основные этапы переноса информации из одного приложения в другое. Для достижения успеха при переносе данных из одной системы в другую крайне важно четко представлять процессы ETL, а также структуру исходного приложения и приложения назначения. Данная статья описывает общие правила разработки ETL-процессов и определяет последовательность операций при загрузке хранилища данных (ХД) из источников данных. Стандартизация последовательности операций при загрузке ХД, учитывая важность и стоимость многих решений ETL, позволит избежать повторения ошибок, сделанных в предыдущих разработках. Кроме того, опыт разработки ETL выявил общие части ETL-процессов при загрузке разнородных источников, что позволяет говорить о единообразии подхода к разработке ETL для источников данных произвольного происхождения. В общем приложения ETL извлекают информацию из исходной базы данных, преобразуют ее в формат, поддерживаемый базой данных назначения, а затем загружают в нее преобразованную информацию. Для того чтобы инициировать процесс ETL, применяются программы извлечения данных для чтения записей в исходной базе данных и для подготовки информации, хранящейся в этих записях, к процессу преобразования. Чтобы извлечь данные из исходной базы данных, можно выбрать один из трех вариантов – создать собственные программы, обратиться к готовому специализированному инструментарию ETL или использовать сочетание и того и другого. В производственном центре Datagy создан собственный оригинальный инструментарий, который позволяет сочетать технологические приемы, сложившиеся в Datagy, с программами независимых разработчиков, которые выполняют специализированные функции, уникальные для конкретного окружения. Во многих случаях существующий инструментарий ETL способен удовлетворить большую часть требований к переносу данных. Описав в целом задачи и преимущества ETL-процессов, давайте рассмотрим их место и алгоритм работы в процессе построения хранилищ данных. Структура процесса перегрузки данныхПроцессВ общем случае, программист ETL может представлять себе архитектуру ХД в виде совокупности трёх областей: источник данных( совокупность таблиц оперативной системы и дополнительных справочников (классификаторов, таблиц согласования), позволяющую создать многомерную модель данных с требуемыми измерениями), промежуточная область (совокупность таблиц, использующихся исключительно как промежуточные при загрузке ХД) и приёмник данных. Движение данных от источника к приёмнику называют потоком данных. Необходимые потоки данных формирует и описывает аналитик (см. рис. 1).
Рисунок 1 Процесс перегрузки данных – это реализация потока данных от единственного
набора данных источника до одного или нескольких наборов данных ХД.
Процесс перегрузки данных включает в себя одну или несколько фаз, которые выполняются по очереди, в зависимости от типа фазы. ФазаФаза процесса перегрузки данных (подпроцесс, обеспечивающий решение определённой задачи в рамках ETL-процесса) соответствует стадии загрузки источника данных, то есть количество используемых фаз ограничено стадиями, которые должен пройти набор данных источника, чтобы быть загруженным в ХД. Фаза состоит из шагов и может включать операции управления выполнением перегрузки. Управление выполнением заключается в анализе количества записей в ключевых таблицах и флагов состояния, и реализуется с помощью языка скриптов утилиты SQLExecutor. ШагШаги представляют собой отдельные SQL-запросы, которые выполняют единичные действия по перегрузке, преобразованию и выборке данных. Каждый запрос (равно как и скрипты фаз и процессов) оформляется в отдельном файле в соответствии со «Стандартом на оформление технологических документов». Группа процессовГруппы процессов введены для организации периодических перегрузок данных и указывают чёткую последовательность выполнения процессов внутри группы. Стадии загрузки источника данныхВ процессе загрузки, данные проходят следующие основные стадии, каждая из которых реализуется в виде отдельной фазы процесса перегрузки данных: Таблица 1: Основные стадии процесса загрузки данных * Операция резервирования BACKUP в основной массе проектов по созданию двухуровневых ХД не применяется.Требуется дальнейшее рассмотрение целесообразности введения этой операции вообще, так как она может быть заменена применением SCD уровня 2 и выше. ** Операция удаления записей из ХД в общем случае не реализуется из-за отсутствия потребности в ней. Решение о её создании принимается каждый раз, если того требует техническое задание. Рассмотрим основные стадии процесса загрузки данных подробнее. Извлечение данных (IDC)Результатом работы, на этой стадии, является перегрузка данных из источника в реляционную СУБД, в промежуточную область. Для этой цели, под каждый источник данных, в промежуточной области создаётся своя таблица. Все таблицы имеют префикс “sttm” (сокр. от “STaging Table for Middle-layer data”), либо “stti” (сокр. от “STaging Table for Initial load”) (также вошла в обиход фраза: «Таблица принадлежит области STTM (STTI)»). Таблицы, участвующие в загрузке справочников SCF и UCF чаще всего относятся к области STTI, так как не требуют написания процедур обновляющей загрузки; а те, что участвуют в загрузке таблиц фактов и обновляемых RDS – к STTM, так как для них обновляющая загрузка (загрузка данных в ХД с учётом наличия данных в ХД) почти всегда разрабатывается. Однако иногда встречаются источники информации, поступающей в разное время
или из разных оперативных систем, но идентичной по структуре. Например,
это могут быть однотипные сведения из разных филиалов. Такие источники
лучше
всего считать не различными, а одним распределённым. Самый первый этап перегрузки данных – выгрузка информации из источника данных к программе-обработчику, аналитику или на сервер перегрузки данных. Выгрузка может производиться следующими путями, в зависимости от характера источника данных, требованиям к организации доступа, информационной безопасности, и т.д.: Таблица 2 Отдельным пунктом стоит управление выгрузкой данных, а именно указание глубины выборки данных по времени. Как правило, достаточно обеспечить 2 режима работы процедуры выгрузки: выгрузка всей информации, без учёта времени её поступления, и выгрузка за некоторый последний период (например, за последний закрытый день). Универсальным средством решения является возможность задания, в качестве параметра процедуры, даты, начиная с которой будут выбираться данные. Структурирование данных (Structuring)Источники данных, поступающие на вход ETL-процессов, потенциально имеют произвольную внутреннюю структуру, в общем случае далёкую от табличной. В связи с этим данные, находящиеся в источнике требуется сначала упорядочить и привести к виду, пригодному к загрузке в реляционную таблицу по принципу «один к одному». Это может быть один из следующих типов файлов:
Как уже сказано выше, структурированию подвергаются только данные, которые выгружаются из неструктурированных источников данных. Обработка данных (Refinement)Структурированные данные могут потребовать дополнительной обработки (очистки, фильтрации, согласования, и т.д.), с целью повышения качества информации. В обработке данных, на этом этапе, могут задействоваться различные инструменты: от ручного исправления текстового файла аналитиком до утилит применяющих продвинутые методы анализа данных (нейронные сети, тезаурус, кластеризация...). Однако, на практике (можно сказать – к сожалению), применяются пока лишь простейшие методы преобразования типов данных, из-за отсутствия потребности проектов в сложных и дорогостоящих методах повышения качества данных. Пересылка данных (Transfer)В ходе проектирования процедур извлечения данных необходимо учесть местонахождение источников данных и условия обеспечения безопасности при пересылке и обработке данных. В случае расположения источников данных на сервере, отдельном от сервера СУБД промежуточной области ХД, необходимо обеспечить пересылку данных, уже подготовленных к загрузке в реляционную СУБД, по защищённым (доверенным) каналам связи на место, откуда они смогут быть загружены в соответствующую таблицу промежуточной области. В связи с широкими возможностями современных СУБД по работе с удалёнными данными, эта проблема является не столь сложной в программном смысле, сколь требующей грамотного администрирования. В таком случае этап пересылки данных объединяется с этапом импорта данных в СУБД (Upload). И наоборот, данные источника не всегда могут быть обработаны (подпроцесс Refinement) на сервере поставщика данных. Тогда их необходимо переслать для обработки на сервер консолидации данных, что также требует наличия защищённых каналов связи и административных ресурсов. В этом случае, этап пересылки выполняется прежде структурирования данных. Импорт данных в СУБД (Upload)Для дальнейшей обработки, структурированные данные необходимо подгрузить в соответствующую таблицу СУБД (которую нужно предварительно очистить). При этом существует вероятность, что отдельные записи не смогут, в силу физических ограничений или несовместимости типов данных, быть вставлены. По возможности, такие «неподходящие» записи нужно сохранять в отдельный файл той же структуры, что и импортируемый, с целью дальнейшего анализа и повышения качества данных. Такой файл носит название «файл исключений» и должен обрабатываться дополнительно. Обработка ошибок в стадии IDC Ошибки могут появляться в любом из подпроцессов стадии извлечения данных.
Отследить их возникновение – задача слабо формализуемая. Кроме того, зачастую
вся ответственность
за обеспечение корректной работы процедур извлечения данных возлагается
на программистов, что неверно и может быть оправдано только для жёстко структурированных
источников данных (например, когда загрузка производится напрямую из СУБД). Примеры фатальных ошибок:
Типовые сценарии извлечения данных Таблица 3 * В случае извлечения данных из ODBC-, JDBC-источника данных, или СУБД, применяется функция Pump программы SQLExecutor. Она логически разделяет пересылку данных на две части – извлечение и вставка данных – и, между этими частями, может применить программную обработку данных через механизм трансформаторов. Подробнее см. документацию по SQLExecutor. Очистка данных Очистка данных заключается в фильтрации тех данных, которые, в каком-либо
смысле, не удовлетворяют существующим физическим ограничениям или бизнес-правилам. Рисунок 2 STER В поток STER, как уже сказано, попадают данные, не пригодные к загрузке в ХД по какому-либо заранее заданному критерию. Эти критерии определяются на этапе информационного исследования и преобразуются в SQL-запросы разработчиком ETL. Категории критериев оценки качества данных можно свести к следующим классам: A. По критичности:
B. По проверяемым объектам:
Возможны несколько вариантов реализации процедур фильтрации потока STER:
Преимущества второго метода в том, что он даёт полное представление обо всех аспектах качества входных данных, и использует более простую форму таблиц области STER. Однако он требует решения задачи заполнения record_id для каждой таблицы STTM. Для проектов, где качество данных не является составляющей основных требований, поток STER просто не выводится, и процедуры проверки данных не разрабатываются. STAC Таблица области STAC содержит данные, повторяющие входные по составу полей,
но уже прошедшие все фильтры на этапе заполнения STER, и, таким образом,
признанные качественными. Разработка дальнейших процедур производится
с учётом того, что
данные области STAC не «пропадут» и не «задвоятся» при объединении, будут
удовлетворять бизнес-правилам и ограничениям на формат данных.
Рисунок 3. Способ 1
Рисунок 4. Способ 2 Преобразование данных Преобразование данных сводится к нескольким элементарным операциям:
Вычисление – это операция, результат которой функционально зависит от её параметров, и сама операция может быть реализована на уровне скалярных функций. Агрегация – это операция, которая реализуется как функциональная зависимость на уровне агрегатных функций (функции ряда). Статистика – операция получения данных на основе количественной и/или исторической информации; результат статистической функции напрямую не зависит от конкретных значений полей в таблице. Генерация суррогатных ключей – операция сопоставления естественному ключу (чаще всего – составному) уникального суррогатного ключа - идентификатора набора данных ХД. Применяется для обновляемых RDS. Решение о способах реализации принимается в каждом случае отдельно. Чаще всего применяются следующие способы: последовательная нумерация (суррогатный ключ каждого нового естественного ключа получается увеличением существующего максимального из известных суррогатных ключей на единицу) и кодирование естественного ключа (суррогатный ключ вычисляется из естественного с помощью функциональной зависимости). Согласование ключей – операция приведения идентификаторов набора данных источника к виду, конформному идентификаторам ХД. Согласование ключей выполняется чаще всего с помощью карт соответствия идентификаторов (IDMAP). Результат всех преобразований поступает в таблицы области STCF, структура которых повторяет структуру целевых таблиц ХД, за исключением служебных полей, существование которых оправдано только в ХД. Ограничения (constraints) в таблицах области STCF не создаются, так как качество информации должно быть проверено вполне на этапе очистки данных. Очевидно, что таблиц STCF должно быть задействовано столько же, сколько целевых таблиц у данного процесса перегрузки. Распределение данных Записи могут распределяться из STCF на «новые» (область STIN) и «повторные» (область STUP) разными методами. Самый простой, но, в то же время, и самый ресурсоёмкий способ – полное сравнение записей из STCF с данными, которые уже находятся в ХД, при этом в качестве параметров сравнения используется имеющаяся ключевая информация (первичные и альтернативные ключи). Альтернативой является использование признаков модифицированных данных, или полей даты-времени последней модификации записи, если, конечно, такие поля есть в источнике данных и содержат информацию высокого качества. Физическая структура таблиц областей STIN и STUP, также как и STCF, полностью повторяет структуру целевых таблиц ХД. Вставка и обновление данных Вставка данных производится простым копированием записей из таблицы
STIN в таблицу ХД. Оптимизация перегрузки данных Общие приёмы оптимизации
Помимо основных правил оптимизации выполнения SQL-запросов, описанных в литературе по РСУБД (использование индексов, отказ от коррелированных подзапросов в пользу derived query, и т.п.), в процессах перегрузки данных есть несколько узких мест, которые можно оптимизировать. Эти узкие места – фаза очистки данных, этап генерации суррогатных ключей и фаза вставки данных в ХД. Оптимизация очистки данных Способ 1 Для частичного устранения этого недостатка, формирование дополнительных промежуточных таблиц следует вводить только для проверки критериев, которая занимает значительное время. Способ 2 Однако необходимо, чтобы представления создавались прямо в фазе очистки данных, или же создавать их таким образом, чтобы они не накладывали ограничений на данные в базовой таблице. Способ 3 Оптимизация процедуры формирования суррогатных ключей Оптимизация фазы вставки данных в ХД
|
© 2001 Interface Ltd