Data Engineering / Инженерия данных / Data Engineer / DWH
1.95K subscribers
49 photos
7 videos
52 files
350 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
Debezium Engine (3).pdf
24 MB
Презентация со SmartData 2024

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

Анастасия Сашина | Java/Kotlin разработчик Т-Банка
🔥5
Автоматизация обеспечения качества кода на языке Python

В первой части статьи обсуждаются концепции качества кода и его важность, во второй — предложено пошаговое руководство по настройке линтинга, форматирования и проверки типов с помощью инструментов, таких как flake8 и Black, что помогает ускорить процессы разработки и избежать ошибок на ранних этапах.

https://habr.com/ru/companies/otus/articles/750214/
1
SmartData2024_Data_Vault_2.0.pdf
1.9 MB
Презентация со SmartData 2024: Data Vault 2.0

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

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

От хайпа до продакшена: DataMesh на Airflow + dbt.
👍3
Физический JOIN в SQL: Как это работает?

В процессе выполнения запросов SQL важным моментом является физическое соединение (Physical Join) таблиц. Это фундаментальная операция, когда данные из двух источников объединяются на уровне строк.
В этом посте обсудим три основных алгоритма физического JOIN таблиц в SQL.

В статье по первой ссылке очень хорошие gif, отлично поясняющие работу каждого JOIN.

Nested Loop Join:
Используется, когда одна таблица небольшая, а вторая более крупная. SQL Server пробегает по каждой строке одной таблицы и ищет соответствующие строки во второй. Эффективно при небольших наборах данных и наличии индексов.

Сложность O(NlogM)
✓ Обычно используется, когда одна таблица значительно мала.
✓ Большая таблица имеет индекс, который позволяет искать ее с помощью ключа соединения.

Merge Join:
Этот метод требует предварительной сортировки обеих таблиц по полю соединения. Если данные уже отсортированы, такой join работает очень быстро, так как просто последовательно проходит по строкам обеих таблиц. Отлично подходит для больших таблиц с отсортированными данными.

Сложность O(N+M)
✓ Обе таблицы данных отсортированы по ключу соединения.
✓ Используется оператор равенства.
✓ Отлично подходит для очень больших таблиц.

Hash Join:
Подходит для ситуаций, когда таблицы не отсортированы и содержат большой объем данных. SQL Server создает хэш-таблицу для одной из таблиц, затем сравнивает строки другой таблицы с хэш-таблицей. Это один из самых мощных методов для работы с большими объемами данных.

Сложность O(N+M), если игнорировать затраты на потребление ресурсов. Требует подготовительных действий надо построить хэш-таблицу.
✓ При соединении хешированием строки одного набора помещаются в хеш-таблицу, содержащуюся в памяти, а строки из второго набора перебираются, и для каждой из них проверяется наличие соответствующих строк в хеш-таблице.
✓ Ключом хеш-таблицы является тот столбец, по которому выполняется соединение наборов строк.
✓ Как правило, число строк в том наборе, на основе которого строится хеш-таблица, меньше, чем во втором наборе.
✓ Более высокая стоимость в плане потребления памяти и использования дискового ввода-вывода.

Подборка статей и видео по теме физического JOIN:

📌 Статья: Типы физического соединения таблиц в Microsoft SQL Server. Описание Nested Loops, Merge и Hash Match
📌 YouTube: 30.1. Планы выполнения запросов. Физические соединения: nested loop, merge join, hash join. Индексы
📌 YouTube: 30.2. Планы выполнения запросов. Физические соединения: nested loop, merge join, hash join. Индексы
📌 YouTube: #mergejoin #hashjoin #nestedloopjoin Алгоритмы объединения таблиц
📌 YouTube: Физические операторы соединений SQL Server. Разработчик MS SQL ч.5
📌 Статья ENG: Python & Data Engineering: Under the Hood of Join Operators

💡Правильный выбор физического оператора соединения — ключ к оптимизации производительности запросов!

#SQLServer #DataEngineering #PhysicalJoin #NestedLoop #MergeJoin #HashJoin
🔥81👍1
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
🔥81
🚀 Изучаем SQL индексы!

Индексы в базах данных — это структуры, которые помогают ускорить поиск и извлечение данных.

Вот основные типы индексов:
B-Tree индексы: Наиболее распространённый тип индексов. Используется для диапазонного поиска и поддерживает сортировку данных. Работает по принципу сбалансированного дерева.
Hash индексы: Используются для быстрого поиска по точному совпадению. Не поддерживают диапазонные запросы, но могут быть очень быстрыми для конкретных значений.
GiST (Generalized Search Tree): Позволяет создавать индексы для сложных типов данных, таких как географические данные. Поддерживает множество операций поиска.
GIN (Generalized Inverted Index): Эффективен для индексации массивов и полнотекстового поиска. Использует инвертированный индекс, что делает его подходящим для текстовых данных.
Кластеризованные индексы: Определяют физический порядок хранения данных в таблице. То есть физически сортирует строки таблицы в соответствии с индексом. Обычно создаются на первичном ключе и позволяют значительно ускорить чтение данных.
Некластеризованный индекс (Nonclustered): Создаются отдельно от основной таблицы и содержат указатели на строки данных. Позволяют создавать несколько индексов для одной таблицы.
Составные индексы: Индексы, которые включают несколько колонок таблицы. Полезны для запросов, которые фильтруют данные по нескольким полям.


В этом посте собраны полезные статьи и видео на YouTube о SQL индексах, которые помогут вам разобраться в этой важной теме:

📌 Статья: Влияние индексов БД на производительность выборки данных
📌 Статья: Обслуживание индексов MS SQL Server: как, когда и, главное, зачем?
📌 YouTube: Что такое SQL ИНДЕКСЫ за 10 минут: Объяснение с примерами
📌 YouTube: ИНДЕКСЫ В БАЗАХ ДАННЫХ. СОБЕС В OZON.
📌 YouTube: Как устроен B-TREE индекс в базах данных
📌 YouTube: EXPLAIN в базах данных за 10 минут
📌 YouTube: Андрей Сальников — Индексы в PostgreSQL. Как понять, что создавать
📌 YouTube: Оптимизация запросов с помощью индексов
📌 Статья: 14 вопросов об индексах в SQL Server, которые вы стеснялись задать

#Индексы #btree #hashindex #index
🔥3👍1
How Uber Manages Petabytes of Real-Time Data (en)

В статье описывается, как Uber эффективно обрабатывает телеметрию с миллионов устройств, используя Apache Kafka и Flink для потоковой обработки, и как она поддерживает низкие задержки при высоких объемах данных.
Отдельно описан механизм репликации данных.

https://blog.bytebytego.com/p/how-uber-manages-petabytes-of-real
Гайд по логированию за 12 минут

▫️Вы узнаете, что такое логи, зачем они нужны и как правильно их использовать.
▫️Как настроить логи с помощью библиотек, вместо простого вывода на консоль, чтобы не потерять данные.
▫️Уровни логирования (INFO, DEBUG, ERROR).
▫️Как интегрировать логи с ElasticSearch и использовать их в Spring проектах.

https://youtu.be/KHS8hPh8mtU?si=IIBATXhg3KhsOn4u
👍2