четверг, 14 марта 2013 г.

ETL на Groovy - альфа на горизонте


Привет.

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

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

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

Ну а если сказать коротко, то GETL в отличие от других кодогенерирующих ETL, позволит создавать шаблоны для job-ов и использовать их для типовой работы над множеством источников с разной структурой данных. Это на порядки сократит разработку загрузчиков данных. И все это без потери скорости обработки данных!

На текущий момент ведется разработка поддержки GETL источников данных JDBC, XML и JSON. После этого будет собран и выложен альфа релиз продукта, а так же опубликован Road Map дальнейшего развития продукта.

До связи!

Комментариев нет:

Отправить комментарий