Перейти к содержимому
TelegramGitHub

Fundamentals of Data Engineering, глава 9: Выдача данных

Главная мысль: выдача данных (serving) — последний этап жизненного цикла. Данные ценны, только если им доверяют и если они вызывают действие. Начинайте с пользователя и сценария, а не с технологии.

Схема трёх сценариев выдачи данных и общей основы: доверие, SLA, определения

ТемаСуть
Trust (доверие)Главное условие. Потеря доверия убивает проект, вернуть его очень трудно. Помогают data validation и data observability
SLA и SLOSLA — обещание потребителю. SLO — как измеряем его выполнение (например, uptime пайплайна). Нужна постоянная коммуникация
Use case и пользовательСпрашивайте: какое действие вызовут данные, кто его сделает, можно ли автоматизировать
Data productПродукт, который помогает достичь цели с помощью данных. Думайте в терминах «jobs to be done». Хорошему продукту нужна обратная связь
Self-serviceЧасто остаётся желанием. Работает для правильной аудитории и с ограничениями. Руководителю обычно нужен готовый дашборд
Data definitions и logicОпределения (кто такой customer) и формулы метрик нужно записать в data catalog и системы, а не держать «в голове»
Data meshКаждая доменная команда сама готовит и выдаёт данные другим

Перед выдачей определите тип аналитики.

ТипЦельВремяПример
Business analyticsРешения по трендамОбычно batchДашборды, отчёты, ad hoc анализ
Operational analyticsНемедленное действиеРеальное времяМониторинг приложения, оповещения
Embedded analyticsМетрики для клиентов внутри продуктаНизкая latencyДашборд продавца на платформе
  • Business analytics. Данные чаще выдают из warehouse или lake. Частота загрузки задаёт предел частоты дальше по цепочке. Если есть потребители потока, принимайте данные как stream.
  • Operational analytics. Граница с business analytics стирается. Главный вопрос: что вы сделаете с потоковыми данными. Данные без действия отвлекают.
  • Embedded analytics. Вы отвечаете за базу под приложением. Нужны три вещи: низкая latency данных, быстрые запросы, высокая concurrency. Стартапы начинают с обычных транзакционных баз, потом переходят на специализированные.

Границы между data engineer, data scientist и ML engineer зависят от компании. Data engineer не обязан знать ML глубоко. Но базу знать полезно:

  • виды обучения: supervised, unsupervised;
  • классификация и регрессия, time series;
  • классические методы или deep learning (не всегда нужен deep learning);
  • AutoML или ручная модель;
  • данные для ML превращаются в числа: кодирование категорий, featurization;
  • batch или online обучение, результаты в реальном времени или пакетом;
  • feature store, ML observability, data cascades;
  • где обучать: локально, на кластере, на GPU.

Схема способов выдачи данных: файлы, база, federation, sharing, semantic layer, notebooks

СпособКогда подходитРиски
File exchangeПотребитель не умеет иначеФайл по почте даёт разные версии, отозвать доступ нельзя
Database (OLAP)Нужны схема, права на уровне таблиц, строк, колонок, скоростьСтоимость и производительность. Разделяйте кластеры по нагрузкам
Streaming и operational DBЗапросы по истории и свежим даннымНужен опыт со streaming
Query federationAd hoc анализ без копирования, источник под контролемНагрузка на живые системы-источники
Data sharingОбмен внутри компании и с партнёрами в облакеПревращается в задачу доступа и безопасности
  • Database. Некоторые BI-системы хранят копию данных. Другие используют query pushdown: генерируют SQL и выполняют в базе. Compute и storage разделены, поэтому для каждой нагрузки можно выделить свой warehouse и бюджет.
  • Federation. Инструменты: Trino, Presto, Starburst. Подходит, чтобы проверить идею до построения пайплайна.
  • Semantic и metrics layer. Хранит бизнес-логику один раз и используется везде. Примеры: LookML в Looker, dbt. Решает вопрос «верны ли эти числа».
  • Notebooks. Data scientist подключается из кода (Jupyter, pandas). Данные в памяти ноутбука ограничены. Дальше идут облачные ноутбуки, Dask, Ray, Spark и платформы ML. Credentials нельзя хранить в коде.

Схема reverse ETL на примере оценки лидов и загрузки результатов в CRM

Reverse ETL — загрузка обработанных данных из OLAP-системы обратно в рабочие системы. Пример: оценки лидов возвращаются в CRM, где работают продавцы. Это снижает трение для пользователя.

  • Можно написать своё решение или взять готовое (open source или managed). Рынок меняется быстро.
  • Авторы шутя называют это bidirectional load and transform (BLT).
  • Риск: обратная связь. Ошибка модели ставок может быстро потратить много денег. Нужны мониторинг и ограничения.

Data analysts, data scientists, MLOps и ML engineers, бизнес. Data engineer поддерживает их и отвечает за качество данных, а не за их интерпретацию. В растущей компании нужно разделять обязанности. При data mesh каждая доменная команда берёт часть задач выдачи.

  • Security. Здесь самая большая поверхность атаки. Least privilege для людей и систем, доступ только на чтение, фильтрованные представления для multitenant. Удаляйте неиспользуемые data products.
  • Data management. Обратная связь от пользователей. Для чувствительных данных используйте обезличивание. Semantic layer и моделирование дают единый источник правды.
  • DataOps. Следите за health данных, latency, качеством, доступом, версиями данных и моделей, uptime. Код в version control, окружения dev, test, prod.
  • Data architecture. Цикл обратной связи должен быть быстрым. Переводите работу data scientists с ноутбуков на общие облачные системы.
  • Orchestration. Централизованная даёт единые стандарты, но один плохой DAG может остановить всё. Децентрализованная даёт автономию, но усложняет координацию между командами.
Термин (EN)Что значит
ServingВыдача данных потребителям
Data productПродукт, который достигает цели с помощью данных
SLA / SLOОбещание потребителю / измеримая цель выполнения
Business / operational / embedded analyticsАналитика для решений / для немедленного действия / для клиентов в приложении
Query federationОдин запрос к нескольким системам без их копирования
Query pushdownВыполнение логики BI как SQL внутри базы
Semantic / metrics layerЕдиное место определения метрик и бизнес-логики
Reverse ETLВозврат обработанных данных в рабочие системы
Data sharingЧтение данных в облаке без копирования
Least privilegeМинимально нужный доступ
  • Начинайте с вопроса: кто пользователь и какое действие вызовут данные.
  • Пропишите SLA и SLO с потребителями и проверяйте их выполнение.
  • Держите определения и метрики в semantic layer или dbt, а не в отдельных запросах.
  • Для reverse ETL добавьте мониторинг и ограничения против runaway-цикла.
  • Раздельные warehouse или кластеры для ETL и для аналитики. Так проще считать бюджет.
  • Следите за использованием отчётов и отключайте ненужные.
  • Договоритесь с data scientists о хранении credentials и о переезде с ноутбуков в облако.
  1. Почему доверие считается главным условием выдачи данных?
  2. Чем operational analytics отличается от business analytics?
  3. Когда query federation лучше, чем загрузка данных в warehouse?
  4. Какой риск несёт reverse ETL и как его снизить?

Предыдущая: Запросы, моделирование, трансформация. Следующая: Безопасность и приватность.