Извлечение данных. 1С Экстрактор или ETL — что выбрать?
Данные превратились в жизненную силу организаций, подпитывая принятие обоснованных решений и стимулируя инновации. Поэтому выбор правильного решения, автоматизирующего их сбор, важен для компаний.
Цель решений
Решения на 1С встречаются в большинстве компаний — от самых маленьких ИП до крупных холдингов. При этом обычно в компании есть несколько баз данных, работающих на платформе 1С. Они различаются как с точки зрения самих конфигураций (ERP, ЗУП, WMS и т.д.), так и с точки зрения назначения: продажа, тестирование, разработка.
Что касается интеграций баз 1С с BI, лучше всего себя проявляют взаимодействия DWH хранилища с 1С через http или веб сервисы, так как они гибко предоставляют данные на уровне приложения, не углубляясь «в кухню» передачи данных через файловые источники, сложность написания REST-запросов и физическую модель данных. О плюсах и минусах каждого из подключений мы писали ранее.
Сегодня разберем несколько вариантов решений, при помощи которых можно настраивать интеграцию DWH хранилища и 1C.
Решение для сбора данных может быть самописным интеграционным сервисом или готовым продуктом. Если продукт самописный, то вся широта его функционала на первых стадиях, как правило, ограничивается конкретными задачами и постепенно развивается параллельно с бизнес-запросами компании. Довольно редко самописные решения выходят за рамки одной или нескольких установленных экземпляров. Помимо этого, они тяжело применимы для решения задач, о которых не думали на момент разработки продукта.
Также существуют готовые сервисы для интеграции DWH хранилища и 1C, одной из задач которых выступает сбор данных из 1С. Ниже мы проведем сравнение двух наиболее популярных решений на рынке отечественного ПО: Modus ETL и 1С Экстрактор.
Исключительно сбор данных из 1С в Modus ETL — это лишь 20% всего функционала системы. Но, чтобы сравнение было объективным, в другие функции (сбор данных из других SQL и NoSQL систем, No-code интеграций через API и т.п.) углубляться мы не будем.
Начнем с главного: с архитектуры решения.
Архитектура решения должна учитывать, как будет использоваться продукт, как организовать разработку и какие компоненты для работы с системой необходимы.
Экстрактор 1С — это расширение или надстройка конфигурации для сбора данных из одной базы 1С в хранилище данных. Он собирает данные и передает их в нужном формате в другие СУБД: MS SQL или ClickHouse. В ClickHouse можно создавать таблицы, в которые будут помещены данные, через связь с Экстрактором. Далее судьба данных остается на совести СУБД. Также в 1С Экстрактор есть поддержка загрузки данных в PostgresSQL при помощи дополнительного софта, который представляет из себя прокси веб-сервер.
Modus ETL — это решение для управления данными, где их сбор из 1С — лишь одна из задач. Изначально Modus ETL разрабатывался для интеграции сразу с несколькими базами 1С одновременно, именно поэтому его можно назвать единым центром управления сбором данных из различных систем 1С (а также SQL, из API и из файлов).
Например, для загрузки данных из 40 баз 1С в Modus ETL можно написать одно правило, и оно будет применяться ко всем остальным базам-источникам. Modus автоматически создает и обновляет таблицы-приемники, загружает информацию в СУБД под управлением ClickHouse, MS SQL, PostgreSQL, Greenplum, Arena Data DB, Vertica в многопоточном режиме.
Экстрактор функционирует на мощностях базы-источника 1С, где он собирает данные, передает их в базу-приемник и забывает о них. В целом он похож на компоненту ETL: адаптер (от компании Modus), который также передает данные из 1С, только дополнительно хранит и содержит информацию о запуске передачи данных, регистрации изменений, сегментировании, правилах и расписании. В Modus ETL все правила сбора, информация о разделении на порции и инструменты администрирования хранятся в отдельной единой базе. Это снимает лишнюю нагрузку с учетной системы.
Экстрактор подходит, когда вы собираете данные из небольшого количества экземпляров баз. Но когда речь заходит о большем числе баз (даже больше 2–3 с учетом контура тестирования и разработки) время настройки вырастает относительно Modus ETL из-за того, что нужно настраивать и отлаживать процесс в каждой базе отдельно.
Способы сбора данных
В Экстракторе для создания потока интеграции необходимо иметь доступ в систему 1С. Правила хранятся в каждой базе данных локально.
Сбор данных можно создать через объект 1С, установив параметры и отборы, написав запрос 1С или запустив произвольный код. Также есть возможность обработать результаты выборки перед отправкой.
Результат запроса можно посмотреть после его загрузки в базу данных и создания таблицы. Старт фоновых заданий выполняется непосредственно в 1С, где хранится расписание и параметры выгрузки. В одном расписании при необходимости поочередно запускаются несколько задач по передаче данных.
В Modus ETL данные из 1С собираются при помощи мастера сбора данных, где можно выбрать загружаемый объект, написать запрос 1С, выполнить произвольный код, запустить внешнюю обработку или обработку расширения, а также получить данные через схему компоновки, которая вызывается из базы-источника или загружается непосредственно ETL.
Перед загрузкой данных есть возможность сначала посмотреть результат сбора, а уже потом создавать таблицу. Старт сбора данных выполняется в Modus ETL по заданному расписанию.
Способы сбора данных в двух системах в целом похожи. Однако использование СКД расширяет периметр решаемых задач, особенно для ad-hoc анализа.
Регистрация изменений
Каким образом передается инкремент?
В 1С Экстрактор используется встроенный регистр сведений, который хранит измененные данные. Регистрация изменений доступна через REDIS. Однако тогда придется разворачивать отдельный сервер для системы. В этом случае регистрация изменений возможна только на «ночной копии».
В Modus ETL регистрация изменений выполняется через взаимодействие 1С с планами обмена. Данные считаются успешно полученными после подтверждения их записи в DWH.
Многопоточность и сегментирование
Большие объемы данных из базы в хранилище перемещаются частями. Тут системы используют различные подходы:
В 1C Экстрактор многопоточность и сегментирование реализованы за счет разделения запроса по параметрам: большие объемы данных передаются через файл. При небольшом объеме обмена работа через файл не используется. Такая модель подразумевает организацию сетевой доступности каталога между источником и приемником.
В Modus ETL многопоточность реализуется как по параметрам разделения запроса, так и за счет программного разделения передаваемого пакета на порции для снижения нагрузки на каналы передачи данных. Происходит это автоматически и незаметно для пользователя.
Расписание и очередность
Сбор данных нужно выполнять регулярно. Причем зачастую необходимо определять его в единый data flow (концепция движения данных от источника к месту нахождения) в котором сбор данных и их обработка связаны друг с другом.
Например, в ночной сбор данных нужно сначала собрать данные из ERP, ЗУП и УТ и только потом строить аналитические хранилища. Кроме того, если данные (например, из ERP) не собрались, то система не должна продолжать подготовку. Она обязана сообщить о ошибке. Так как Modus ETL управляет общим сбором данных, в нем настраивается график сбора и преобразования данных, в котором содержится схема взаимосвязи выполнения компонентов. Важно, что можно организовать последовательно-параллельный процесс сбора и преобразования данных.
В 1С Экстрактор расписание живет своей жизнью. Чтобы настроить синхронный сбор и последующую обработку данных, необходимо закладывать временные лаги для работы между пакетами. Также нужно решать вопросы остановки сценария, если данные в одной из систем не были собраны.
Преобразование данных
После получения данных в сырой слой необходимо выполнить их дальнейшую трансформацию: сведение, дедупликацию, маппинг таблиц и значений, а также обучение модулей. В режимах low-code Modus ETL поддерживает корректировку шагов сценария без программирования и написание скриптов на 1С, SQL или Python.
Установка
1С Экстрактор устанавливается из инсталлятора и размещается в информационной базе-источнике 1С. Настройка достаточно простая и не требует навыков. Однако для установки загрузки данных в PostgresSQL потребуется помощь системного администратора, как и для REDIS, которая отвечает за регистрацию изменений.
Для интеграции ETL необходимо опубликовать информационную базу на локальном веб-сервере, установить расширение и базу данных ETL. Выполнить настройку может опытный пользователь по инструкции или системный администратор.
Кастомизация и совместимость
1С Экстрактор имеет обфускацию кода, т.е. его нельзя кастомизировать. Modus ETL подходит для кастомизации, так как большая часть исходного кода открыта. Например, в одном из проектов софт был доработан для записи данных в 1С хранилище. Решение имеет сертификат 1С: Совместимо.
Быстродействие
И в первом, и во втором решении самым «узким» местом является скорость выполнения запроса на 1С. Она будет определяться правильным делением данных на порции при дизайне запроса в источнике.
Лицензирование
В обоих решениях имеется система подписок и on-prem решение. В Экстракторе есть лицензия как на определенное количество баз данных, так и на все базы.
В Modus ETL есть 2 вида лицензирования:
Проф. Хранит до 10 баз данных.
Корп. Хранит неограниченное количество баз данных.
Допустим, вы определились: функционал 1С Экстрактор вас полностью устраивает. Работаете вы только в одной базе, «переезжать» с нее не планируете — тогда все отлично. Лицензия этого софта привязывается к одной определенной базе, а это значит, что в случае «переезда» вам придется приобретать еще одно подключение.
Если же перед вами стоит задача поработать вначале на тестовом контуре, а потом перейти на другую базу, то стоит присмотреться к таким решениям, которые дают возможность развернуть несколько экземпляров системы.
Заключительные мысли
Сравнивая 1С Экстрактор и Modus ETL, можно сказать следующее: и то, и другое однозначно лучше, чем любое из самописных решений. Экстрактор будет идеальным софтом для стартапа, так как его достаточно легко настроить и привязать к облачным сервисам через API. Помимо этого, он быстро работает, если необходимо провести выгрузку данных из двух-трех баз.
ETL — более гибкое и сложное решение с единым центром управления данными, где выгрузка составляет лишь часть функционала. Плюс, благодаря открытому исходному коду ETL легко кастомизируется.
Выбор между двумя рассмотренными ПО зависит от масштаба и потребностей бизнеса. При этом необходимо учитывать, имеются ли в компании другие ETL-системы. А также готов ли бизнес приобрести дополнительный ETL-софт для решения вопросов повышения качества данных.