Data Engineering Vocabulary: 70 Terms Every Data Engineer Must Know (англійською)
Необхідний словник з інженерії даних: ETL, ELT, DAG, конвеєри даних, Spark, Kafka, dbt, контракти даних, архітектура lakehouse і ще 60 термінів з прикладами.
Інженери даних будують конвеєри, які переміщують, перетворюють і зберігають дані в масштабі. Словниковий запас охоплює розподілені системи, SQL, оркестрацію, хмарне зберігання і моделювання даних — з великим перетинанням з DevOps і архітектурою. Цей посібник охоплює 70 термінів, з якими ви щодня стикаєтеся як інженер з обробки даних.
Патерни пересування даних
ETL (витягування, перетворення, завантаження)
** ETL ** — це традиційний шаблон інтеграції даних: витягування даних з систем- джерел, їх перетворення (очищення, об’ єднання, агрегування), а потім завантаження їх у сховище даних.
«Наш ETL-конвейер працює щоночі — він витягує з транзакційної бази даних, нормалізує схему, а потім завантажує в Redshift»
ELT (Витяг, завантаження, перетворення)
** ELT ** змінює порядок: витягує необроблені дані, завантажує їх безпосередньо у сховище даних або озеро, а потім перетворює за допомогою SQL у цьому сховищі. Ввімкнено сучасними хмарними сховищами (BigQuery, Snowflake).
«Ми перейшли на ELT — сирі дані спочатку потрапляють в BigQuery, а потім dbt обробляє всі перетворення»
CDC (зміна даних захоплення)
** CDC ** захоплює зміни на рівні рядків (INSERT, UPDATE, DELETE) у базі даних джерела і передає їх у потоку. Уникнути повного сканування таблиці. Поширені інструменти: Debezium, AWS DMS.
Інтенсивне навантаження
** Приростове завантаження ** обробляє лише нові або змінені записи з часу останнього запуску — це швидше і дешевше, ніж повне завантаження. Потрібний надійний водяний знак (датою оновлення, ідентифікатор послідовності).
Повне завантаження / повне оновлення
** повне завантаження ** замінює всю таблицю призначення новим витягом з джерела. Простіше, але дорожче для великих таблиць.
Архітектура та архітектурні споруди
Pipeline
** Конвейєр даних ** — це послідовність кроків, які пересувають і перетворюють дані з джерела до призначення. Кроки можуть включати вилучення, очищення, збагачення, агрегування і завантаження.
DAG (направлений ациклічний граф)
** DAG ** — це структура конвеєра, де завдання є вузлами, а залежності — напрямними краєвидами — без циклів (задача не може залежати від завдання, що виконується нижче). Конвейєри моделей Apache Airflow і Prefect як DAG.
«Квартальний звіт DAG має 12 завдань — три завдання екстракції, вісім перетворень і одне завантаження на склад»
Orchestrator
** Оркестратор ** керує плануванням DAG, повторними спробами, попередженнями і заповненням. Приклади: Apache Airflow, Prefect, Dagster, Mage. Оркестратор не виконує обробку даних — він запускає робочі процеси.
Backfill
** Backfill ** — це повторне виконання задач конвеєра за історичними періодами часу. Зазвичай використовується під час першого розгортання конвеєра або виправлення вади.
«Після виправлення помилки конвертації валюти, ми заповнили дані про транзакції за останні 90 днів»
Idempotency
Конвейєр idempotent дає той самий результат незалежно від того, скільки разів він виконується для того ж вводу. Критично важливо для безпеки повторних спроб і заповнення.
П’єтро Скала (італ
Конвейєр ** SLA ** визначає максимально прийнятний час від доступності даних у джерелі до їх доступності у сховищі. Порушення викликає попередження і ескалацію.
Архитектура зберігання даних
Сховища даних
** Склад даних ** — це централізоване аналітичне сховище, оптимізоване для запитів на структуровані, очищені, історичні дані. Типично колонна. Приклади: Snowflake, BigQuery, Redshift, Databricks SQL.
Озеро даних
** Озеро даних ** зберігає необроблені дані у власному форматі (CSV, JSON, Parquet, Avro) за низькою ціною. Підтримка структурованих, напівструктурованих і неструктурованих даних.
Lakehouse
** Lakehouse ** поєднує в собі низькоякісне зберігання озера даних з швидкістю запиту і ACID транзакціями складу даних. Приклади: Delta Lake (Databricks), Apache Iceberg, Apache Hudi.
Дані Марта
Data mart є предметно-специфічною підмножиною складу, оптимізованого для запитів певної команди — наприклад, маркетинговий даний март або фінансовий даний март.
Олександр Олійник
- ** OLTP ** (Online Transactional Processing) — оптимізований для великих обсягів, транзакцій читання/ запису з низькою затримкою. Поступово, згодом.
- ** OLAP ** (Online Analytical Processing) — оптимізовано для складних агрегацій великих наборів даних. Снігова шапка, BigQuery.
Колонне сховище
** Колонне зберігання ** зберігає дані по стовпчиках, а не по рядках. Значно швидше для аналітичних запитів, які агрегують певні стовпчики з мільйонів рядків.
Parquet
** Apache Parquet ** — це домінуючий колонковий формат файлів з відкритим кодом для інженерії даних. Стиснутий, вбудований у схему, підтримується всіма основними рушіями обробки.
Моделювання даних
Schema
** Схема ** визначає структуру даних — назви таблиць, назви стовпчиків, типи даних і обмеження. У сховищі даних схема також посилається на логічний простір імен, що групує таблиці.
Схема зорі
** Схема зірок ** організовує склад даних навколо центральної ** таблиці фактів ** (вимірювання), оточеної ** таблицями розмірів ** (контекст: дата, продукт, клієнт). Оптимизовано для аналітичних запитів.
Таблиця фактів
** Таблиця фактів ** записує бізнес- події і вимірювання — продажі, перегляди сторінок, клацання. Кожен рядок є подією з числовими вимірами (кількістю, кількістю) і зовнішніми ключами до таблиць розмірів.
Таблиця розмірів
Таблиця dimension надає описові атрибути для фактів — ім’ я клієнта, категорія продукту, ієрархія дат. Виміри використовуються для фільтрування, групування і міток у запитах.
Повільно змінюючи розмірність (SCD)
** SCD ** — це вимір, атрибути якого змінюються з плином часу. ** Тип 1 ** перезаписує старе значення. ** Тип 2 ** додає новий рядок з датою дії (зберігає історію). ** Тип 3 ** додає новий стовпчик.
Нормалізація проти денормізації
** Нормалізація ** виключає надлишковість (добре для OLTP). ** Денормалізація ** приймає надлишковість для швидкодії запиту (добре для OLAP). Сховища даних зазвичай денормалізовані.
dbt (засіб побудови даних)
** dbt ** — це домінуючий інструмент перетворення на основі SQL для сучасного стека даних. Інженери пишуть SQL SELECT інструкції; dbt компілює їх в повні CREATE TABLE AS SELECT інструкції.
Ключові поняття dbt:
- ** Модель ** — файл SQL, який представляє перетворену таблицю або перегляд
- Ref —
{{ ref('model_name') }}посилається на іншу модель, автоматично будуючи графік залежностей - ** Тест ** — вбудовані перевірки якості даних (не нульові, унікальні, прийняті значення, відносини)
- ** Джерело ** — необроблена таблиця, оголошена у YAML, використовується як початкова точка для перетворень
- ** Lineage ** — dbt автоматично створює DAG залежностей моделі, які відображаються у документації
«Ми маємо тришаровий dbt проект: стадіон (легке очищення), проміжний (з’єднання) і marts (бізнес-готові таблиці).»
Медаль «За архітектуру»
Архітектура ** медальйону ** розділяє озеро даних на три шари:
- ** Бронзова ** — необроблені дані
- ** Срібло ** — очищено і перевірено
- ** Gold ** — агреговані, готові до використання таблиці
Розподілена обробка
Апачі Іскра
** Apache Spark ** є домінуючим рушієм обробки даних великого масштабу. Він використовує в пам’яті, розподілену обчислювальну модель - набагато швидше, ніж Hadoop MapReduce для ітеративних навантажень. Підтримка Python (PySpark), Scala, SQL.
DataFrame
DataFrame є первинною абстракцією даних Spark — розподіленим, табличним набором даних з названими стовпчиками і схемою. Знайомий користувачам панди.
Partition
** розділ ** — це частина DataFrame, розподілена між робочими вузлами. Кількість розділів визначає паралельність. Занадто мало → вузьке місце; занадто багато → координація надмірна.
Shuffle
** Перестановка ** є найдорожчою операцією Spark — перерозподілом даних між розділами під час з’ єднань або агрегацій. Мінімізація перетасовування є ключовою технікою оптимізації Spark.
Streaming
Апачі Кафка
** Apache Kafka ** є домінуючим потоком подій. Виробники публікують повідомлення до тем; споживачі читають з тем. Повідомлення зберігаються протягом налаштованого періоду часу, що дозволяє повторювати їх відтворення.
Див. також: Кафка (значення)
Тема Kafka ** це ** журнал повідомлень з назвою. Теми поділені на розділи для паралельності. Кожен розділ має впорядковану, незмінну послідовність повідомлень з ** зсувом **.
Конкурентна група
** група користувачів ** надає змогу декільком користувачам читати з теми паралельно, кожен з них користується різними розділами. Увімкнути горизонтальне масштабування обробки потоків.
Обробка потоків
** Обробка потоку ** обробляє дані безперервно, коли вони надходять, а не по пакетах. Інструменти: Apache Flink, Kafka Streams, Spark Structured Streaming.
Архітектурно-будівельний комплекс
** Архітектура, що керується подією ** розглядає зміни стану як події, опубліковані у потоці. Нижні служби підписуються на відповідні події і реагують асинхронно.
Інформаційні технології та управління
Контракт з даними
** Договір з даними ** є формальною, версійною угодою між виробниками даних і споживачами, що визначає схему, семантику, SLA і власність.
«Команда платежів пошкодила наш конвеєр, коли вони перейменували стовпець — ми реалізуємо контракти даних, щоб запобігти безшумним змінам схеми»
Інформаційна лінія
** Data lineage ** відстежує історію походження і перетворення даних — звідки вони походять, що з ними сталося і куди вони потрапили. Необхідний для зневадження, відповідності і аналізу впливу.
Каталог даних
** Каталог даних ** — це інвентар з можливістю пошуку всіх наборів даних — таблиць, стовпчиків, власників, описів і послідовності. Приклади: DataHub, Apache Atlas, Alation.
Схема реєстру
** Реєстр схем ** забезпечує сумісність схем для повідомлень Kafka і файлів Avro/Protobuf — забезпечує, що споживачі не порушують, коли виробники змінюють схеми.
Перевірка якості даних
** Перевірка якості даних ** перевіряє дані за правилами: не нульове значення, унікальність, посилання на цілісність, діапазони значень. Запустити тести dbt, Great Expectations або Soda.
Інформаційна мережа
** Data mesh ** це децентралізована архітектура, де команди домену володіють і публікують свої дані як продукти. Федеративне управління забезпечує виявлення і стандарти якості.
Корисні фрази
** В стадії перегляду: **
- “Задача ELT не є ідемпотентною — якщо вона зазнає невдачі в середині виконання і повторюється, ми отримуємо дублікати рядків.”
- “Ця стратегія розділів спричиняє викривлення даних — найбільший розділ у 10 разів більший за середній.”
** У дискусіях щодо управління даними: **
-
- “Ми потребуємо контракту на дані для теми подій — схема була порушена двічі цього кварталу без попередження.” *
- “Граф родословної показує, що вилучення цієї таблиці порушило б 14 моделей нижче.”
В обновлениях заинтересованных сторон:
- “Конвейер виконав своє SLA — дані були доступні на складі до 06:00 UTC.”
- “Ми спостерігаємо 20% збільшення запізнювальних даних з потоку мобільних подій — ми коригуємо наше вікно водяного знака.”
Practice
Перевірте ваші знання з інженерії даних за допомогою ** Набір вправ з інженерії даних. Name ** — 5 вправ, які охоплюють термінологію конвеєра, складу і оркестрації.
Досліджуйте повний ** Інженер з обробки даних ** для вправ, підготовки до інтерв’ ю і написання сценаріїв.