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
+ доп.материалы:
Статья "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
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
Видео 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. Доклад Яндекса
Основные понятия и термины
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. Доклад Яндекса
Хабр
Как мы внедрили свою модель хранения данных — highly Normalized hybrid Model. Доклад Яндекса
Общепринятый и проверенный временем подход к построению Data Warehouse (DWH) — это схема «Звезда» или «Снежинка». Такой подход каноничен, фундаментален, вотрфоллен и совсем не отвечает той гибкости, к...
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
Secret To Optimizing SQL Queries - Understand The SQL Execution Order
https://www.youtube.com/watch?v=BHwzDmr6d7s
https://www.youtube.com/watch?v=BHwzDmr6d7s
YouTube
Secret To Optimizing SQL Queries - Understand The SQL Execution Order
Get a Free System Design PDF with 158 pages by subscribing to our weekly newsletter: https://bytebytego.ck.page/subscribe
Animation tools: Adobe Illustrator and After Effects.
Checkout our bestselling System Design Interview books:
Volume 1: https://amzn.to/3Ou7gkd…
Animation tools: Adobe Illustrator and After Effects.
Checkout our bestselling System Design Interview books:
Volume 1: https://amzn.to/3Ou7gkd…
👍5
GitHub - yandex/ch-tools: ClickHouse administration and diagnostics tools
https://github.com/yandex/ch-tools
https://github.com/yandex/ch-tools
GitHub
GitHub - yandex/ch-tools: ClickHouse administration and diagnostics tools
ClickHouse administration and diagnostics tools. Contribute to yandex/ch-tools development by creating an account on GitHub.
👍1
Гибкие методологии проектирования Data Vault и Anchor Modeling | Евгений Ермаков
Еще есть вебинарчик на karpov.courses
Смена методологии — это всегда долгий и крайне сложный процесс. Особенно когда речь идёт о чём-то фундаментальном — например, о хранилищах данных. При проектировании детального слоя аналитического DWH [Data Warehouse] сейчас модно применять «гибкие методологии» — Data Vault и Anchor Modeling. Но всегда ли в них есть потребность или это просто мода, которая пройдёт со временем?
https://www.youtube.com/watch?v=fNGIOb8SJvU
#DataVault #AnchorModeling
Еще есть вебинарчик на karpov.courses
Смена методологии — это всегда долгий и крайне сложный процесс. Особенно когда речь идёт о чём-то фундаментальном — например, о хранилищах данных. При проектировании детального слоя аналитического DWH [Data Warehouse] сейчас модно применять «гибкие методологии» — Data Vault и Anchor Modeling. Но всегда ли в них есть потребность или это просто мода, которая пройдёт со временем?
https://www.youtube.com/watch?v=fNGIOb8SJvU
#DataVault #AnchorModeling
YouTube
Гибкие методологии проектирования Data Vault и Anchor Modeling | Евгений Ермаков | karpov.courses
Курс «Инженер данных»: https://bit.ly/3yHNs4N
Смена методологии — это всегда долгий и крайне сложный процесс. Особенно когда речь идёт о чём-то фундаментальном — например, о хранилищах данных. При проектировании детального слоя аналитического DWH [Data Warehouse]…
Смена методологии — это всегда долгий и крайне сложный процесс. Особенно когда речь идёт о чём-то фундаментальном — например, о хранилищах данных. При проектировании детального слоя аналитического DWH [Data Warehouse]…
🔥3
Data Cleaning - DEV Community
Список задач по очистке данных
https://dev.to/nozibul_islam_113b1d5334f/data-cleaning-1c68
Список задач по очистке данных
https://dev.to/nozibul_islam_113b1d5334f/data-cleaning-1c68
DEV Community
Data Cleaning
What is Data Cleaning? Data cleaning is a process where errors, inconsistencies, and...
Введение в 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
Тайм-коды:
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
YouTube
Введение в dbt: основы моделирования данных | INZHENERKA.TECH
#dbt #dataanalytics #dataengineering #dataengineer
🚀 Получить демо-доступ к курсу – https://clck.ru/3Bj87X
тг - канал с новостями от ИнженеркаТех – https://t.me/InzhenerkaTech
Тайм-коды:
00:00 Начинаем
02:04 Рассказываем об ИнженеркаТех
03:54 В чем практическая…
🚀 Получить демо-доступ к курсу – https://clck.ru/3Bj87X
тг - канал с новостями от ИнженеркаТех – https://t.me/InzhenerkaTech
Тайм-коды:
00:00 Начинаем
02:04 Рассказываем об ИнженеркаТех
03:54 В чем практическая…
🔥9👍1
DBT Tutorial 12 videos YouTube Playlist
https://youtube.com/playlist?list=PLc2EZr8W2QIBegSYp4dEIMrfLj_cCJgYA&si=RXZY3jcHCOQ9A4Sz
#dbt
https://youtube.com/playlist?list=PLc2EZr8W2QIBegSYp4dEIMrfLj_cCJgYA&si=RXZY3jcHCOQ9A4Sz
#dbt
YouTube
dbt Tutorial (Data Build Tool) Hands-on Course - Beginners and Advanced | in 1 hour
DBT for Beginners: A Complete Guide Dbt tutorial playlist youtube best dbt tutorial Dbt tutorial for beginners Dbt tutorial youtube DBT Fundamentals dbt Cras...
👍2🥰2
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
Изначально созданная для обработки логов, 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️⃣ Индексация
Анализируйте запросы вашего приложения и создавайте подходящие индексы для ускорения работы.
2️⃣ Материализованные представления
Предварительно вычисляйте сложные запросы и сохраняйте результаты для быстрого доступа.
3️⃣ Денормализация
Сократите сложные соединения таблиц, чтобы повысить производительность запросов.
4️⃣ Вертикальное масштабирование
Увеличьте мощность сервера базы данных, добавив больше CPU, оперативной памяти или хранилища.
5️⃣ Кэширование
Сохраняйте часто используемые данные в более быстром слое хранения, чтобы снизить нагрузку на базу данных.
6️⃣ Репликация
Создавайте копии основной базы данных на других серверах для распределения нагрузки на чтение.
7️⃣ Шардинг
Разделяйте таблицы на небольшие части и распределяйте их по разным серверам. Это поможет масштабировать как чтение, так и запись.
YouTube: 7 must-know strategies to scale your database
#scaling #масштабирование_базы_данных
🤔1
SQL & Hibernate (лекции JavaRush)
Неплохой набор лекций по работе с базами данных.
Что относится к Java разработке можно пролистать.
https://javarush.com/quests/QUEST_SQL_HIBERNATE_PUBLIC
Неплохой набор лекций по работе с базами данных.
Что относится к Java разработке можно пролистать.
https://javarush.com/quests/QUEST_SQL_HIBERNATE_PUBLIC
JavaRush
SQL & Hibernate
Квест посвящен продвинутому изучению БД в разрезе задач разработчика. Вы узнаете о том, зачем нужны БД и какими они бывают, о проектировании БД, типах данных, ORM Hibernate (архитектура Hibernate, конфигурация, основные аннотации, получение, обновление и…
Data Engineering Zoomcamp 2025 Cohort
_ _ _ Б Е С П Л А Т Н О _ _ _
Start: 13 January 2025
Registration link: https://airtable.com/shr6oVXeQvSI5HuWD
Materials specific to the cohort: cohorts/2025/
https://github.com/DataTalksClub/data-engineering-zoomcamp
_ _ _ Б Е С П Л А Т Н О _ _ _
Start: 13 January 2025
Registration link: https://airtable.com/shr6oVXeQvSI5HuWD
Materials specific to the cohort: cohorts/2025/
https://github.com/DataTalksClub/data-engineering-zoomcamp
GitHub
GitHub - DataTalksClub/data-engineering-zoomcamp: Data Engineering Zoomcamp is a free nine-week course that covers the fundamentals…
Data Engineering Zoomcamp is a free nine-week course that covers the fundamentals of data engineering. - DataTalksClub/data-engineering-zoomcamp
👍6