Data Engineering / reposts & drafts
35 subscribers
227 photos
22 videos
40 files
557 links
Download Telegram
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. Доклад Яндекса
Гибкие методологии проектирования Data Vault и Anchor Modeling | Евгений Ермаков

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

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

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

#DataVault #AnchorModeling
Введение в 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
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
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 #масштабирование_базы_данных
В видео по Spark есть ссылка на роадмап по DE с кучей полезных инструкций по инструментам.

GitHub - halltape/HalltapeRoadmapDE: Roadmap для Data Engineer.

https://github.com/halltape/HalltapeRoadmapDE
Apache Iceberg + StarRocks YouTube Playlist

StarRocks as LakeHouse Query Engine

24 видосика.
https://youtu.be/8Q5Vev4O1lQ?si=7DIuO3IuIOmf6aHi

=== PS ===

В доке пишут, что StarRocks превосходит по производительности ClickHouse и Trino https://docs.starrocks.io/docs/benchmarking/

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

Еще 1 статья Сравнение трино и старрокс https://gavrilov.info/all/sravnenie-query-dvizhkov-trino-i-starrocks/

#Iceberg #StarRocks