Data Engineering / reposts & drafts
35 subscribers
227 photos
22 videos
40 files
557 links
Download Telegram
Data Engineer: учебное пособие для прохождения собеседования
https://tproger.ru/curriculum/data-engineer-interview-guide

📖 In Russian: cписок русскоязычных публикаций matyushkin и блокноты Jupyter для различных образовательных ресурсов.
https://github.com/matyushkin/lessons

A complete computer science study plan to become a software engineer.
https://github.com/matyushkin/lessons

Как проходит интервью по SRE T-Bank (aka Tinkoff)
https://www.tbank.ru/career/it/interview/sre/
Streaming_Data_Mesh.pdf
6.3 MB
Озера и хранилища данных становятся все более хрупкими, дорогостоящими и сложными в обслуживании по мере увеличения объема данных и ускорения их движения. Сетки данных могут помочь вашей организации децентрализовать данные, вернув право собственности на них инженерам, которые их создали. В этой книге представлен краткий, но исчерпывающий обзор моделей ячеек данных для служб потоковых данных и данных реального времени.
CDC и Debezium

Debezium — это платформа с открытым исходным кодом, которая отслеживает изменения в базах данных в режиме реального времени (CDC, Change Data Capture).

Она позволяет захватывать изменения (вставки, обновления, удаления) из транзакционных журналов баз данных, таких как MySQL, PostgreSQL, SQL Server и других, и передавать их в системы обработки данных, например Apache Kafka.

Debezium используется для синхронизации данных между различными системами, построения real-time аналитики и миграции данных.

~ Статьи по теме ~

Знакомство с Debezium — CDC для Apache Kafka / Habr

CDC на примитивах

Change Data Capture (CDC) в Yandex Data Transfer: гид по технологии с примерами

Особенности проекта Debezium для решения задачи миграции баз данных

Change Data Capture, with Debezium

Change Data Capture (CDC) with PostgreSQL and ClickHouse - Part 1

Change Data Capture (CDC) with PostgreSQL and ClickHouse - Part 2

~~~

#cdc #debezium
Debezium Engine (3).pdf
24 MB
Презентация со SmartData 2024

DebeziumEngine: практическое руководство по использованию

Анастасия Сашина | Java/Kotlin разработчик Т-Банка
SmartData2024_Data_Vault_2.0.pdf
1.9 MB
Презентация со SmartData 2024: Data Vault 2.0

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

Денис Лукьянов
Руководитель направления архитектуры данных
SmartData_2024_dbt_data_mesh_airflow.pdf
8.4 MB
Презентация со SmartData 2024: Data Mesh / dbt / Airflow

От хайпа до продакшена: DataMesh на Airflow + dbt.
Trino - The Definitive Guide 2023.pdf
4.8 MB
Trino - The Definitive Guide 2023 Second Edition.pdf
SQL at Any Scale, on Any Storage, in Any Environment

Trino — это распределённый SQL-движок для выполнения аналитических запросов на больших объёмах данных. Он позволяет выполнять запросы к данным, хранящимся в различных источниках, таких как базы данных, хранилища данных и файловые системы, без необходимости перемещать данные. Trino поддерживает стандарты ANSI SQL и широко используется для высокопроизводительной аналитики, позволяя объединять данные из различных систем в одном запросе.

#trino
Нормальные формы базы данных (YouTube)

00:00​ - О чём пойдёт речь в статье
00:45​ - Коротко о реляционных БД
01:20​ - Что такое нормализация
01:46​ - Зачем нужна нормализация БД
02:08​ - Что такое избыточность данных с примерами
04:51​ - Какие бывают нормальные формы БД и о процессе нормалиции в целом
08:00​ - Ненормализованная форма или нулевая нормальная форма с примером
09:37​ - Первая нормальная форма с примером нормализации
11:24​ - Вторая нормальная форма с примером нормализации
15:29​ - Что такое декомпозиция
16:18​ - Третья нормальная форма с примером нормализации
18:54​ - Нормальная форма Бойса-Кодда с примером нормализации
21:54​ - Четвертая нормальная форма с примером нормализации
27:45​ - Почему обычно никто не нормализует БД до 5 или 6 нормальной формы
29:14​ - Пятая нормальная форма с примером нормализации
34:23​ - Доменно-ключевая нормальная форма
35:39​ - Шестая нормальная форма
38:02​ - Выводы и заключение

https://youtu.be/zqQxWdTpSIA?si=9WUJIZbQ8Qu7QWjO
Оконные функции.pdf
2.6 MB
Небольшая шпаргалка по оконным функциям.
Делал при подготовке к собесам
The Bitnami Containers Library
Popular applications, provided by Bitnami, containerized and ready to launch.

Здесь можно найти примеры docker compose и других настроек для таких приложений как:
airflow, spark, vault, nginx, minio, clickhouse, kafka и многое другое

https://github.com/bitnami/containers/
Anchor Modeling and GP - презентация Yandex Go.pdf
4.4 MB
Евгений Ермаков, Николай Гребенщиков — Greenplum и Anchor modeling: Мечты разбиваются о реальность

Видео YouTube:
https://www.youtube.com/watch?v=iCZ1HUbGSdw

Еще есть статья про Anchor Modeling на Habr: Дилемма моделирования в рамках Data Vault/Anchor Modeling: объект или событие

Также есть туториал на английском с видео:
https://www.anchormodeling.com/tutorials/

DataLearn: DataVault / Anchor Modeling / Николай Голов
https://www.youtube.com/watch?v=-ZgzpQXsxi0

Habr: Как эволюционировала платформа управления данными в Яндекс Go. Доклад Яндекса - статья из 2024 🙃

Пример с github (нагуглил) hNhM(highly Normalized hybrid Model)

#Anchor
⚓️ Anchor Modeling (AM) — это подход к моделированию хранилищ данных, который ориентирован на максимальную гибкость и адаптивность, чтобы справляться с изменениями в данных и бизнес-логике.

Основные понятия и термины

Anchor (Якорь):
▫️Представляет сущность реального мира.
▫️Содержит суррогатный ключ и временную метку загрузки.
▫️У каждой сущности есть своя таблица Anchor.

Attribute (Атрибут):
▫️Представляет свойство сущности.
▫️Каждое свойство хранится в отдельной таблице Attribute, что обеспечивает ультра-нормализацию (до 6НФ).
▫️Таблица атрибутов содержит суррогатный ключ, временную метку и значение атрибута.

Tie (Связь):
▫️Моделирует отношения между сущностями.
▫️Таблица связи содержит только ключи связанных сущностей.

Surrogate Key (Суррогатный ключ):
▫️Искусственный ключ для идентификации сущности, атрибута или связи.

Принципы построения хранилища:
▫️Хранилище структурируется в виде множества небольших таблиц, где каждая хранит однотипные данные (якоря, атрибуты или связи).
▫️Вся информация нормализована, чтобы избежать дублирования.
▫️Данные устойчивы к изменениям структуры — добавление нового атрибута или связи требует создания новых таблиц, без модификации существующих.

Преимущества:
▫️Адаптивность к изменениям: Расширение модели не нарушает её текущую работу.
▫️Минимизация дублирования данных: Уменьшается объем SCD2 (историзации данных).
▫️Гибкость: Возможность быстрого внесения изменений.

Ограничения:
▫️Количество таблиц: Высокая степень нормализации увеличивает их количество, что может усложнять работу с моделью.
▫️Высокая стоимость запросов: За счет множества объединений (JOIN) между таблицами, что требует оптимизации запросов.

Технические аспекты:
Важными оптимизациями для AM являются:
▫️Join Elimination: Исключение ненужных таблиц из плана запроса.
▫️Merge Join: Эффективное соединение таблиц.
▫️Cluster Index: Использование кластерных индексов для ускорения операций.

Практический опыт:
▫️В рамках проекта использовалась Greenplum, однако подход сталкивался с ограничениями:
▫️Не все оптимизации (Join Elimination, Merge Join) были доступны «из коробки».
▫️Пришлось адаптировать физическое проектирование и использовать гибридную модель (hNhM), сочетая принципы Data Vault и Anchor Modeling.

Anchor Modeling предлагает мощный и гибкий способ организации хранилищ данных, но требует высоких требований к инфраструктуре и оптимизации для достижения производительности.

———

Knot (Узел) — это отдельный элемент модели, предназначенный для хранения неизменяемых данных, которые часто повторяются и используются в качестве ссылок или классификаторов. Это важный концепт, который позволяет минимизировать дублирование данных и упрощать их управление.

Основные характеристики Knot:
▫️Неизменяемость: Узлы хранят данные, которые не меняются со временем, например, коды валют, статусы, типы продуктов.
▫️Компактность: Значения хранятся в одной таблице узла, что позволяет избежать их дублирования в других таблицах.
▫️Оптимизация ссылок: Узлы используются для хранения небольших наборов данных, которые ссылаются на другие таблицы через свои ключи.
▫️Ключи узлов: Узел может содержать как суррогатный ключ (для внутреннего использования), так и бизнес-ключ, представляющий реальное значение (например, "USD" для доллара США).
▫️Декомпозиция: Вместо того, чтобы повторять значение во многих местах, узел предоставляет ссылку, что делает модель более нормализованной.

———

Data Vault и Anchor Modeling отличаются степенью нормализации и подходом к изменениям:
▫️Data Vault использует строгую нормализацию для разделения бизнес-ключей, связей и исторических атрибутов, минимизируя дублирование, но оставляя некоторую гибкость в модели.
▫️Anchor Modeling идет дальше, достигая ультра-нормализации (до 6НФ), полностью исключая дублирование, и ориентируется на постоянное расширение модели без изменений существующих структур.

———

Про сам доклад также можно почитать на Habr: Как мы внедрили свою модель хранения данных — highly Normalized hybrid Model. Доклад Яндекса