🆕
ОБНОВЛЕНИЯ ЗА Q2-Q3 2024Давно не публиковал посты, и вот возвращаюсь.
Много работал, считаю полезным сделать обзор, порефлексировать и поделиться.
SNOWFLAKE—
Data Masking Policies для маскирования определенных колонок (ГЕО, хеш-суммы, sensitive data) и даже ключей в JSON (VARIANT)
—
Snowpipe - автоматическая загрузка новых файлов из S3 в таблицы Snowflake
— Snowflake
2FA authenticatication policy - установил как обязательную политику для всех пользователей
—
Table clustering - включил кластеризацию по ключу там, где это дает наибольший буст производительности
В целом, переход на Snowflake - это одно из лучших решений 2024. Об этом я писал ранее:
раз,
два,
три, и напишу еще.
DATA INTEGRATION PIPELINES— Выбрал стек
KAFKA + DEBEZIUM—
Source connectors: MongoDB, PostgreSQL, MySQL, JDBC
—
Sink Connectors: Snowflake, Clickhouse
— Для удобства развернул и использую
Kafka UI— Operations:
Ad-hoc Incremental snapshots,
signalling - в любой момент я могу перезалить таблицу (целиком или с учетом фильтра)
— Monitoring metrics
Prometheus + Grafana. Вижу коннекторы, что работает, сколько событий приходит, как долго работают snapshots
— В итоге у меня
Near real time data streaming - все изменения почти сразу оказываются в Snowflake
—
Schematization + schema evolution: таблицы в Snowflake создаются и меняются автоматически
— Относительно легкий процесс
Connector versions upgrade (JAR-файлы + Docker)
—
PII handling on EL step: Exclude columns или Java SMT для преобразований (хеш-суммы, фильтры, условные NULLIFY) на лету
—
SaaS Hevo offboarding: данные не утекают к SaaS, экономим $20K / year на стоимости сервиса
https://t.me/data_apps/394dbt (T = data transformations)— Изменения, связанные с переходом на
Debezium: log deduplication (
QUALIFY)
— Адаптация к работе с
ARRAYS которые пишет Debezium (
Array Encoding)
—
Incremental builds + frequent updates - востребованные витрины обновляются каждый час
—
4 years time limit - в целом во всем DWH принято решение ограничиться 4-мя годами истории
SNOWPLOW: Support production-grade event tracking (App / Web)—
Развернул сервисы: Collector, Enrich, Iglu (Schemas), Snowflake Loader
— Промежуточное хранилище событий (persist with
Kafka) - поддержка multiple producers/consumers, at least once semantics, events replay (change offsets)
— Only accept
verified events - avoid invalid events / flood / spam / unauthorized producers reaching endpoints
—
Schema validation - support schema evolution, handle different producers (versions and schemas)
—
Data enrichments— События приходят в Snowflake в режиме реального времени (отставание <1 минуты)
YANDEX METRIKA + YANDEX DIRECT— Создал и зарегистрировал приложение для получения OAuth-токенов для работы с API
— Написал bash-скрипты для выгрузки данных
— Поддержка исторической (произвольный период) и регулярной выгрузки (3 последних дня)
— Укладка в S3 в виде TSV-файлов на каждый день (с возможностью перезаписи) -
Datalake approach— С последующим чтением из
Clickhouse (S3 table engine / table function)
— Автоматизировал выгрузки в
Github Actions