Data Engineering / Инженерия данных / Data Engineer / DWH – Telegram
Data Engineering / Инженерия данных / Data Engineer / DWH
2.29K subscribers
50 photos
7 videos
53 files
356 links
Data Engineering: ETL / DWH / Data Pipelines based on Open-Source software. Инженерия данных.

DWH / SQL
Python / ETL / ELT / dbt / Spark
Apache Airflow

Рекламу не размещаю
Вопросы: @iv_shamaev | datatalks.ru
Download Telegram
Нормальные формы базы данных (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
🔥4
Оконные функции.pdf
2.6 MB
Небольшая шпаргалка по оконным функциям.
Делал при подготовке к собесам
🔥72
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/
🔥4
Atlas нужен для автоматизации управления схемами баз данных, позволяя легко проектировать, мигрировать и управлять ими с использованием декларативного подхода и гибкого CLI.

Проект
GitHub - ariga/atlas: Manage your database schema as code
https://github.com/ariga/atlas

Habr: Atlas — инструмент управления схемами миграций БД с открытым исходным кодом: наш опыт и ошибки создателей
https://habr.com/en/companies/flant/articles/753122/
👍2
SQL_Server_Наладка_и_оптимизация_для_профессионалов_2023.pdf
10.3 MB
Книга "SQL Server. Наладка и оптимизация для профессионалов. — СПб.: Питер, 2023.pdf"

+ доп.материалы:

Статья "Hands-On with Columnstore Indexes" в 4х частях:
Part 1 Architecture
Part 2 Best Practices and Guidelines
Part 3 Maintenance and Additional Options
Part 4 Query Patterns
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
👍1
⚓️ 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. Доклад Яндекса
Pytest — это мощный инструмент для автоматизации тестирования Python-кода, который data engineer может использовать для тестирования ETL-скриптов, DAG'ов в Airflow и проверки корректности обработки данных.


Python Testing with pytest. Перевод книги - статьи на Хабр


Предисловие и Ведение
1. Начало работы с pytest, Глава 1
2. Глава 2, Написание тестовых функций
3. ГЛАВА 3 pytest Fixtures
4. Builtin Fixtures, Глава 4
5. Плагины, ГЛАВА 5
6. Конфигурация, ГЛАВА 6
7. Использование pytest с другими инструментами, ГЛАВА 7

Дополнение (English статьи):
▫️Effective Python Testing With Pytest
▫️Pytest in PyCharm

#pytest
👍1
Гибкие методологии проектирования Data Vault и Anchor Modeling | Евгений Ермаков

Еще есть вебинарчик на karpov.courses

Смена методологии — это всегда долгий и крайне сложный процесс. Особенно когда речь идёт о чём-то фундаментальном — например, о хранилищах данных. При проектировании детального слоя аналитического DWH [Data Warehouse] сейчас модно применять «гибкие методологии» — Data Vault и Anchor Modeling. Но всегда ли в них есть потребность или это просто мода, которая пройдёт со временем?

https://www.youtube.com/watch?v=fNGIOb8SJvU

#DataVault #AnchorModeling
🔥3
Введение в dbt: основы моделирования данных

Тайм-коды:
00:00 Начинаем
02:04 Рассказываем об ИнженеркаТех
03:54 В чем практическая ценность dbt?
05:51 Начало Data Lake
08:35 Большие SQL скрипты
10:12 Glue Spark ETL
13:00 Решение через Data Builder
17:40 Как продать команде свое решение?
19:18 Преимущества data build tool
28:33 Анатомия проекта на дбт
30:00 Создаем проект
01:10:15 Моделирование данных с dbt
01:21:41 Проблемы с аналитикой в БД
01:27:50 Оркестрация data build tool
01:30:00 Преимущества на dbt
01:31:10 Подводные камни ди би ти

https://www.youtube.com/watch?v=BSge0lPJeHk

#dbt
🔥9👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Apache Kafka

Изначально созданная для обработки логов, Kafka теперь является основой для множества приложений. Её устойчивое хранилище сообщений и гибкий доступ к данным позволяют потребителям извлекать записи в удобное для них время.

Вот несколько популярных сценариев использования Kafka:
▫️Обработка и анализ логов: Эффективно справляется с огромными объёмами данных логов для их анализа и генерации инсайтов.
▫️Стриминг данных для рекомендаций: Обеспечивает потоковую обработку данных в реальном времени для предоставления персонализированных рекомендаций.
▫️Мониторинг и оповещения систем: Ускоряет мониторинг метрик и отправку уведомлений для своевременного реагирования на события в системе.
▫️Change Data Capture (CDC): Фиксирует и обрабатывает изменения в базах данных, чтобы поддерживать синхронизацию данных между системами.
▫️Миграция систем: Поддерживает бесшовную миграцию данных, обеспечивая их консистентность и доступность.

YouTube: Top Kafka use cases you should know

YouTube: Что такое кафка

#kafka
👍4