Data Apps Design
1.54K subscribers
143 photos
2 videos
41 files
231 links
В этом блоге я публикую свои выводы и мнения на работу в Data:

— Data Integration
— Database engines
— Data Modeling
— Business Intelligence
— Semantic Layer
— DataOps and DevOps
— Orchestrating jobs & DAGs
— Business Impact and Value
Download Telegram
⚡️ Real time replication работает как в сказке! Но всё далеко непросто ⚡️

#kafka #clickhouse #realtime #debezium

Салют! Ранее рассказывал о проблематике и архитектуре решения. По этой задаче есть обновления:

🔸 Infrastructure deployment

— Это Kafka, Kafka Connect, Zookeeper
— Все сервисы в Docker-контейнерах
— Для Connect готовил custom Dockerfile с добавлением нужных JDBC-драйверов (Clickhouse) и плагинов (JDBC Sink)
— Развернул Clickhouse (пока single node deployment)

🔸 Source Connector (MS SQL)

— Первый источник - MS SQL
— Потребовалось применить конфигурации в самой базе-источнике (CDC configuration)
— Настройка Initial Snapshot
— Очень много операций с Kafka Connect REST API (создал - удалил - обновил конфиг - посмотрел статус и т.д.)
— Трансформация SMT - Topic reroute - топик должен называться так же как и таблица в Clickhouse

🔸 JDBC Sink Connector (Clickhouse)

— Для работы коннектора необходимо применить трансформацию ExtractNewRecordState ко всем событиям
— Очень много работы связано с Data Type Mapping (любой mismatch - ошибка и падение)
— Добавил ко всем топикам метаданные op,source.ts_ms:ts_ms_source,ts_ms:ts_ms_debezium
— Научился использовать secrets в Debezium (${file:/secrets/clickhouse.properties:url})

🔸Clickhouse configuration

— init dbt repository + devcontainer
— Разобрал Debezium Schema Changes topic c помощью jq + yq => получил .yml конфиг для источников dbt
dbt macros для создания исходных таблиц в цикле согласно схеме данных .yml
— Макрос умеет DROP & CREATE, CREATE OR REPLACE, CREATE IF NOT EXISTS

Это кратко.

Сначала отработал всю схему на 1-2 таблицах, заглядывая в Kafka topics. Потом автоматизировал на 70+ таблиц и полных snapshot данных.

В целом, впечатления от Debezium + Kafka Connect строго положительные. Штука сложная, но функциональная и поставленную задачу решает - я вижу данные в Clickhouse в real time. Продолжу работу.

🔸На очереди:

— Postgres Source Connector
— Оркестрация контейнеров (k8s)
— Гибкое и простое управление конфигурациями Connectors
— Clickhouse Materialized Views для подсчета метрик в real time

💬 Что скажете? Есть вопросы?
Запилить полноценный пост-инструкцию на Хабр?

🌐 @data_apps | Навигация по каналу
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2211
💰Подписка на ресурсы издательства O'Reilly - одно из самых выгодных вложений

Потому что это знания, которыми делятся лучшие эксперты в своих областях.

— В первую очередь это доступ к самым актуальным и интересным книгам в IT

— Это мероприятия и live sessions

Например, мне был интересен вебинар ChatGPT for Software Engineers

— Это Interactive Labs & Sandboxes

K8s, Databases, Machine Learning, Data Analysis. Готовые окружения и песочницы прямо в браузере.

Подписка на год стоит $499. Я успел воспользоваться предложением Black Friday и заплатил $299

Пользуетесь? Читаете? Пересылаете .pdf-экспорты в Tg? 🙂

#learning #books

🌐 @data_apps | Навигация по каналу
Please open Telegram to view this post
VIEW IN TELEGRAM
Салют!

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

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

Есть мнение, что пора включить режим турбо-блоггинга

Какие у вас ожидания? Что хочется видеть в канале? Голосуем.
Please open Telegram to view this post
VIEW IN TELEGRAM
🙂 Переварил и делюсь ключевыми идеями Tristan Handy (CEO dbtLabs) о новом опыте работы с dbt 🙂

(выпуск My first week with the new dbt, рассылка Analytics Engineering Roundup)

🔸 Старт разработки без головной боли

With the Cloud CLI, every dbt build I execute on the command line is parsed and executed from within a VM living inside of dbt Cloud’s infrastructure. This means: I no longer have to do local version upgrades, a massive advantage for someone like me who honestly just doesn’t have time to f around with Python dependencies.


Это замечательно и то, что нужно. Фокус аналитика - на создании аналитических приложений, а не на борьбу с зависимостями, version upgrades и поиск error codes на stackoverflow. Чем больше чистого времени у аналитика, тем больше результатов можно получить.

Я уже давно использую devcontainers и даже писал об этом для тех же целей - это бесплатно и не требует иметь лицензию dbtCloud.

🔸 Auto-deferral

Auto-deferral (now also available in the IDE) means that every time you execute a dbt run, dbt is comparing the state of your development project to the state of the production environment and it is only executing code in your development environment where that code differs from production, or is downstream of those changes. All upstream references point to prod.


Я давно использую defer в рамках CI tests (= прогон и тесты только изменяемых graph nodes). Теперь, в рамках dev это ускоряет процессы разрабтки на порядок.

Жаль, что удобно использовать это можно пока только в dbtCloud.

Из связанного, на ум сразу приходит фича Snowflake zero-copy clone.

🔸Data Mesh

Коротко, это про то, чтобы DWH разделить на зоны ответственности и дать командам развивать интересующие их области самостоятельно, по их правилам.

Называйте это Microservices в Data.

Задействованы и технические аспекты (как это реализовать) и организационные (кто владеет ownership).

Это классная идея и эволюционное развитие, но это скорее релевантно крупным компаниям, в которых как минимум несколько отделов-ветвей заинтересованы в data services, у них есть свои ресурсы на разработку и устоявшиеся правила. Читай, это для корпораций. По моим оценкам, доля таких компаний среди пользователей dbt пока не очень велика. Но это тренд!

They have set up their own CODEOWNERS and other processes, and are much more able to operate independently. They’re excited, empowered.


🔸 Explorer на смену dbt Docs

Мне доступна эта версия в dbtCloud. Приложу несколько скриншотов в комменты.

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

Из главного: визуальный граф (DAG), факты о расчете модели (когда, кем, сколько - это новое!), code, dependencies, columns, tests.

dbt Docs just knew about your code, it didn’t really have any more information to show you. Explorer also knows about job and test execution, can trend runtimes, can tell you when data was last loaded, and more. After a few hours with it, I can now feel myself gravitating to it as the place to learn about what’s going on inside our warehouse.


#dbt #roundup #opinion

🌐 @data_apps | Навигация по каналу
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
🚀 Сквозная аналитика + Modern Data Stack 🚀

Открытый вебинар 13 декабря в 19:00

🔸 Бизнес-результат (ценность):

— Почему владельцы готовы платить за аналитику?
— Оптимизация привлечения и удержания клиентов
— Совершенствование продукта: анализ паттернов и поведения
— С [MDS] 1 человек способен делать, на что ранее требовались целые команды

🔸 Как создать эту ценность с Modern Data Stack:

— Расширение списка источников данных: Ads platforms, Clickstream, CRM, Billing, gSheets
— Шаблонизация, макросы и интеллектуальное моделирование с dbt и Clickhouse
— Семантический слой, потребление дата-продуктов и аналитики: Cube
— Визуализации и дашборды, которые живут долго: Datalens, Metabase, Superset

Регистрация: https://artemiy-kozyr.timepad.ru/event/2709562/

Вебинар бесплатный, регистрация обязательна.
Расскажите об этом всем, кому может быть интересно.

#learning

🌐 @data_apps | Навигация по каналу
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥10
Data Apps Design pinned «🚀 Сквозная аналитика + Modern Data Stack 🚀 Открытый вебинар 13 декабря в 19:00 🔸 Бизнес-результат (ценность): — Почему владельцы готовы платить за аналитику? — Оптимизация привлечения и удержания клиентов — Совершенствование продукта: анализ паттернов…»
⚙️ Добавить логику повторных попыток retry в оркестрацию расчетов DAG

Для того, чтобы бороться с повторяющимися случайными ошибками.

В моем случае это проблемы с сетью (сетевым подключением). В рамках расчетов я делаю обращение из Clickhouse во внешнюю СУБД и порой во время чтения данных подключение прерывается:

05:08:57    :HTTPDriver for https://***:8443 returned response code 500)
05:08:57 Poco::Exception. Code: 1000, e.code() = 2013, mysqlxx::ConnectionLost: Lost connection to MySQL server during query (***:3306) (version 23.3.17.13 (official build))


* Можно тонко конфигурировать настройки, но не всегда это возможно на стороне СУБД-источника данных

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

🔹 Как можно предусмотреть возможность повторных попыток?

— Реализовать собственноручно в коде исполнения (Exception handling, Retries, etc.)
— Настроить встроенные механизмы (Airflow task retries)
— Использовать специальные обертки (Github Actions)

В моем случае использую Github Actions как оркестратор запусков dbt

Step, который прежде выполнял единственную команду dbt build, теперь выглядит так:

  - uses: Wandalen/wretry.action@master
with:
command: dbt build
attempt_limit: 3
attempt_delay: 2000


В Github Actions я бы рекомендовал использовать retry action. Есть ряд альтернатив, но, например с Retry Step у меня возникли проблемы и я отказался от его использования.

#orchestration #dbt #github_actions

🌐 @data_apps | Навигация по каналу
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
Live stream scheduled for
Уже сегодня в 19:00 вебинар Сквозная аналитика + Modern Data Stack

Стрим проведу в Tg-канале @enthusiastech, запись будет выложена в YouTube позже.

Прикладываю несколько слайдов в качестве тизера 👀

Подключайтесь, и расскажите тем, кому это может быть интересно.

🌐 @data_apps | Навигация по каналу
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤‍🔥5🔥3
Live stream started
Q&A: В комментариях к этому посту задаем вопросы по стриму 🚀 Сквозная аналитика + Modern Data Stack
Live stream finished (1 hour)
❄️ Наступает время Snowflake ❄️

Ранее я писал, что рассматриваю альтернативные СУБД в качестве аналитического движка.

3 февраля 2024 заканчивается резерв Amazon Redshift RA3 Nodes сроком год.
К этой дате я планирую полностью подготовить кластер Snowflake, код dbt-проекта, и все другие необходимые конфигурации.

В один день я просто переключу все нагрузки на Snowflake, и большинство пользователей даже ничего не заметят (поначалу 🙂)

Самый актуальный вопрос, который задавался - а зачем?

🔹 Новый подход к проблемам с производительностью (расчетов, запросов, пиковых нагрузок и т.д.)

— Невероятно быстрое масштабирование благодаря Serverless & Cloud native природе
— Индивидуальная работа с каждым видом нагрузки (workload) с помощью Virtual Warehouses: EL, T, BI, Analysts, и т.д.
— Платим только за потребленные ресурсы - кластер не работает 24/7.

🔹 Ускорение цикла создания ценности (Time to Market)

— Расширенный список поддерживаемых функций: Geospatial, in-database ML, Data streaming, advanced analytics, etc.
— Доступ к экосистеме: marketplace, packages, modules, solutions, code examples, how-to guides
Developer Experience: разработка features становится приятной и легкой, может занимать часы и дни (не недели и месяцы)
— Фокус аналитиков на поиске ответов на бизнес-вопросы, а не на отладке ошибок и чтении документации к СУБД

🔹 Повышение устойчивости (к миграциям, необходимому набору навыков), совершенствование кодовой базы

Рефакторинг кода: снижение сложности при сохранении чистоты базы кода. Любая последующая миграция будет значительно быстрее и безболезненнее
— В Snowflake траты на обслуживание и администрирование близки к 0: экономим инженерные ресурсы и время
— Чем меньше устаревшего кода и инструментов, тем легче найти инженера или аналитика (С dbt + Snowflake работать проще, чем с dbt + Redshift + S3 + Lambda + Python + Airflow)
— Если мы используем Snowflake, мы избавляемся от 3-5 бессмысленных джобов dbtCloud (VACUUM + ANALYZE, Job to enable Slim CI)

Это коротко.

Сталкиваетесь ли вы с подобными проблемами?

Дальше будут посты с детальным планом миграции и TODO.

#database #snowflake #redshift

🌐 @data_apps | Навигация по каналу
Please open Telegram to view this post
VIEW IN TELEGRAM
8🔥3👍1👏1
Первый стрим для закрытой группы Designing Modern Data Apps

Уже сегодня 21 декабря в 19:00 — Marketing Analytics

❗️ У меня осталось всего несколько мест

Как это будет выглядеть?

— 10 стримов, 2 из них интерактивные Q&A
— Живое общение и доступ к ответам на свои вопросы
— Единая связная история-кейс (заказчик - требования - архитектура - реализация)
— Формат интенсива - сразу к делу, минимум воды, максимум практики

Какие результаты я получу?

— Опыт построения аналитических приложений на реальном бизнес-кейсе
— Практика с инструментами Modern Data Stack
— Записи стримов, слайды, git-репозитории остаются у вас
— Возможность претендовать на вакансии с ЗП 300К+

Востребованные навыки и практические знания - лучший подарок на НГ и вклад в своё развитие.
Все, кто знает меня, и был на занятиях и открытых вебинарах за последние 3 года не дадут соврать.

Плата за вход 35k RUB.

👉 Участвовать - @kzzzr

#learning

🌐 @data_apps | Навигация по каналу
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥3🖕2