Консалтинг и автоматизация в области управления
эффективностью банковского бизнеса

Журнал ВРМ World

Конвертация данных для Хранилищ

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

Группа конвертации данных исследует старые, загрязненные исходные системы, чаще всего располагающиеся на главных машинах. Обычно для большей части своей работы на главной машине они используют старый добрый Кобол, и можно предположить, что в итоге они получат самый скромный набор возможностей в любой части Хранилища. Бизнес-пользователи, скорее всего, могут подождать результатов своих запросов подольше, но они не будут ждать лишний час, пока загрузятся их данные. Вдобавок группа конвертации сталкивается с давлением, связанным с тем, что Хранилище данных может обнаружить больше проблем с исходными данными, чем какое-либо другое отдельное мероприятие. Обычно преобразующая система ставится под сомнение потому, что, поскольку она является новейшей системой, пользователи предполагают, что именно она создает проблемы.

Чтобы действительно разобраться в сложностях и ресурсах, характеризующих качественную конвертацию, вы должны изучить весь процесс.

Участники

Перед началом процесса конвертации Хранилища данных группа конвертации заканчивает создание проекта и физической модели данных для хранилища данных и создает целевые схемы. Группа конвертации данных включает в себя представителей сферы бизнеса и техники, проектирующих структуры Хранилища, анализирующих исходные данные, описывающих маппинги данных, собирающих и/или создающих внешние данные, определяющих логику конвертации данных, планирующих и генерирующих процедуры конвертации и гарантирующих качество данных. Кроме того, они отбирают и используют инструменты миграции, трансформации и очистки данных. (Для более полной информации по инструментам миграции, очистки и трансформации данных обратитесь к Статье Джозефа Уилльямса.) Эта группа сопровождает процесс конвертации данных, начинающийся с разработки плана конвертации.

План конвертации

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

План конвертации определяет наилучший путь миграции исходных данных в Хранилище данных. Он учитывает имеющиеся ресурсы, объем исходные данных, число различных исходных схем, число и типы различных методов доступа и платформ, структуру Хранилища данных и объем необходимой агрегации.

План документирует платформу каждой исходной системы, метод доступа и язык программирования, необходимый для извлечения данных. Если ваша группа будет извлекать данные из нескольких исходных систем, находящихся на множестве машин, то ваш план конвертации данных будет описывать соответствующую стратегию сбора извлеченных данных в общую промежуточную среду для последующей подготовки, очистки, трансформации и интеграции данных. (См. Рис. 1).



Рисунок 1. Процесс конвертации данных.


Ваша стратегия перемещения данных в общую промежуточную среду должна принимать во внимание имеющиеся машинные ресурсы, общий уровень профессионализма группы конвертации данных и объем исходных данных. Например, исходные системы основаны на MVS, технические возможности группы включают в себя MVS и Кобол, и объем данных достаточно высок. В этом случае, ваш план конвертации данных должен был бы рекомендовать использовать промежуточную среду, которая располагалась бы на одной из этих MVS-машин. Если же ресурсы MVS-машины ограничены, а технические возможности вашей группы усилены Unix и Си, ваш план должен порекомендовать расположить промежуточную среду на машине Unix и, возможно, создать сервер существующего Хранилища данных.

В дополнение к этому ваш план конвертации данных должен учитывать структуру Хранилища данных и схемы целевых баз данных. Обычно данные перемещаются из своей схемы исходных систем в промежуточную среду. Промежуточная схема - это схема, в которую загружаются данные всех исходных систем. Промежуточные схемы не соответствуют в точности исходным или целевым схемам. Они, как правило, являются чем-то средним и содержат дополнительные поля - такие, как цифры процентов для использования в подсчетах или ключевые поля для чтения ссылок или просмотра таблиц, улучшающие процедуры приведения к требуемым техническим условиями, очистки и трансформации данных. Наконец, ваш план конвертации данных должен учитывать характеристики потока данных на протяжении всей конвертации путем рассмотрения следующих проблем:

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

Создание спецификаций конвертации

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

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

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

  • Извлечение данных из исходных систем в промежуточные схемы.
  • Конвертацию промежуточных схем для загрузки данных.
  • Агрегацию загружаемых данных.
  • Миграцию загружаемых данных из промежуточной области на сервер Хранилища данных (если промежуточная среда расположена не на сервере).
  • Загрузку больших объемов данных в СУБД Хранилища данных.
  • Проверку правильности данных.

Извлечение исходных данных в промежуточные схемы

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

Вы проектируете процедуры извлечения данных для выделения только тех данных, которые должны мигрировать в Хранилище. Этот проект подходит как для начальной загрузки, так и для инкрементного обновления Хранилища данных и имеет большое значение, поскольку уменьшает объем данных, мигрирующих в Хранилище, что в свою очередь сокращает объем необходимых для конвертации компьютерных и сетевых ресурсов. Проект извлечения данных должен уделить внимание тому, как исходные системы определяют измененные и новые данные, такие, как временные метки или периодические архивы.

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

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

Конвертация промежуточных схем для загрузки данных

Как только исходные данные собраны в промежуточную область, наступает время выполнить процедуры конвертации, которые могут очистить данные. Очистка данных обеспечивает целостность данных с помощью специальных программ, исправляющих данные, а также улучшающих их точность и общую полезность. (Подробно см. Статью Ральфа Кимболла в августовском выпуске DBMS Data Warehouse Supplement за 1996 год, стр. S15). Вы можете использовать программы, исправляющие и улучшающие такие запутанные поля данных, как поля имен и адресов. Такие программы по очистке данных представляют собой отдельный шаг в ходе пакетного задания, вызываемые подпрограммы, выполняемые как пакет, онлайновую среду или внешнюю службу, не контролируемую традиционным пакетным циклом.

Для того чтобы сервис очистки данных мог быть реализован группой конвертации данных, архитектурный проект Хранилища данных должен учитывать ограничения, налагаемые программой очистки данных, например какие-либо платформы, на которых программа очистки данных может или не может функционировать. Вы используете такие программы только в случае, когда исправление данных в их источнике невозможно. Дополнительно вы указываете все требования по очистке в плане конвертации данных.

Основными компонентами очистки данных являются:

  • Исследование данных, определяющее качество данных, модели качества и количество полей (число различных использованных полей).
  • Проверка синтаксиса данных, определяющая содержание и место назначения каждого компонента каждого поля.
  • Коррекция данных, сверяющая данные с известными списками (обычно с адресами, но иногда и с основными списками, например, со справочниками Хранилища, и гарантирующая, что все поля снабжены тэгами как хорошие, плохие или автоматически исправляемые. Тем не менее, сказать, что эта последняя категория может добавить в проект программы большой объем работы по анализу содержимого полей, практически означает не сказать ничего. Везде, где возможно, группа конвертации должна сотрудничать с заказчиком для коррекции данных в рамках источника.
  • Сопоставление записей, определяющее случаи, когда две записи (возможно, разных типов) представляют собой данные по одному и тому же объекту. Этот процесс включает в себя множество оценок значений полей и требует сложных программных инструментов.

Другие процедуры конвертации данных осуществляют трансформацию данных. Исходные системы обычно имеют атрибуты данных, требующие трансформации. Например, исходные системы кодируют пол лица как "1" для мужчины и "2" для женщины. А Хранилище данных кодирует пол лица как "М" для мужчины и "Ж" для женщины. Процесс трансформации гарантирует совместимый маппинг кодов и ключей между исходными системами и Хранилищем данных.

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

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

Данные атомарного уровня являются самым нижним уровнем детализации данных в Хранилище и нужны для обеспечения уровня дробления, необходимого для эффективной подготовки, очистки, трансформации и интеграции данных. Если Хранилище данных формирует витрины данных, чаще всего спроектированные с использованием схемы типа "звезда" (a star-join schema), вы используете данные атомарного уровня для создания таблиц измерений витрин данных. Если обработка для этих действий последовательна, вы сортируете результирующие файлы с загружаемыми данными измерений для исключения и дублирования записей.

Для отслеживания и генерации ключей для каждого измерения схемы типа "звезда" вы должны создать приложение администрирования ключей. Существуют разнообразные варианты генерации ключей и стратегий администрирования. Примерами являются интеграция ключей исходных систем и ключи, генерируемые системой. Интеграция ключей исходной системы преобразует логические ключи из множества исходных систем в уникальные физические ключи. Пациент больницы может идентифицироваться по ключу номера социального страхования в одной системе и по имени и дате рождения в другой. В Хранилище данных ключи интегрируются. Генерируемые системой ключи - это ключи, присваиваемые конвертирующей системой или реляционной СУБД. План конвертации документирует стратегию, лучше всего подходящую для Хранилища и его пользователей.

Чтобы создать данные для загрузки в таблицы фактов, вы генерируете приложение, которое для начала соотносит загружаемые данные измерений с загружаемыми данными атомарного уровня. Затем оно заполняет записи данных о фактах ключами измерений и связанными с ними количественными фактами, содержащимися в данных атомарного уровня. Это приложение описывает любые записи из данных загрузки измерений, которые не соответствуют загружаемым данным атомарного уровня. Если приложение будет работать нормально, никакого несоответствия не возникнет.

Агрегация загружаемых данных

Загружаемые данные агрегируются с помощью запуска серии сортировщиков и упомянутых ранее приложений администрирования ключей некоторое число раз. Результатом являются все агрегированные загружаемые данные измерений и все связанные с ними агрегированные загружаемые данные о фактах, определенные в проекте Хранилища данных.

Обычно вы предпочитаете выполнять эти функции последовательно, а не в рамках реляционных СУБД, по трем причинам. Во-первых, внешние сортирующие утилиты, например, SyncSort (от Syncsoft Inc., Woodcliff Lake, N.J.) имеют высокую скорость работы. Во-вторых, новые агрегированные данные хранятся вне сервера Хранилища данных как часть средств восстановления на случай сбоя. Если сбой требует восстановления данных, вы просто повторно загружаете агрегированное. В-третьих, для наполнения целевой базы данных вы чаще всего используете большой загрузчик, а не приложение с встроенным SQL. Этот метод является быстрым и эффективным.

Перемещение, загрузка и индексация данных

Далее, если промежуточная область расположена не на сервере Хранилища данных, вы должны переместить данные из промежуточной области на сервер. Как только данные собраны на сервере Хранилища данных, вы загружаете их в базу данных с помощью утилиты загрузки больших массивов (bulk-load utility) реляционной СУБД. В процессе загрузки вы используете ссылочную целостность, чтобы гарантировать, что ключ таблицы фактов содержит настоящие внешние ключи из таблиц. Таблицы фактов обычно содержат несколько миллионов - если не миллиарды или даже более - строк. Если загружаемые данные содержат строки, нарушающие ссылочную целостность, вы можете легко найти такие записи и исправить их. В других случаях у вас мало шансов даже узнать о том, что проблема вообще существует.

Решите ли вы обновить индексы в самом процессе загрузки больших массивов данных или позже, зависит от ограничений времени и возможностей реляционной СУБД. Некоторые реляционные СУБД дают возможность администраторам базы данных разделить индексы таблицы на сегменты. Затем вы можете отбросить фрагмент индекса, загрузить большой объем данных и повторно построить индексы так, как нужно. Сегментированные табличные индексы уменьшают объем времени, необходимого для загрузки больших массивов данных и индексации данных. Уменьшение объема времени, затрачиваемого в "окне загрузки" имеет положительное влияние на существование Хранилища и особенно важно в тех случаях, когда пользователи Хранилища данных находятся по всему миру в нескольких временных зонах.

Обеспечение качества данных

Вы обеспечиваете качество данных не в виде отдельных действий, а через процесс конвертации данных. План конвертации описывает взгляды заказчика или конечного пользователя и процедуры выхода из системы, проверку допустимости данных и процедуры коррекции, а также процесс приведения данных в соответствие с исходной системой.

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

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

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

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

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

И наконец, согласуйте данные после создания загружаемых данных о фактах и агрегированных загружаемых данных о фактах. Итоговые цифры из всех таблиц фактов связаны между собой и с загружаемыми данными атомарного уровня.

Не допускается никаких ярлыков

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