Вы создали VM, разместили на ней свои сервисы в Docker, запустили, сервисы (например, Kafka + Kafka Connect) начали писать данные.
Вдруг вы обнаруживаете, что disk volume заканчивается.
df -h
Что делать? Как перенести Docker Volumes и избежать ошибки Disk full?
— Добавить новый Filesystem, на котором будет достаточно места
— Остановить контейнеры
— Отключить Docker services
— Unmount docker overlay filesystems
— Перенести данные в новый раздел
— Внести изменения в конфигурационный файл Docker daemon.json
— Включить Docker services
— Запустить контейнеры
# Stop Docker containers
docker compose stop
# Stop Docker services
systemctl stop docker
systemctl stop docker.socket
# Unmount docker filesystems
umount /var/lib/docker/overlay2/*/*
# Move data
mv /var/lib/docker/ /mnt/${DESTINATION}/
# Edit Docker service configuration file:
nano /etc/docker/daemon.json
# Add or modify the data-root configuration option to point to the new directory:
{
"data-root": "/mnt/path/docker"
}
# Save and close the file.
# Start the Docker service:
systemctl start docker
systemctl start docker.socket
# Start Docker containers
docker compose start
Также этот скрипт на Github Gist: https://gist.github.com/kzzzr/fef4c9c88f301c282275e6d451e080f5
Это сработало для меня, и должно сработать для вас.
В частности, это помогло мне расширить дисковое пространство на VM, и позволило Docker писать в новую Filesystem БЕЗ повторного запуска full sync истории по 100+ коллекциям MongoDB (Debezium Connector + Kafka topics).
Please open Telegram to view this post
VIEW IN TELEGRAM
Gist
Docker: move persistent volumes (mounts) into another filesysytem WITHOUT data losses
Docker: move persistent volumes (mounts) into another filesysytem WITHOUT data losses - docker.md
👍16🔥3⚡1🥱1
Салют! Вчера осознал тот факт, что я в основно пишу сухие технические тексты, которые во многом отражают аспекты моей текущей деятельности, но игнорируют стратегическое видение.
Есть мнение, что существуют гораздо более актуальные темы, которые читатели хотели бы услышать и обсудить. Среди тех, на которые я хотел бы высказаться:
Please open Telegram to view this post
VIEW IN TELEGRAM
Anonymous Poll
24%
ЕСТЬ NRT / STREAMING; ЕСТЬ необходимость или бизнес-обоснование (есть NRT-задача и она решается)
11%
ЕСТЬ NRT / STREAMING; НЕТ необходимости (просто хочется минимальное отставание)
19%
НЕТ NRT / STREAMING; и ЕСТЬ необходимость (есть NRT-задача и она пока не решена, но хочется)
46%
НЕТ NRT / STREAMING; и НЕТ необходимости (устраивает подход BATCH)
Рекомендую для структурирования и систематизации знаний:
— Источники данных
— Выгрузки и обращения по API
— Основы моделирования
— Витрины данных и визуализации
— Семантический слой
— There and back again 😏
Всё это с аллегориями и захватывающими иллюстрациями.
Всем, кто любит Средиземье и вселенную LoTR это особенно понравится.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥1
Примерный список атрибутов:
— Source (Mobile Apps Events)
— Type (JSON files)
— Way of data integration (S3 table engine)
— Description (Events tracked in Mobile Apps, single file for each event)
Мой пример:
— Sources
— Staging
— Intermediate
— Analytics (dims / facts)
Ноды dbt (включая модели) можно окрасить в разные цвета на графе:
staging:
+docs:
node_color: "#219EBC"
models:
<resource-path>:
+docs:
show: true | false
{{ doc() }}: Переиспользование блоков документацииВ целом, большие блоки документации стоит вынести в отдельные markdown-файлы. Возможно, с картинками и схеми.
Также имеет смысл один раз описать атрибут (колонку), который присутствует в 1+ моделях, и впоследствие ссылаться на его описание:
models:
- name: events
description: '{{ doc("table_events") }}'
Рекомендую грамотно использовать title page и разместить на нем самую важную информацию:
— Используемые инструменты и сервисы
— Архитектурная схема
— Описание источников данных
— Ссылки на JIRA (task trackers), Wiki pages, Operational systems, Contacts (@), etc.
{% docs __overview__ %}
## OVERVIEW
## INFRASTRUCTURE SCHEMA
## TOOLS USED
## DATA SOURCES
## USEFUL LINKS
{% enddocs %}Т.к. сайт статический, его достаточно разместить в Object Storage с поддержкой Static website hosting:
— Host on Amazon S3 (optionally with IP access restrictions)
— Publish with Netlify
— Use your own web server like Apache/Nginx
Чтобы вебсайт всегда отражал актуальное состояние, необходимо после каждого изменения в код (Merge Request), генерировать и загружать новую версию.
Делать это можно с помощью Github Actions или аналогов, автоматизируя действия:
—
dbt docs generate—
aws s3 sync ./target s3://my-website-bucket/Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Data Apps Design
🟡 Дайджест самых интересных публикаций по темам:
Data Integration
— ▶ Успешный SaaS на рынке Аналитики – cтановление и планы развития / Алексей Сидоров из mybi connect
— 👨💻 Сказ о том как я realtime replication чинил (Kafka + Debezium + Clickhouse)
—…
Data Integration
— ▶ Успешный SaaS на рынке Аналитики – cтановление и планы развития / Алексей Сидоров из mybi connect
— 👨💻 Сказ о том как я realtime replication чинил (Kafka + Debezium + Clickhouse)
—…
🔥22👍7❤1⚡1😱1
За последние несколько дней я сделал невероятное (для себя):
— Изучил различные подходы к трансформации данных в Kafka: SMT / ksql / kstreams / flink / spark streaming / apache beam / Faust
— Собрал Devcontainer для Java 21 + Maven
— Изучил десятки примеров кода создания SMT + Unit tests
— Научился работать с Maven: properties, dependencies, build
— Создал код для собственных Single Message Transformations + Unit tests
— Собрал JAR-файлы и отправлял их в Kafka Connect docker image
— Потратил уйму часов на Debug, изучение логов, поиск ошибок и исправления на реальных данных в Kafka Connect cluster
— И в конечном счете достиг искомого результата
В итоге, вырисовывается такая картинка общим планом:
— Все БД-источники данных подключены через CDC (Kafka + Debezium)
— Near real time sync (отставание до 1 минуты)
— PII чистится на лету, никогда не попадая в Snowflake 🫢
— 97% cost saved (20% overall spend) в сравнении с предыдущим EL tool (Hevo)
— Это смешно, но Snowpipe streaming 24 / 7 стоит копейки (10$ в неделю 🤯)
— Открываются невероятные возможности создания онлайн-приложений: fraud, scoring, marketplace, reporting
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥32❤7👍4😱4
Давно не публиковал посты, и вот возвращаюсь.
Много работал, считаю полезным сделать обзор, порефлексировать и поделиться.
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
Please open Telegram to view this post
VIEW IN TELEGRAM
ПЛАНЫ
— 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
— Цифровизация бизнеса: ключевые метрики, паттерны и инициативы доступны владельцам и менеджменту
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Чего хочу добиться:
— Есть витрина фактов: поездки / заказы, которые привязаны к карте (ГЕО)
— Хочу подсчитать метрику в привязке к точке (в радиусе) или зоне (GeoJSON, etc.) на карте
— Динамику метрики отследить за периоды времени
— Предоставить пользователям возможность интерактивно выбирать: точку на карте, радиус, временной период
Понятно, что имея любой SQL-клиент можно быстро и просто получать ответы на эти вопросы.
Но далеко не все пользователи готовы преодолеть порог и писать SQL-запросы.
Прототип запроса:
SELECT
order_id
, create_ts
, order_value
FROM analytics.f_orders AS o
WHERE TRUE
AND create_ts >= {{ time_filter.from_expr }}
AND create_ts < {{ time_filter.to_expr }}
AND status IN {{ filter_values('status') | where_in }}
AND greatCircleDistance(lon, lat, {{ longitude }}, {{ latitude }}) <= {{ radius }}
;
Пробую сделать это в Apache Superset
Прочел SQL Templating, просмотрел Preset Live Demo - Jinja Templating
— Вношу изменения в конфиг Superset:
ENABLE_TEMPLATE_PROCESSING: true, перезапускаю контейнеры. Без этого вообще дальше что-то пробовать бессмысленно— Пишу запрос в SQL Lab. Вписываю Jinja. Запрос отработает только если вписать дефолтные значения в меню Parameters
— Пытаюсь сохранить Virtual Dataset - получаю ошибку. Ок, иду на хитрость. Сохраняю без параметров. И далее редактирую в меню Edit Dataset
— И здесь опять вписываю дефолтные значения параметров, чтобы можно было создать Chart
— Пробую нанести Chart на Dashboard и использовать фильтры. Успеха нет. К сожалению, здесь мое терпение кончилось
☹️😑 Очень много шагов, много ошибок и действий к их устранению. Я оставляю эту идею.
Эта же задача решается крайне легко в Metabase - SQL parameters
Причем с продвинутым функционалом, документацией и примерами.
— Setting (Optional) SQL parameters
— Add a parameter to the URL and load the page.
— SQL variable types: Text, Number, Date, etc.
— Setting Default values
Вывод: В Superset это сделать Almost Impossible, в Metabase - крайне легко.
В тему сравнения плюсов и минусов и критериев выбора инструмента для BI-аналитики.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🤔4❤1 1
❄️ Snowflake will require Multi-Factor Authentication and Stronger Password Policies by default
— Наконец-то получил письмо с уведомлением от Snowflake
— До этого неоднократно писал в поддержку и Sales rep в призыве к этому
— Ранее нашел способ включить политику MFA принудительно (ниже)
— В качестве MFA используется только DUO APP (from Cisco), Google Auth нельзя
🩷 Мой подход:
🔵 Самые важные отрывки из письма:
✅ Считаю, что MFA должен быть включен по дефолту при работе с а) любыми активами в виде данных и б) при работе с облаками.
🌐 @data_apps | Навигация по каналу
— Наконец-то получил письмо с уведомлением от Snowflake
— До этого неоднократно писал в поддержку и Sales rep в призыве к этому
— Ранее нашел способ включить политику MFA принудительно (ниже)
— В качестве MFA используется только DUO APP (from Cisco), Google Auth нельзя
---------------------------
-- AUTHENTICATION POLICY --
---------------------------
CREATE AUTHENTICATION POLICY IF NOT EXISTS AUTHENTICATION_POLICY_REQUIRE_2FA
AUTHENTICATION_METHODS = ('ALL')
MFA_AUTHENTICATION_METHODS = ('PASSWORD', 'SAML')
MFA_ENROLLMENT = REQUIRED
CLIENT_TYPES = ('ALL')
SECURITY_INTEGRATIONS = ('ALL')
COMMENT = 'Enforce 2FA with DUO APP'
;
CREATE AUTHENTICATION POLICY IF NOT EXISTS AUTHENTICATION_POLICY_NONUSER_LOGIN
AUTHENTICATION_METHODS = ('PASSWORD', 'KEYPAIR')
CLIENT_TYPES = ('DRIVERS')
COMMENT = 'Non-user logins are only allowed to authenticate through drivers via password or keypair'
;
ALTER USER A_KOZYR SET AUTHENTICATION POLICY AUTHENTICATION_POLICY_REQUIRE_2FA ;
ALTER USER KAFKA_CONNECTOR SET AUTHENTICATION POLICY AUTHENTICATION_POLICY_NONUSER_LOGIN ;
What you need to know:
This new MFA policy only applies to Snowflake users with the TYPE=PERSON or unset type (i.e., human users) that use a Snowflake built-in password to login. Please see the documentation for more information on user types and see the Timeline and Implementation below for additional details on how these policies will be applied.
For users created after a new account is bootstrapped
Make sure to mark the TYPE for all users
For human users TYPE=PERSON, follow the DUO enrollment process and start using MFA
For service users TYPE=SERVICE, make sure to either: 1) use external OAuth (preferred), or 2) use key pair authentication combined with network policy.
If a service user cannot leverage a key pair, mark them as TYPE= LEGACY_SERVICE. This is a temporary solution and we highly recommend that you fix your deployment based on the above.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
Хочу выступить с таким докладом в Сербии на datasciconference.com
Data is the foundational layer for any AI application. In this talk, we will explore Wheely's evolution in building robust data pipelines and employing advanced data modeling techniques:
— Enabling Data Streaming: Transitioning to near real-time and event-driven applications using Debezium and Snowplow.
— Reducing third-party vendor dependencies by leveraging open-source software, resulting in annual savings of $20K.
— Achieving full control over data flow and transformations using dbt and Kafka SMT.
— Optimizing compute and storage costs with Snowflake, achieving a 30% reduction compared to Amazon Redshift.
— Ensuring complete data ownership with zero processing outside the company perimeter.
— Securing data access through RBAC, data masking policies, and PII handling.
This talk distills key knowledge, revealing multiple challenges and pitfalls, and provides practical insights for building a solid data foundation for AI applications.
Заявку подал. До конференции остался месяц.
Если не там, то выступлю где-то еще 🙂
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10👍6
Приготовьтесь, потому что это будет сложно, но мне необходимо поделиться с вами этим 🙂
— MongoDB как источник (полуструктурированные данные с гибкой схемой)
— Debezium as Source Connector для репликации лога в Kafka
— MongoDB New Document State Extraction SMT для преобразования сообщений Debezium и загрузки их в DWH
— Конфигурация
array.encoding=document для репликации массивов— Dead Letter Queue (DLQ) для сбора сообщений с ошибками репликации
— Geo Data: коллекция в MongoDB содежащая георгафические зоны в формате GeoJSON
— Специфика Array encoding для MongoDB
By default, the event flattening SMT converts MongoDB arrays into arrays that are compatible with Apache Kafka Connect, or Apache Avro schemas. While MongoDB arrays can contain multiple types of elements, all elements in a Kafka array must be of the same type.
— Но без конфигурации
array.encoding=document было бы пропущено по оценкам 50-60% всех реплицируемых данных (недопустимо!)— Чтобы прочесть валидный GeoJSON в СУБД
TRY_TO_GEOGRAPHY(geojson) (в тип GEOGRPAHY) мне нужно реплицировать именно массивы!— Однако и в этом случае теряется несколько записей. Из DLQ я вижу, что это за строки и описание причины:
Field coordinates of schema kafka_mongodbt_connector__geo_zones.geometry.features.geometry is not a homogenous array.
Check option 'struct' of parameter 'array.encoding'
— С помощью Kafka Connect predicates устанавливаем
array.encoding=array для избранных коллекций; Для всех остальных коллекций - array.encoding=document— Анализируем проблемные записи в Dead Letter Queue. Выясняется, что GeoJSON содержит дополнительный ключ
features, в котором дублируются координаты из 3-х чисел, 2 из которых float, а третье всегда 0. И с вероятностью 99% это вызывает ошибку. Необходимо либо проставить 0.0, либо вообще убрать ключ geometry.features из репликации.— Исключаем nested field из репликации на уровне Source Connector:
"field.exclude.list": "db.geo.geometry.features"— Обновляем конфиг работающего коннектора через REST API:
jq .config ${SOURCE__MONGODB} | http PUT ${SOURCE__MONGODB}/config— Инициируем Incremental Snapshot для коллекции с geo через signalling kafka topic
✅ Вуаля! Все записи доступны. Все GeoJson атрибуты корректны.
— Допустимо использовать различные варианты конфига
array.encoding (document / array) для разных таблиц (коллекций) БД с помощью Kafka Connect predicates— Без топика Dead Letter Queue (доступен только для Sink Connectors!) не узнал бы об ошибках репликации и их причинах
— Dead Letter Queue удобно просматривать там же в DWH (
SELECT * FROM DLQ), настраивать тесты и уведомления (поэтому для DLQ нужен отдельный Sink Connector!)— Фича Incremental Snapshot помогает прочесть и реплицировать данные по запросу (не останавливая streaming - чтение лога БД / OpLog!)
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10👍6💯4
Среди читателей блога очень много пользователей dbt и тех, кто решает задачи моделирования. На днях столкнулся с проблемой и решил поделиться опытом с вами.
— Я использую devcontainer для каждого отдельного проекта
— В сборку такого контейнера включены необходимые утилиты определенных версий (dbt, adapter for clickhouse/snowflake/redshift, aws cli, obsutils, jq, kcat и т.д.) и их конфигурация (initialization, secrets, etc.)
— Также в контейнер можно включить VS Code Extensions + Common utilities
— Такой контейнер можно запустить локально на своем компьютере и в облаке (это называется Codespaces)
— По сути это похоже на Python virtual envs, только мы не ограничиваемся сугубо Python
Как результат - у всех членов команды одна и та же полноценная среда разработки со всем необходимым инструментарием буквально по одному щелчку мышки. Читайте: никаких проблем с установкой пакетов на разных OS, версиями Python, dependency hell и т.д.
На практике это означает, что, например, Product Analyst или Data Scientist, которого вы наняли вчера, уже сегодня откроет полноценную среду разработки и начнет приносить пользу и создавать ценность.
— У одного из членов команды проблема с работой dbt Power User Extension
—
An error occured while initializing the dbt project: No module named 'agate'— Суть проблемы сводится к тому, что Extension считает, что dbt не установлен (не найден)
— Запуск диагностики: Run diagnostics
— Внимательно изучаю вывод в своем окружении и у человека, который испытывает затруднения
— Суть в том, что у нас отличается Python paths
— Setup Extension: Select Python Interpreter
— Вуаля! Проблема решена. Extension работает корректно
Теперь несколько слов о самом dbt Power User Extension. Самые востребованные лично для меня возможности:
— Ориентация по DAG: parent / children nodes / model tests and docs
— Горячие клавиши почти на все действия dbt. В основном я пользуюсь для просмотра compiled / run кода и отладки
— Автогенерация .yml-файлов (sources, models, columns, tests)
— Просмотр документации проекта + Lineage
О других возможностях узнать подробнее можно в оф. документации: https://docs.myaltimate.com/setup/installation/
Happy modeling ☺️
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥4❤2
Готовлю доклад на Data Science Conference Europe.
Поехать лично, к сожалению, не получилось. Но нашелся слот для онлайн-выступления.
Data is the foundational layer for any AI application. In this talk, we will explore ways of building robust data pipelines and employing advanced data modeling techniques:
— Enabling Data Streaming: Transitioning to near real-time and event-driven applications using Debezium and Snowplow.
— Reducing third-party vendor dependencies by leveraging open-source software, resulting in annual savings of $20K.
— Achieving full control over data flow and transformations using dbt and Kafka SMT.
— Optimizing compute and storage costs with Snowflake, achieving a 30% reduction compared to Amazon Redshift.
— Ensuring complete data ownership with zero processing outside the company perimeter.
— Securing data access through RBAC, data masking policies, and PII handling.
This talk distills key knowledge, revealing multiple challenges and pitfalls, and provides practical insights for building a solid data foundation for AI applications.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥24❤14👍7🙏2
Еще недавно я выступал на апрельском бигдатнике:
Много работал за последние месяцы с Kafka, Debezium, real-time streaming, поэтому меня в особенности заинтересовали доклады:
— Введение в потоковую обработку данных с примерами на Apache Flink
— Streamhouse Architecture - единообразный способ работы с пакетными и потоковыми данными
— Опыт эксплуатации Apache Iceberg на петабайтных таблицах. Проблемы и решения
— Debezium — инструмент получения данных с источников, используя паттерн CDC
В этот раз подключусь зрителем онлайн.
Но рекомендую посетить меропритие offline и завести новые знакомства и контакты.
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Data Apps Design
▶️ SQL + dbt = God Mode Data Modeling / Подходы к созданию витрины корпоративных метрик
— Бизнес-задача: Дашборд для Weekly Business Review (WBR)
— Решение «Hardcore Cube» 🗿
— Решение «Direct Runtime» 🦅
— Aggregate awareness (Looker) как оптимизация п…
— Бизнес-задача: Дашборд для Weekly Business Review (WBR)
— Решение «Hardcore Cube» 🗿
— Решение «Direct Runtime» 🦅
— Aggregate awareness (Looker) как оптимизация п…
🔥10❤3👍1
Data Apps Design
Слайды доклада: https://drive.google.com/file/d/1U3vm2jZlz9GHlM0dsRhmUwZQzM9rgS8k/view?usp=sharing
Запись на YouTube скоро будет
Основные секции доклада:
Следующими сообщениями опубликую ключевые идеи доклада
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7🔥2
Artemiy Kozyr
When it comes to AI, the most important things are:
— 📈 Opportunities you can identify (competitive advantages)
— 🛠 The way you can do it (technical capabilities)
— ⏱️ How fast you can ship it (time to market)
Start with business deliverables and outcomes:
— 📊 Summarizing data on dashboards to report key metrics and their dynamics.
— 🤖 Leveraging AI to query DWH data through BI tools using natural language.
— 🔍 Identifying potential PII and notifying for action to ensure compliance.
— 📧 Tailoring communications via CRM platforms based on customer attributes.
— 🎯 Next best offer or recommendation systems for customers.
— 🕒 Creating smart queues and fair order distribution to improve utilization.
— 🚨 Detecting fraudulent orders and transactions at an early stage (near real-time).
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍1
Data Apps Design pinned «✅ Data Engineering in the AI Era: Building a Robust Foundation for AI Applications Слайды доклада: https://drive.google.com/file/d/1U3vm2jZlz9GHlM0dsRhmUwZQzM9rgS8k/view?usp=sharing Запись на YouTube скоро будет 🔸 Основные секции доклада: 🟡 BUSINESS DELIVERABLES…»
Artemiy Kozyr
There are several types of data sources:
— 🗄 Databases
— 📈 Events (Clickstream)
— 🌐 3rd party APIs
— 📄 Files
CDC SYNC FOR DATABASES WITH DEBEZIUM
💡 Debezium is an open-source distributed platform for change data capture (CDC)
— ⏱️ Real-time data streaming
— 🗃 Support for various databases
— ⚙️ Fault-tolerant and scalable architecture
— 📜 Schema evolution handling
— 🔗 Integration with Apache Kafka
Setup hints for Debezium source connectors
— ⚙️ Leverage distributed and parallel sync mode
— 🎯 Only sync relevant data
— 🛠 Configure topics auto-create feature
— 🚫 Do not trigger initial snapshots on production databases
— 🔔 Enable signaling (very powerful feature)
— 🔄 Configure retries in case of (transient) errors
— 📝 Tolerate errors but capture/log them
Setup hints for sink connector (Snowflake)
— 🏷 Ensure a consistent naming convention for topics
— ⚙️ Adjust settings for optimal performance
— 🆕 New record state extraction for Debezium messages
— 📝 Include relevant metadata fields
— 📐 Apply schematization
— 🗃 Ensure arrays are handled correctly to avoid data issues
— 🎛 Use Single Message Transforms (SMT) selectively
— 📨 Configure a dead letter queue to capture and debug errors effectively
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍3
Artemiy Kozyr
DATA INGESTION: EVENT TRACKING
📊 I have chosen Snowplow for event tracking
— Real-time event tracking: Capture and process events in real-time.
— Customizable event schema: Define custom event schemas to fit your specific needs.
— Cross-platform tracking: Track events across web, mobile, and server-side applications.
— Scalability: Handle large volumes of data efficiently.
— Open-source: The core technology is open-source, allowing for customization and flexibility.
— Data ownership: Full control and ownership of your data.
— Integration: Integrates with various data warehouses and analytics tools.
— Data enrichment: Enrich raw event data with additional context.
— Alternatively: Jitsu, Rudderstack
Setup hints for Snowplow event tracking
🎯 Only track relevant information
📚 Use schema registry (Iglu or Static)
⚖️ Handle both GOOD and BAD event streams
🏷 Assign App & Tracker information
🐞 Use Snowplow Micro for debugging purposes
🚨 Set up Monitoring and Alerting
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3