Data Apps Design

Description
В этом блоге я публикую свои выводы и мнения на работу в Data:

— Data Integration
— Database engines
— Data Modeling
— Business Intelligence
— Semantic Layer
— DataOps and DevOps
— Orchestrating jobs & DAGs
— Business Impact and Value
Advertising
We recommend to visit
HAYZON
HAYZON
6,053,581 @hayzonn

لا اله الا الله محمد رسول الله

👤 𝐅𝐨𝐮𝐧𝐝𝐞𝐫: @Tg_Syprion
🗓 ᴀᴅᴠᴇʀᴛɪsɪɴɢ: @SEO_Fam
Мои каналы: @mazzafam

Last updated 3 weeks, 1 day ago

Architec.Ton is a ecosystem on the TON chain with non-custodial wallet, swap, apps catalog and launchpad.

Main app: @architec_ton_bot
Our Chat: @architec_ton
EU Channel: @architecton_eu
Twitter: x.com/architec_ton
Support: @architecton_support

Last updated 2 weeks, 2 days ago

Канал для поиска исполнителей для разных задач и организации мини конкурсов

Last updated 1 month ago

3 months, 2 weeks ago

? ОБНОВЛЕНИЯ ЗА Q2-Q3 2024

ПЛАНЫ

Kubernetes Orchestration для сервисов и приложений
Snowflake Dynamic tables для ускорения поставки данных в витрины и BI
dbt code base refactoring: Optimize performance, Incorporate latest features, Enhance CI checks
Snowflake SSO (Google) + Network restrictions
Prefect / Dagster для Data Integration Pipelines (API Yandex.Metrika / Yandex.Direct)
Alternative BI tools : Sigma, Thoughtspot, Superset

Обучающие сессии и запуски курсов

— Designing Modern Data Apps
— Хардкорный курс по интеграции данных (фокус на Kafka, Debezium, real time streaming)

Consulting + решения для бизнесов

— Аналитическая инфраструктура: развертывание в облако, управление, мониторинг, обновления
— Интеграция данных
— Аналитическая СУБД
— Инструменты визуализации, экспериментов, ML
— Цифровизация бизнеса: ключевые метрики, паттерны и инициативы доступны владельцам и менеджменту

? Если есть подказки, вопросы или хочется узнать о чем-то подробнее - дайте знать в комментариях.

*?@data_apps *| Навигация по каналу

3 months, 2 weeks ago

? ОБНОВЛЕНИЯ ЗА 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/394

dbt (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

6 months, 2 weeks ago
6 months, 3 weeks ago

? ОСТРЫЕ ТЕМЫ: SALARY, PERFORMANCE REVIEW, ДЕГРАДАЦИЯ КУЛЬТУРЫ РАЗРАБОТКИ, ПОЗИЦИОНИРОВАНИЕ В ОТНОШЕНИЯХ С EMPLOYER

Салют! Вчера осознал тот факт, что я в основно пишу сухие технические тексты, которые во многом отражают аспекты моей текущей деятельности, но игнорируют стратегическое видение.

Есть мнение, что существуют гораздо более актуальные темы, которые читатели хотели бы услышать и обсудить. Среди тех, на которые я хотел бы высказаться:

? Почему компании со скрипом повышают SALARY даже на 10% даже в том случае, если вы экономите (ЗАРАБАТЫВАЕТЕ) для нее $50K+ в год

? Мое мнение насчет проведения PERFORMANCE REVIEW в компании и почему вы с высокой вероятностью получите "Ты молодец! Продолжай в том же духе!"

? Что дает человеку чувство собственной власти и независимости от EMPLOYER, а равно и спокойствие, уверенность, и высокую производительность

? Как дать понять МЕНЕДЖЕРУ и всем СТЕЙКХОЛДЕРАМ, что вы занимаетесь ключевой и важной работой, без должного выполнения которой их деятельность будет затруднена (НЕВОЗМОЖНА)

? Почему даже в СТАРТАПАХ деградирует культура разработки и поставки качественных решений (кода), а стиль управления оставляет желать лучшего

Помогите выбрать лучшую тему для ближайшего поста, а я пока займусь его написанием

*?@data_apps *| Навигация по каналу

7 months ago

? Хочу устроить Real Time Data Sync — дайте критику и комментарии

Привет! Последние пару недель плотно работаю над настройкой Data Pipelines через Debezium + Kafka Connect.

? Общая схема будет выглядеть так:

— Sources: MongoDB, Postgres
— Source connectors: Kafka Connect + Debezium (CDC)
Kafka as intermediate storage
— Sink connector: Snowflake connector for Kafka (Snowpipe streaming)
Snowflake as destination

Упражнения, которые я проделываю:

*? *Deploy services: Kafka + Kafka Connect (+ Zookeeper + Schema registry + REST Proxy)

Вообще, готовые образы есть от: Confluent / Debezium / Strimzi.

Я пока использую образы от Debezium + Strimzi. Модифицирую, добавляя нужные мне коннекторы указанных версий (JAR-файлы).

У Strimzi есть операторы для K8s, которые я планирую использовать.

А вот K8s deployment от Confluent входит в Enterprise plan и подлежит лицензированию.

*? *Choose collections for replication

Выбрал несколько несложных коллекций для тестирования и дебага.

Несложные, потому что:

— Небольшое количество колонок
— Минимальное количество вложеных nested-структур
— При этом частые обновления - получаю лог изменений CDC сразу.
— Глазами можно отследить все применяемые изменения (либо то, что не получается)

*? *Source connector (MongoDB)

На выбор у меня было 2 Connectors:

MongoDB Kafka Connector
Debezium connector for MongoDB

Несмотря на наличие отличной документации и даже поддержку snapshot с учетом фильтра (например, sync истории только за 1 год), выбор сделан в пользу Debezium Connector. Позже подробно напишу доступные возможности и пример конфигурации.

*? *Metadata fields for events
В каждое событие дополнительно пишу ряд метаданных:

ts_ms = metadata timestamp
op = c (create), u (update), d (delete), r (snapshot)

*? *Message transformations: Topic route, New Document State Extraction

— Topic route: Мессаджи направляю сразу в топики с целевыми названиями таблиц в Snowflake.

— New Document State Extraction: этат трансформация позволяет перейти от сложного и детального формата события Debezium (schema, before, after) к упрощенному виду (только after), который мне и нужен в Snowflake.

*? *Debug events
Развернул devcontainer (docker-compose based), установил kcat + jq.

Использую kcat для просмотра топиков, key-value значений, оффсетов.

jq использую для форматирования ответов от REST API (Kafka Connect).

Очень удобно проконтролировать изменения, которые вношу пунктом ранее.

?В следующем посте:

— Externalizing secrets
— Create a sink connector (Snowflake)
— Set up monitoring (Prometheus + Grafana)
— Use AVRO data format (io.confluent.connect.avro.AvroConverter)
— Configure topics (compact + delete, etc.)
— Configure incrmental snapshots loads via Debezium signals
— Ensure PII data masking (message transformations, connector configuration)
— Add HTTP bridge / REST proxy

? Могли бы покритиковать / поделиться опытом / посоветовать что-либо?

*?@data_apps *| Навигация по каналу

8 months ago
Data Apps Design
8 months ago
Data Apps Design
8 months ago
Data Apps Design
8 months ago
***?*** The Ultimate Guide to dbt …

? The Ultimate Guide to dbt Everything you could ever know about dbt, all in one canvas. Некоторое время назад получил письмо от Sales rep Count на тему демо их продукта. Стал изучать сайт и наткнулся на вполне приличный гайд в формате canvas по dbt и связанному…

We recommend to visit
HAYZON
HAYZON
6,053,581 @hayzonn

لا اله الا الله محمد رسول الله

👤 𝐅𝐨𝐮𝐧𝐝𝐞𝐫: @Tg_Syprion
🗓 ᴀᴅᴠᴇʀᴛɪsɪɴɢ: @SEO_Fam
Мои каналы: @mazzafam

Last updated 3 weeks, 1 day ago

Architec.Ton is a ecosystem on the TON chain with non-custodial wallet, swap, apps catalog and launchpad.

Main app: @architec_ton_bot
Our Chat: @architec_ton
EU Channel: @architecton_eu
Twitter: x.com/architec_ton
Support: @architecton_support

Last updated 2 weeks, 2 days ago

Канал для поиска исполнителей для разных задач и организации мини конкурсов

Last updated 1 month ago