Table of Contents

Основные концепции хранения данных

Твердое понимание основ хранения данных - это первое, что оценивают интервьюеры. Вам нужно не только определить термины, но и объяснить, как они применяются в реальных сценариях.

Что такое хранилище данных?

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

Каковы основные характеристики хранилища данных?

  • Субъектно-ориентированный: Организован вокруг основных субъектов (например, клиентов, продуктов, продаж), а не процессов применения.
  • Интегрированные: Данные из разрозненных источников очищаются, трансформируются и стандартизируются в согласованный формат.
  • Нелетучие: Данные считываются только после загрузки; исторические изменения отслеживаются с помощью версий, а не перезаписи.
  • Вариант времени: Данные содержат атрибуты измерения времени (например, отметки даты, периоды) для поддержки исторического анализа.

Чем хранилище данных отличается от озера данных?

Озеро данных хранит необработанные, необработанные данные в своем родном формате (структурированные, полуструктурированные или неструктурированные). Склад данных хранит обработанные, очищенные и структурированные данные. Организации часто используют и то, и другое: озеро для поисковой аналитики и машинного обучения, и склад для структурированной отчетности. Интервьюеры могут спросить о случаях использования, когда один предпочтительнее другого.

Что такое операционный хранилище данных (ODS)?

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

Моделирование данных в Data Warehousing

Моделирование данных - это план хранилища данных. Два общих подхода - это схема звезды и схема снежинки.

Что такое звездная схема?

Звездная схема имеет центральную таблицу фактов, связанную с одной или несколькими таблицами измерений через иностранные ключи. Размеры денормализуются (например, одна таблица измерений продукта, содержащая категорию, бренд и подкатегорию). Эта структура упрощает запросы и улучшает производительность чтения. Это наиболее распространенная модель в хранении данных.

Что такое схема снежинки?

Схема снежинки нормализует таблицы измерений на несколько связанных таблиц. Например, размер продукта может быть разделен на отдельные таблицы продуктов, брендов и категорий. Хотя это уменьшает избыточность данных, это увеличивает количество соединений и может замедлить производительность запроса. Он используется, когда эффективность хранения приоритетна по скорости запроса.

Что такое таблица фактов? Какие бывают виды фактов?

Таблица фактов содержит количественные показатели (например, объем продаж, количество, прибыль) и иностранные ключи, связывающие их с таблицами измерений.

  • Транзакционный — регистрирует отдельные события (например, каждую товарную линию).
  • Периодический снимок — фиксирует меры через регулярные промежутки времени (например, ежедневные уровни запасов).
  • Накопление снимка — отслеживает процессы с фиксированным началом и концом (например, этапы выполнения заказа).

Интервьюеры могут попросить вас выбрать подходящий тип фактов для данного бизнес-сценария.

Что такое таблицы измерений? Объясните соответствующие размеры.

Таблицы измерений содержат описательные атрибуты (например, имя клиента, цвет продукта, местоположение магазина). Соответствующие размеры разделяются по нескольким таблицам фактов в хранилище данных или по разным мартам данных. Они обеспечивают согласованность, чтобы отчеты могли быть объединены осмысленно. Например, размер даты, используемый как в таблицах фактов продаж, так и в таблицах фактов инвентаризации, должен иметь одинаковую структуру и гранулярность.

Медленно меняющиеся измерения (SCD)

Обработка изменений атрибутов измерения с течением времени является критическим навыком в дизайне ETL. Интервьюеры часто спрашивают о типах SCD.

Тип 1, Тип 2 и Тип 3 медленно меняют размеры.

  • Тип 1: Перезаписывает старое значение с новым значением. Никакая история не сохраняется. Подходит, когда историческая точность не требуется (например, исправление опечатки в названии продукта).
  • Тип 2: Добавляет новый ряд для отслеживания изменений, с эффективными диапазонами дат (дата начала, дата окончания) и текущим флагом. Это сохраняет полную историю. Наиболее распространены такие атрибуты, как адрес клиента или отдел сотрудников.
  • Тип 3: Добавляет новую колонку для хранения предыдущего значения при сохранении текущего значения. Это позволяет ограниченную историю (обычно одна предыдущая версия). Используется для атрибутов, которые изменяются нечасто (например, перегруппировка категории продукта).

Будьте готовы к обсуждению компромиссов: тип 2 увеличивает количество строк, но дает полный контрольный след; тип 1 прост, но теряет историю.

Обзор процесса ETL

Процесс ETL является основой интеграции данных. Необходимо глубокое понимание каждого этапа и общих проблем.

Подробно объясните каждый шаг ETL.

Вытяжка: Данные извлекаются из различных исходных систем — реляционных баз данных, плоских файлов (CSV, JSON, XML), API, облачных хранилищ или потоковых платформ. Вытяжка может быть полной (все данные) или постепенной (только новые / модифицированные записи с момента последнего запуска).

Преобразование: Данные очищаются, проверяются и преобразуются в согласованный формат.Преобразования включают:

  • Пересчет типа данных (например, строка на сегодняшний день)
  • Дедупликация и нулевая обработка
  • Приложение бизнес-правила (например, вычисление маржи = выручки — затрат)
  • Агрегация и поворот
  • Обзоры для суррогатных ключей

Загрузка: Трансформированные данные вставляются в целевой хранилище данных. Стратегии загрузки: полное обновление (укорочение и перезагрузка), приращённое приложение и повышение (слияние). Рассмотрим восстановление индекса, переключение разделов и управление транзакциями во время загрузки.

В чем разница между ETL и ELT?

ETL преобразует данные перед загрузкой в склад. ELT (Extract, Load, Transform) сначала загружает необработанные данные, а затем преобразует их с использованием вычислительной мощности хранилища данных (например, SQL или MapReduce). ELT распространен в современных облачных хранилищах данных, таких как Snowflake, BigQuery и Redshift, где хранение и вычисления разъединены. ETL по-прежнему предпочтительнее, когда преобразования требуют сложной бизнес-логики или когда качество исходных данных низкое.

Что такое общие инструменты ETL?

Популярные инструменты включают Informatica PowerCenter, Talend, IBM DataStage, Microsoft SSIS, Apache NiFi и облачные сервисы, такие как AWS Glue, Azure Data Factory и Google Dataflow. Варианты с открытым исходным кодом: Pentaho (Kettle), Apache Airflow (оркестрация) и dbt (инструмент для создания данных для преобразований). Интервьюеры могут спросить о вашем опыте работы с конкретными инструментами и о том, как вы обрабатывали производительность или отладку.

Вопросы интервью и их подробные ответы

1.Какие основные проблемы стоят перед процессами ETL и как вы их смягчаете?

К числу проблем относятся:

  • Вопросы качества данных — недостающие значения, дубликаты, непоследовательные форматы.Смягчение: внедряйте правила профилирования и валидации на ранней стадии; используйте таблицы этапов для карантина плохих записей.
  • Бутылочные узлы производительности — медленное извлечение из исходных систем, тяжелые преобразования или неэффективные нагрузки.Смягчение: использование инкрементной экстракции, параллельной обработки, пакетного разделения и оптимизации стратегий соединения SQL.
  • Рост объема данных — ежедневная загрузка терабайтов.Смягчение: реализация обрезки разделов, сжатия и масштабируемой облачной инфраструктуры.
  • Требования к задержке данных — необходимость в обновлениях в режиме реального времени. Смягчение: использование сбора данных об изменениях (CDC) и потоковых инструментов приема (Kafka, Kinesis).
  • Управление зависимостью — задания ETL, которые терпят неудачу из-за конфликтов с ресурсным разбором или планированием.Смягчение: используйте инструменты оркестровки с логикой повторного использования и оповещением.

2.Как оптимизировать процессы ETL для повышения производительности?

Оптимизация производительности охватывает несколько областей:

  • Вытяжка: Используйте инкрементную экстракцию вместо полных нагрузок; реализуйте CDC (например, на основе журнала или временной метки); используйте утилиты для массовых копий.
  • Трансформация: По возможности нажимайте преобразования (например, используйте SQL в базе данных); избегайте операций по строкам; используйте логику на основе набора; параллелизуйте независимые задачи.
  • Загрузка: Отключите индексы и ограничения во время нагрузки и перестраивайте после; используйте пакетные вставки; рассмотрите переключение разделов для больших таблиц.
  • Инфраструктура: Используйте SSD, масштабируйте вычислительные ресурсы и используйте кэширующие слои. Мониторинг с помощью инструментов профилирования для выявления узких мест.

3.В чем разница между OLAP и OLTP системами?

OLTP (Online Transaction Processing) предназначен для больших объемов, коротких, атомных транзакций (например, ввода заказа, обновления инвентаря). Данные нормализуются, а запросы касаются небольшого количества записей. OLAP (Online Analytical Processing) предназначен для сложных запросов, которые объединяют большие объемы исторических данных. OLAP-системы обычно денормализуются (звездная схема) и поддерживают многомерный анализ (срез, кости, сверление). Типичный вопрос интервью: «Когда вы выберете базу данных OLAP по базе данных OLTP?» Ответ: для аналитических отчетов, приборных панелей и интеллектуального анализа данных.

4. Объясните концепцию суррогатных ключей против естественных ключей в хранении данных.

Суррогатный ключ - это искусственный, сгенерированный системой уникальный идентификатор (например, целочисленная последовательность), используемый в качестве основного ключа в таблице измерений. Естественный ключ - это бизнес-идентификатор из источника (например, код продукта, идентификатор клиента). Суррогатные ключи рекомендуются, потому что они стабильны (бизнес-ключи могут меняться, вызывая волновые эффекты), поддерживают SCD Type 2 (несколько строк на бизнес-ключ) и улучшают производительность соединения (узкие числовые ключи).

5.Как вы справляетесь с обработкой ошибок в трубопроводе ETL?

Внедрить надежную структуру обработки ошибок:

  • Используйте блоки поиска и ошибки журнала в отдельной таблице ошибок с идентификатором работы, меткой времени, данными строк и описанием ошибок.
  • Определите правила качества данных и отклоните записи, которые не валидируются в карантинную папку или таблицу.
  • Настройка оповещений (email, Slack) о критических сбоях.
  • Внедрение логической схемы повторных операций для переходных ошибок (сетевых тайм-аутов).
  • Сохраняйте таблицу истории выполнения, чтобы отслеживать статус успеха / неудачи для каждого этапа работы.

6.Что такое сбор данных об изменениях (CDC)?

CDC - это метод сбора изменений (вставок, обновлений, удаления) в исходных данных и применения их к целевой системе. Методы включают:

  • ]Log-based CDC (например, Oracle GoldenGate, Debezium)
  • Timestamp-based (с использованием последних измененных столбцов)
  • ]Trigger-based (триггеры базы данных)
  • ]Diff-based (сравнение снимков)
CDC имеет важное значение для низкозадерживаемых ETL и конвейеров данных в реальном времени. Интервьюеры могут спрашивать о компромиссах: log-based имеет минимальное влияние на источник, но может быть сложным; timetamp-based проще, но может пропустить удаление.

Вопросы продвинутого интервью

7.Как вы разрабатываете процесс ETL для хранилища данных, который поддерживает как пакетное, так и в режиме реального времени?

Гибридные архитектуры распространены. Для пакетных: планируйте ночные задания с использованием дополнительных нагрузок. Для реальных: используйте потоковый слой (например, Kafka) для захвата событий, затем применяйте легкие преобразования и загружайте в таблицу фактов в реальном времени или дельта-слой (например, в озерном домике). Пути пакетов и реального времени должны сходиться на складе с использованием восходящей логики. Рассмотрите разделение по времени для последовательного слияния двух потоков. Используйте инструменты, такие как Apache Flink или Spark Structured Streaming.

8. Объясните происхождение данных и почему это важно.

Линейка данных отслеживает происхождение, преобразования и движение данных от источника к цели. Она помогает в анализе воздействия (что ломается в отчетах ниже по потоку, если источник изменяется), отладке (следить, почему значение неверно) и аудите (соблюдение правил, таких как GDPR или SOX). Инструменты, такие как Apache Atlas, Marquez или коммерческие решения (Collibra, Alation) обеспечивают автоматизированную линию. Интервьюеры могут спросить, как вы бы документировали линию в проекте ETL.

9.Какая разница между хранилищем данных и банком данных?

Хранилище данных - это общекорпоративное хранилище, охватывающее несколько предметных областей. Март данных - это подмножество, ориентированное на одну бизнес-функцию (например, продажи, финансы). Марты данных могут быть построены поверх склада (зависимые) или независимо (независимые). Выбор между ними включает компромиссы в стоимости, управлении и гибкости.

10.Как вы справляетесь с медленно меняющимися размерами в ETL?

Подход зависит от типа SCD:

  • Тип 1: Используйте заявления об обновлении для перезаписи записи.
  • Тип 2: Используйте MERGE (вставку) для закрытия предыдущей версии (установленная дата окончания) и вставьте новую строку с датой начала = сейчас и текущим флагом = истинно.
  • Тип 3: Обновить текущую колонку и перенести старое значение в предыдущую колонку.

Для больших размеров реализуйте кэш поиска, чтобы уменьшить кругосветные поездки в базе данных. Также рассмотрите возможность использования хеш-сравнения для обнаружения фактических изменений и избежания ненужных обновлений.

Лучшие практики ETL

Интервьюеры будут искать практический опыт. Упомяните эти лучшие практики во время обсуждений:

  • Модульная конструкция: Разбивка рабочих мест ETL на многоразовые компоненты (например, многоразовая постановочная нагрузка, стандартная библиотека преобразования).
  • Идемпотенция: Убедитесь, что повторное выполнение работы дает тот же результат (без дубликатов). Используйте логику восходящего тренда и транзакционные границы.
  • Метадата-менеджмент: Ведите словарь данных и график зависимости от работы.
  • Мониторинг производительности: Отслеживание ключевых показателей: строки, обрабатываемые в минуту, продолжительность, частота ошибок и перекос. Используйте панели приборов.
  • Управление версиями: Храните код ETL в Git вместе со скриптами SQL и конфигурационными файлами.
  • Тестирование: Напишите единичные тесты для преобразований, интеграционные тесты для сквозных трубопроводов и тесты сравнения данных с источником и целью.

Ссылка на внешние ресурсы для более глубокого обучения: IBM на ETL, Snowflake: ETL vs ELT и Мартин Фаулер на эволюционных данных.

Заключение

Освоение интервью по процессам хранения данных и ETL требует как теоретических знаний, так и практического опыта. Сосредоточьтесь на основных концепциях - характеристиках хранилища данных, пространственном моделировании, SCD и оптимизации ETL - и будьте готовы обсуждать реальные проблемы с конкретными решениями. Практика четко объясняет ваш мыслительный процесс. Подготовившись к этим общим и продвинутым вопросам, вы продемонстрируете опыт, необходимый для успешных ролей управления данными.