Data Engineering / Инженерия данных / Data Engineer / DWH
1.91K subscribers
49 photos
7 videos
52 files
348 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
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
Apache Iceberg Won the Future — What’s Next for 2025? | by Yingjun Wu | Nov, 2024 | Data Engineer Things

https://blog.det.life/apache-iceberg-won-the-future-whats-next-for-2025-731635bfcb7a
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
This media is not supported in your browser
VIEW IN TELEGRAM
💡 7 стратегий для масштабирования базы данных

1️⃣ Индексация
Анализируйте запросы вашего приложения и создавайте подходящие индексы для ускорения работы.

2️⃣ Материализованные представления
Предварительно вычисляйте сложные запросы и сохраняйте результаты для быстрого доступа.

3️⃣ Денормализация
Сократите сложные соединения таблиц, чтобы повысить производительность запросов.

4️⃣ Вертикальное масштабирование
Увеличьте мощность сервера базы данных, добавив больше CPU, оперативной памяти или хранилища.

5️⃣ Кэширование
Сохраняйте часто используемые данные в более быстром слое хранения, чтобы снизить нагрузку на базу данных.

6️⃣ Репликация
Создавайте копии основной базы данных на других серверах для распределения нагрузки на чтение.

7️⃣ Шардинг
Разделяйте таблицы на небольшие части и распределяйте их по разным серверам. Это поможет масштабировать как чтение, так и запись.

YouTube: 7 must-know strategies to scale your database

#scaling #масштабирование_базы_данных
🤔1