Некоторые общие советы ETL
Рассмотрите возможность организации
пункт назначения (например, все
код для выдачи Заказчику
измерение живет в одном модуле, независимо от источника).
Это иногда называют
Предметно-ориентированный ETL. Это делает
найти вещи намного проще и будет
повысить ремонтопригодность вашего
Код.
Если база данных SQL2000 является беспорядком,
вы, вероятно, обнаружите, что SSIS
потоки данных являются неуклюжим способом
с данными. Как правило, инструменты ETL
плохо масштабируется со сложностью;
что-то вроде половины всех данных
складские проекты в финансах
компании делают с хранением
код процедуры как явный
архитектурное решение - именно по этой причине. Если у вас есть
поместить большое количество кода в
sprocs, рассмотрите возможность размещения всех
код в sprocs.
Для системы, включающей в себя множество сложных операций очистки или преобразования, 100% -ный метод sproc гораздо более удобен в обслуживании, поскольку это единственный реальный способ поместить все преобразования и бизнес-логику в одном месте. В смешанных системах ETL / sproc вам приходится искать в нескольких местах, отслеживать, устранять неполадки, отлаживать или изменять все преобразования.
Лучшее место в инструментах ETL - в системах, где у вас есть большее количество источников данных с относительно простыми преобразованиями.
Сделайте код тестируемым, чтобы вы могли
разобрать компоненты и проверить
в изоляции. Код, который может быть выполнен только в середине сложного потока данных в инструменте ETL, гораздо сложнее протестировать.
Сделать извлечение данных немым без
бизнес-логики и скопировать в
плацдарм. Если у вас есть бизнес
логика распространилась по всей выдержке и
преобразовать слои, у вас будет
преобразования, которые не могут быть проверены
в изоляции и сделать это трудно
отследить ошибки. Если преобразование
бег из области постановки вы
уменьшить жесткую зависимость от
исходная система, снова улучшающая
проверяемость. Это особый выигрыш для архитектур на основе sproc, поскольку он позволяет создать практически полностью однородную кодовую базу.
Создание универсального медленно меняющегося
обработчик измерений или использовать один из
полка, если есть. Это делает это
легче провести модульное тестирование
функциональность. Если это может быть единица
протестировано, система тестирования не
должны проверить все угловые случаи,
только ли данные представлены
это правильно. Это не так сложно, как кажется. Последнее, что я написал, было около 600 или 700 строк кода T-SQL. То же самое касается любых общих функций очистки.
Загрузка по возможности постепенно.
Введите свой код - пусть он делает записи в журнале, возможно записывая диагностику, такую как итоговые данные или счета. Без этого устранение неполадок практически невозможно. Кроме того, проверка утверждений - хороший способ подумать об обработке ошибок для этого (действительно ли количество строк при одинаковом числе строк в b соответствует соотношению A: B 1: 1).
Используйте синтетические ключи. Использование естественных ключей из исходных систем связывает вашу систему с источниками данных и затрудняет добавление дополнительных источников. Ключи и отношения в системе всегда должны совпадать - без нулей. Для ошибок, «не записанных», сделайте конкретные «ошибки» или «не записанные» записи в таблице измерений и сопоставьте их.
Если вы строите Оперативное хранилище данных (предмет многих религиозных войн), не используйте ключи ODS в схемах типа «звезда». Обязательно соединяйте ключи ODS для построения измерений, но сопоставляйте их с естественным ключом. Это позволяет вам произвольно отбрасывать и воссоздавать ODS - возможно, изменяя его структуру - без нарушения схем «звезда». Наличие этой возможности является реальным выигрышем в обслуживании, так как вы можете изменить структуру ODS или выполнить повторное развертывание ODS методом перебора в любой момент.
Точки 1-2 и 4-5 означают, что вы можете построить систему, в которой весь кода для любой данной подсистемы (например, отдельного измерения или таблицы фактов) находится в одном и только одном месте в система. Этот тип архитектуры также лучше для большего числа источников данных.
Точка 3 является контрапунктом к пункту 2. По сути, выбор между инструментами SQL и ETL является функцией сложности преобразования и количества исходных систем. Чем проще данные и чем больше источников данных, тем сильнее аргументация в пользу инструментального подхода. Чем сложнее данные, тем больше оснований для перехода на архитектуру, основанную на хранимых процедурах. Как правило, лучше или почти исключительно использовать один или другой, но не оба.
Пункт 6 облегчает тестирование вашей системы. Тестирование SCD или любых функциональных возможностей, основанных на изменениях, является трудоемким процессом, поскольку вы должны иметь возможность представить в систему более одной версии исходных данных. Если вы перенесете функции управления изменениями в код инфраструктуры, вы можете протестировать их изолированно с помощью наборов тестовых данных. Это победа в тестировании, поскольку она снижает сложность требований к тестированию вашей системы.
Точка 7 - это общий совет по производительности, который вам необходимо соблюдать для больших объемов данных. Обратите внимание, что вам может потребоваться только добавочная загрузка для некоторых частей системы; для справочных таблиц и размеров меньшего размера он может и не понадобиться.
Пункт 8 относится к любому безголовому процессу. Если ночью все идет наперекосяк, вам нужна боевая возможность увидеть, что пошло не так на следующий день. Если код неправильно регистрирует происходящее и улавливает ошибки, вам будет гораздо сложнее его устранить.
Пункт 9 дает хранилищу данных собственную жизнь. Вы можете легко добавлять и удалять исходные системы, когда у хранилища есть свои собственные ключи. Ключи от склада также необходимы для реализации медленно меняющихся размеров.
Точка 10 - выигрыш в обслуживании и развертывании, поскольку ODS можно реструктурировать, если вам нужно добавить новые системы или изменить количество записей. Это также означает, что измерение может быть загружено из более чем одного места в ODS (например, добавление ручных корректировок учета) без зависимости от ключей ODS.