Широкое внедрение облачных баз данных и систем транзакционной отчетности в бизнес-среде привело к экспоненциальному росту объема и разнообразия данных, передаваемых через организации. В результате аналитикам, которым когда-то было поручено выполнять ETL или ELT для тысяч записей, теперь приходится иметь дело с наборами данных, исчисляемыми миллионами или даже миллиардами.
В этой среде технологии, отвечающие за обработку данных и предоставление бизнес-аналитики соответствующим лицам, принимающим решения, оказались под новой нагрузкой. Традиционным инструментам ETL поручено обрабатывать все более сложные и объемные операции с данными, в то время как серверы преобразования работают на пределе своих возможностей.
В то время как ELT может значительно уменьшить это бремя перенося ресурсоемкую обработку данных на масштабируемую облачную СУБД, оптимизация с понижением уровня не может полностью заменить ETL. Любые потоки данных, содержащие источники и назначения, не относящиеся к базе данных, или неподдерживаемые преобразования, по-прежнему будут требовать извлечения на промежуточный сервер. Кроме того, некоторые операции могут выполняться более эффективно, если они выполняются через специальный инструмент ETL.
В последний выпуск Centerprise, мы стремимся предоставить нашим пользователям возможность настраивать и комбинировать оба ETL и ELT-процессы, чтобы обеспечить оптимальную производительность даже в самых сложных потоках данных. Многие из улучшений, наблюдаемых в этой сборке, являются прямым результатом практических отзывов, полученных от клиентов, которые изо всех сил пытались реализовать все преимущества оптимизации с понижением уровня в своих собственных бизнес-процессах. Вот некоторые из ключевых изменений, которые мы внесли в Centerprise 8.0.
Ограничьте сортировку в памяти
В качестве преобразования на уровне блоков сортировка требует, чтобы все входные наборы данных были кэшированы в памяти, прежде чем их можно будет упорядочить в соответствии с критериями пользователя. Эти операции не ограничиваются только преобразованием сортировки; другие преобразования, такие как агрегирование и объединение, также предоставляют возможность сортировать входящие данные перед их дальнейшей обработкой. В результате поток данных может включать в себя несколько экземпляров этого дорогостоящего преобразования, происходящего во всем потоке данных, что, конечно, значительно увеличит время его выполнения.
По этой причине мы рекомендуем сортировать входные наборы данных в источнике, прежде чем они будут импортированы в Centerprise сервер, запустив это преобразование в режиме оптимизации с понижением. Кроме того, для любых преобразований с исключенным извлечением вниз, которые предоставляют возможность сортировки данных, этот параметр должен быть отключен, чтобы обеспечить максимальную эффективность в конвейере потока данных.
Проверка и исправление недопустимых логических выражений
В режиме оптимизации с понижением Centerprise автоматически преобразует логические значения в целые числа (например, 1 и 0 для истинных или ложных выходных данных), чтобы улучшить функциональность операторов SELECT базы данных. Однако эта функция может привести к проблемам при использовании логических выражений в потоке данных. Для правильного выполнения этих операторов WHERE требуются дополнительные операторы, т. е. IIF(1=1, 1, 0). Но в режиме оптимизации с понижением логические выражения преобразуются следующим образом: IIF (1,1,0). Хотя это утверждение логически допустимо, оно приведет к ошибкам при использовании вложенных логических выражений.
Например, когда внутреннее предложение IIF преобразуется в следующее выражение:
IIF(IIF(CHARINDEX('Начисление', [DimClaim].[ClaimSource]) > 0, 1, 0), 'Начисление', [DimClaim].[ClaimSource])
он производит вывод:
IIF(1,'Начисление', [DimClaim].[ClaimSource])
что является синтаксически недопустимым утверждением.
В таких случаях пользователю необходимо будет самостоятельно исправить выражение, добавив оператор 1=1 вручную в поток данных. Приведенный выше пример можно изменить на оператор CONTAINS следующим образом:
If(Contains("Начисление", [DimClaim].[ClaimSource])) = true, "Начисление", [DimClaim].[ClaimSource])
In Centerprise В версии 8 мы упростили совместное использование выражений между операторами SELECT и WHERE, добавив поддержку переменных (многоразовых объектов) в режиме оптимизации с выталкиванием.
Исключите объекты из оптимизации с понижением, где это предпочтительно
Альтернативно, пользователь может вообще исключить выражения из режима pushdown, используя новый параметр «Исключить из pushdown» атрибут. Эта функция также полезна для запуска объектов, которые невозможно эффективно сопоставить с исходной или целевой базой данных или которые работают в базе данных по-другому.
Например, когда выражения приводят к выводу X=Y, где X и Y являются нулевыми значениями, Centerprise способен оценить выражения как истинные. Однако если эти значения содержатся в предложении WHERE в базе данных, они всегда будут оцениваться как ложные. В этом случае было бы предпочтительнее выполнить выражение с помощью инструмента ETL, а не с помощью ELT.
В предыдущих случаях нам удавалось увеличить время выполнения клиентского потока данных на 30 и более минут за счет разумного исключения объектов и выражений на основании их пригодности для передачи вниз.
Проверьте поддерживаемые преобразования оптимизации с понижением
Некоторые выражения if/else также можно преобразовать в преобразования-переключатели, которые теперь поддерживаются в Centerprise. В базе данных эта функция работает аналогично оператору CASE и может использоваться для упрощения сложных выражений. Новейшие версии Centerprise также включает поддержку полей макета, у которых нет входного порта, а также ряд других функций ETL, которые теперь можно надежно реплицировать в поддерживаемых базах данных.
Полный список поддерживаемых в настоящее время преобразований см. Astera Centerprise режиме pushdown, обратитесь к нашему подробному руководству по этой теме.
Повышение производительности потока данных с помощью ручных подсказок SQL
Если пользователь чувствует, что оптимизатор базы данных выполняет поток данных неоптимальным образом, он может использовать подсказки оптимизатора для изменения плана выполнения. В Centerprise, эти подсказки можно ввести на вкладке планировщика потока данных, в результате подсказки будут применяться ко всем запросам и источникам в потоке.
В предыдущем примере использования наш клиент смог использовать подсказки оптимизатора, чтобы обеспечить дополнительную степень параллелизма в потоке данных, тем самым гарантируя, что ресурсы сервера будут максимально использованы для выполнения ресурсоемкого процесса ELT, в котором несколько различных источников данных были объединены в единый файл. одиночный запрос.
Оптимизатор подсказок запросов также будет полезен в процессе загрузки хранилища данных, когда таблицы измерений из разных источников присоединяются к таблице фактов на промежуточном сервере. В таких случаях пользователь может использовать подсказки SQL, чтобы решить, что и как следует размещать для достижения оптимальной производительности.
Возьмите под контроль обработку данных вашего предприятия
Такое сочетание дополнительных функций и оптимизаций должно дать нашим пользователям возможность контролировать эффективность и общую производительность своих операций ETL и ELT на каждом этапе пути к данным. Независимо от того, разрабатывают ли они новые корпоративные хранилища данных или переносят свои записи в инфраструктуру облачных баз данных, CenterpriseВозможности нажатия вниз могут оказаться важными.
Для получения дополнительной информации о том, как режим оптимизации с понижением может принести пользу вашему бизнесу, посетите другие блоги из этой серии или запланируйте личная консультация с нашим отделом продаж сегодня.