Привет, Хабр! Сегодня рассказываем, чем отличаются подходы к построению распределённых хранилищ данных Data Warehouse (DWH) и Data Lake и в чём специфика задач специалистов, работающих с данными.

Этот материал — переработанная версия вебинара о профессии  Data-инженера. Слёрм провёл этот вебинар для комьюнити Data-специалистов «Где дата, Зин?».

На встрече эксперты описали подходы DWH и Data Lake, а потом поговорили о профессиональных ролях, непосредственно связанных с процессами в таких хранилищах: Data-инженер, ETL-инженер, DWH-инженер, дата-сайентист, ML-инженер, аналитик данных.

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

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

На картинке спрятаны 6 инструментов для работы с данными. Узнали их?
На картинке спрятаны 6 инструментов для работы с данными. Узнали их?

DWH vs Data Lake

Data Warehouse (DWH) — это хранилище, в котором собираются данные из разных систем-источников. С помощью DWH можно проводить анализ исторических и текущих данных. Идея такого хранилища появилась, когда стало ясно, что запускать аналитические запросы в продуктовой базе, например бэкенде сайта, — долго, дорого и рискованно. Для анализа данные нужно выносить из продуктового контура в аналитический.

Когда-то этот вопрос решался выгрузками в эксель, чтобы специально обученные люди работали с файлами. Сейчас, когда речь идёт о больших данных, мы можем быстро получать изменения продуктового контура в аналитическом. DWH — один из паттернов, которые для этого применяются. Это OLAP (Online Analytical Processing)-хранилище (в противовес OLTP— Online Transaction Processing), то есть ещё одна база данных или несколько. Для того чтобы с DWH можно было работать, надо настроить процесс копирования данных из продуктового контура в аналитический.

Паттерн DWH предполагает, что в хранилище вносятся структурированные данные, их структура предварительно преобразуется. Этот процесс переноса данных называют ETL (extract > transform > load).

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

Инструменты DWH:

Data Lake

Не всегда есть возможность структурировать данные перед отправкой в хранилище, так как не все источники могут гарантировать передачу данных по определённой схеме. Например, шина данных с JSON-файлами, которые собираются из REST — это слабоструктурированные данные, особенно когда они могут быть представлены в виде документов разного уровня вложенности и с разными наборами атрибутов. 

Data Lake это хранилище слабоструктурированных данных, полученных из разных источников. Загрузка данных в Data Lake происходит в «сыром» виде, а трансформация — после того, как они появляются в хранилище. Работает процесс ELT (extract > load > transform). Используя паттерн Data Lake, можно начать писать данные в процессе работы, а преобразовывать их для дальнейшего анализа уже после.

В подобном хранилище могут лежать как не имеющие структуры (или слабоструктурированные) данные, вроде картинок и видео, так и более структурированные, например, файлы Parquet. Кроме того, Data Lake может использоваться в качестве долговременного хранилища исторических данных с возможностью при необходимости «поднять архивы» за определённый период в прошлом. Такие «архивы» было бы неоптимально и дорого хранить полностью в DWH.

Инструменты Data Lake:

Data Warehouse (DWH)

Data Lake

Структурированные данные

Слабоструктурированные данные

ETL (extract > transform > load)

ELT (extract > load > transform)

Отличие DWH от Data Lake
Отличие DWH от Data Lake

Существует ещё современный комбинированный вариант платформы данных — Data Lakehouse. Данные в этом случае лежат в слабоструктурированном хранилище, к такому хранилищу мы добавляем решение от вендора, позволяющее получить большую структурированность, большее количество метаданных или приблизиться к реалтайму.

Инструменты:

Дальше рассмотрим профессиональные роли, связанные с процессами в распределённых хранилищах данных. Перечислим задачи и необходимые компетенции для ETL-инженера, DWH-инженера, дата-сайентиста, ML-инженера, аналитика данных и Data-инженера, покажем их карьерный трек.

ETL-инженер

Задачи ETL-инженера — подключать к хранилищу разные источники данных (API, сервера очередей, базы данных, файлы разных типов) и преобразовывать полученные данные. В преобразование входит структурирование для размещения в общее хранилище, удаление дублей, обогащение данных на основе дополнительных источников.

Что нужно знать и уметь ETL-инженеру:

  • процессы, особенности используемых инструментов;

  • регулярные выражения;

  • SQL;

  • визуальное программирование (NiFi);

  • Git;

  • программирование (Python/Java/Groovy).

Чаще всего на эту позицию приходят из системного администрирования, бэкенд-разработки и аналитики (бизнес-аналитики, аналитики данных).

Чего не делает ETL-инженер:

  • не проектирует DWH (этим занимается DWH-инженер);

  • не прогнозирует и не занимается Data Science (задачи дата-сайентиста);

  • не разрабатывает stateful- и стриминговую аналитику (задачи Data-инженера);

  • не разворачивает платформы (это делает DataOps‑инженер, Platform-инженер);

  • не пишет REST API для сбора данных с REST-клиентов (задачи бэкенд-разработчика).

DWH-инженер

В задачи DWH-инженера входит проектирование надёжной структуры хранилища, которое сможет развиваться вместе с бизнесом. Он использует принцип Single source of truth (SSOT) для актуальности данных. Также он настраивает хранилища, включая настройку индексов, самостоятельно или с помощью DevOps-инженеров настраивает мониторинг и логирование DWH. А ещё формирует бизнес-ключи для разных объектов и Customer360 — представление всех данных о клиенте на одном экране.

Что нужно знать и уметь DWH-инженеру:

  • знать особенности инструментов;

  • SQL (включая использование DBT);

  • тюнинг Nix-системы;

  • понимание архитектуры данных;

  • Git;

  • Spark.

В эту профессию чаще всего приходят из DBA, DB-разработки, аналитики данных.

Чего не делает DWH-инженер:

  • не строит пайплайны (это делает ETL-инженер);

  • не занимается аналитикой и бизнес-аналитикой.

Дата-сайентист

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

Также дата-сайентист находит неочевидные закономерности. К примеру, на основании цифрового следа пользователя может его классифицировать. Кроме того, дата-сайентисты используют Computer Vision. Эта технология даёт много возможностей, например, можно оценить поведение покупателей в магазине или провести первичную медицинскую диагностику по снимкам МРТ.

Что нужно знать и уметь дата-сайентисту:

  • иметь сильный математический бэкграунд;

  • Machine Learning;

  • Deep Learning и нейросети;

  • генеративные модели;

  • NLP (Natural Language Processing — работа с текстами, естественным языком);

  • SQL;

  • Git;

  • язык программирования (Python, R, MATLAB).

Чаще всего дата-сайентисты приходят в профессию из математиков, Data-инженеров или аналитиков данных.

Чего не делает дата-сайентист:

  • не делает ничего, не связанного со своими задачами

  • не пишет продуктовый код.

ML-инженер

ML-инженер помогает дата-сайентисту подготовить данные для обучения моделей, сопровождает жизненный цикл моделей (поддерживает модели в продакшене). А ещё он предоставляет инструменты для эффективной работы команды дата-сайентистов.

Что должен знать и уметь ML-инженер:

  • хорошо программировать (Python/Scala/Java; C++/Go; SQL; Git);

  • ML-библиотеки;

  • веб- и бэкенд-скиллы (должен быть готов собирать данные);

  • стриминг;

  • Spark/Databricks;

  • распределённые хранилища (Kafka);

  • Docker;

  • K8s.

Приходят на роль ML-инженера чаще всего из бэкенд-разработчиков, DWH- и DB-разработчиков, DWH-инженеров, дата-сайентистов.

Аналитик данных

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

Что нужно знать и уметь аналитику данных:

  • знание предметной области и продукта;

  • BI-инструменты (Power BI, Tableau, Superset);

  • SQL;

  • Excel;

  • soft skills.

В анализ данных чаще всего переходят из бизнес-аналитики, Data Science, бэкенд-разработки, системного администрирования и управления проектами. 

Data-инженер

Завершаем обзор профессий описанием Data-инженера. Оставили его на конец материала, потому что Data-инженер (инженер данных) сейчас — должность с расплывчатым кругом обязанностей, куда может входить функционал всех перечисленных выше ролей. Список задач Data-инженера может сильно меняться в зависимости от текущих приоритетов бизнеса.

Чем может заниматься Data-инженер:

  • автоматизировать работу ETL- и DWH-инженеров, писать инструменты, генерирующие код;

  • писать пайплайны, задача которых извлекать данные из продуктовых источников (из одной базы или нескольких) и перекладывать в DWH;

  • реализовывать Data Lake;

  • настраивать стриминг, stateful-процессинг.

Что нужно знать и уметь:

  • хорошо программировать (Python/Scala/Java; SQL);

  • стриминговые платформы и распределённые системы, хранилища;

  • Spark/Databricks/Hadoop;

  • уметь то, что описано в ролях выше.

В профессию Data-инженера приходят из бэкенд-разработки, DWH-разработки, DB-разработки, DBA, DevOps.

Подведём итог

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

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

Пара слов о развитии карьеры: Data-инженер может развиваться в направлении менеджмента и на следующем этапе руководить командой или несколькими, а может углубиться в технологии и перейти к роли Data-архитектора.

Где дата, Зин?

Слёрм создал тайно-нетайное общество Data-специалистов «Где дата, Зин?». Каждую неделю мы встречаемся в онлайне, чтобы обсудить дата-инженеринг и работу с данными, позадавать вопросы дата-мастерам, пообщаться друг с другом. А ещё — с пользой и весельем провести время.

В четверг, 24 августа, в 19:00 прошла вторая встреча общества на тему «Моделирование данных в DataLake: от вавилонской башни к дата-макдональдсу».

Обсудили:

  • Что такое моделирование данных?

  • Типичный Data Lakehouse

  • Логическое моделирование: EDW, Dimensional Modeling, Data Vault

Можно посмотреть запись⤵️

Стать последователем тайно-нетайного общества «Где дата, Зин?»→

Комментарии (0)