Поделиться через


Что такое архитектура медальона в гибридном решении "хранилище и озеро данных"?

Архитектура медальона описывает серию слоев данных, которые определяют качество данных, сохраняемых в lakehouse. Azure Databricks рекомендует использовать многоуровневый подход к созданию единого источника истины для корпоративных продуктов данных.

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

Архитектура Medallion как шаблон проектирования данных

Архитектура медальона — это шаблон проектирования данных, используемый для логического упорядочения данных. Его целью является постепенное и поэтапное улучшение структуры и качества данных по мере их перемещения через каждый слой архитектуры (от таблиц уровня Бронза ⇒ Серебро ⇒ Золото). Архитектуры Medallion иногда также называют многозвенными архитектурами.

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

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

Вопрос Бронза Серебро Золото
Что происходит в этом слое? Прием необработанных данных Очистка и проверка данных Измерительное моделирование и агрегирование
Кто является предполагаемым пользователем?
  • Инженеры данных
  • Операции с данными
  • Группы соответствия требованиям и аудита
  • Инженеры данных
  • Аналитики данных (используйте уровень Silver для более точного набора данных, который по-прежнему сохраняет подробные сведения, необходимые для подробного анализа).
  • Специалисты по обработке и анализу данных (создают модели и выполняют продвинутую аналитику)
  • Бизнес-аналитики и разработчики бизнес-аналитиков
  • Инженеры по обработке и анализу данных (ML)
  • Руководители и лица, принимающие решения
  • Операционные группы

Пример архитектуры медальона

В этом примере архитектуры медальона показаны бронзовые, серебряные и золотые слои для использования командой бизнес-операций. Каждый слой хранится в другой схеме каталога ops.

Архитектура медальона бронзового, серебряного и золотого слоев

  • Бронзовый слой (ops.bronze): прием необработанных данных из облачного хранилища, Kafka и Salesforce. Здесь не выполняется очистка или проверка данных.
  • Серебряный слой (ops.silver): очистка и проверка данных выполняются в этом слое.
    • Данные о клиентах и транзакциях очищаются путем удаления значений NULL и карантина недопустимых записей. Эти наборы данных объединяются в новый набор customer_transactionsданных. Специалисты по обработке и анализу данных могут использовать этот набор данных для прогнозной аналитики.
    • Аналогичным образом учетные записи и наборы данных возможностей из Salesforce объединяются для создания account_opportunities, который дополняется информацией об учетной записи.
    • Данные leads_raw очищаются в наборе данных с именем leads_cleaned.
  • Золотой слой (ops.gold): этот уровень предназначен для бизнес-пользователей. Он содержит меньше наборов данных, чем серебро и золото.
    • customer_spending: средняя и общая сумма расходов для каждого клиента.
    • account_performance: ежедневная производительность для каждой учетной записи.
    • sales_pipeline_summary: сведения о сквозном конвейере продаж.
    • business_summary: высоко агрегированная информация для исполнительного персонала.

Загрузка необработанных данных в бронзовый слой

Бронзовый слой содержит необработанные неоцененные данные. Данные, ингерстированные в бронзовом слое, обычно имеют следующие характеристики:

  • Содержит и поддерживает необработанное состояние источника данных в исходных форматах.
  • добавляется поэтапно и увеличивается со временем.
  • Предназначен для использования нагрузок, которые обогащают данные для серебряных таблиц, а не для использования аналитиками и специалистами по обработке и анализу данных.
  • Служит одним источником истины, сохраняя точность данных.
  • Включает повторную обработку и аудит, сохраняя все исторические данные.
  • Может быть любое сочетание потоковой и пакетной обработки транзакций из источников, включая объектное облачное хранилище (например, S3, GCS, ADLS), шины сообщений (например, Kafka, Kinesis и т. д.), а также федеративные системы (например, федерация Lakehouse).

Ограничение очистки или проверки данных

Минимальная проверка данных выполняется в бронзовом слое. Чтобы предотвратить потерю данных, Azure Databricks рекомендует хранить большинство полей в формате строки, VARIANT или двоичного файла, чтобы защитить от непредвиденных изменений схемы. Можно добавить столбцы метаданных, таких как происхождение или источник данных (например, _metadata.file_name ).

Проверьте и удалите дубли данных на серебряном уровне

Очистка и проверка данных выполняются на серебряном слое.

Постройте серебряные таблицы из бронзового слоя

Чтобы создать серебряный слой, считывайте данные из одной или нескольких бронзовых или серебряных таблиц и записывайте данные в серебряные таблицы.

Azure Databricks не рекомендует писать в серебряные таблицы непосредственно при загрузке данных. При записи данных непосредственно из процесса загрузки, вы можете столкнуться со сбоями вследствие изменений схемы или поврежденных записей в источниках данных. Предполагая, что все источники доступны только для добавления, настройте большинство операций чтения из бронзового уровня в виде потоковых операций чтения. Пакетные операции чтения должны быть зарезервированы для небольших наборов данных (например, небольших размерных таблиц).

Серебряный слой представляет проверенные, чистые и обогащенные версии данных. Серебряный слой:

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

Обеспечение качества данных

Следующие операции выполняются в серебряных таблицах:

  • Принудительное применение схемы
  • Обработка значений NULL и отсутствующих значений
  • Дедупликация данных
  • Решение проблем с неупорядоченными и поздними поступлениями данных
  • Проверки качества данных и контроль исполнения
  • Развитие схемы
  • Приведение типов
  • Объединения

Начать моделирование данных

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

  • Используйте VARIANT тип данных.
  • Используйте JSON строки.
  • Создание структур, карт и массивов.
  • Уплощайте схему или нормализуйте данные в нескольких таблицах.

Power Analytics с золотым слоем

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

Золотой слой:

  • Состоит из агрегированных данных, адаптированных для аналитики и отчетности.
  • Соответствует бизнес-логике и требованиям.
  • Оптимизирован для повышения производительности запросов и панелей мониторинга.

Соответствие бизнес-логике и требованиям

Золотой слой заключается в том, где вы моделиируете данные для создания отчетов и аналитики с помощью трехмерной модели, устанавливая связи и определяя меры. Аналитики с доступом к золотым данным должны иметь возможность находить специализированные данные для домена и отвечать на вопросы.

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

Создание статистических выражений, адаптированных для аналитики и отчетности

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

CREATE OR REPLACE MATERIALIZED VIEW weekly_sales AS
SELECT week,
       prod_id,
       region,
       SUM(units) AS total_units,
       SUM(units * rate) AS total_sales
FROM orders
GROUP BY week, prod_id, region

Оптимизация производительности в запросах и панелях мониторинга

Оптимизация таблиц уровня золота для повышения производительности рекомендуется, так как эти наборы данных часто запрашиваются. Большие объемы исторических данных обычно доступны в серебряном слое и не материализуются в золотом слое.

Управление затратами путем корректировки частоты приема данных

Управляйте затратами, определяя частоту приема данных.

Частота приема данных Себестоимость Задержка Декларативные примеры Процедурные примеры
Непрерывное инкрементное поглощение Выше Нижний
  • Потоковая таблица, используя spark.readStream, для поглощения из облачного хранилища или шины сообщений.
  • Конвейер DLT, который обновляет эту потоковую таблицу, работает непрерывно.
  • Код для структурированной потоковой передачи с использованием spark.readStream в записной книжке, чтобы принимать данные из облачного хранилища или шины сообщений в Delta-таблицу.
  • Записная книжка управляется с помощью задания Azure Databricks с триггером непрерывного выполнения.
Запуск пошаговой загрузки данных Нижний Выше
  • Таблица потоковой передачи данных, получающая данные из облачного хранилища или шины сообщений с помощью spark.readStream.
  • Конвейер, обновляющий эту потоковую таблицу, активируется запланированным триггером задания или триггером прибытия файла.
  • Структурированный код потоковой передачи в записной книжке с триггером Trigger.Available.
  • Этот блокнот запускается по запланированному триггеру задания или триггеру поступления файла.
Пакетная загрузка с ручной инкрементной загрузкой Нижний Самый высокий из-за редких запусков.
  • Загрузка таблицы из облачного хранилища с использованием spark.read.
  • Не использует структурированную потоковую передачу. Вместо этого используйте примитивы, такие как перезапись секций, чтобы одновременно обновлять всю секцию.
  • Требуется обширная восходящая архитектура для настройки инкрементной обработки, что позволяет достичь стоимости, сопоставимой с чтением/записью в структурированной потоковой передаче.
  • Кроме того, требуется секционирование исходных данных по полю datetime, а затем обработка всех записей из этой секции в целевой объект.