Необычное золото: освоение архитектуры медальона
Лучшие практики и секреты проектирования архитектуры медальона
Предыстория
Сегодня данные – это основная движущая сила любого современного бизнеса, поскольку они обеспечивают лучшее понимание потребностей клиентов и позволяют повысить рентабельность. Одним из наиболее надежных способов организации хранения данных являются озера данных. При построении архитектуры озера данных очень важно тщательно спланировать архитектуру данных, иначе есть высокий риск преобразования озера данных в предотвращении болота данных.
- На этапе планирования необходимо найти ответить на несколько важнейших вопросов, а именно:
- Как разделить данные на несколько слоев, таких как Bronze (необработанные), Silver (проверенные) и Gold (обогащенные)?
- Какие форматы файлов являются предпочтительными для каждого слоя?
- Какой должна быть структура данных внутри каждого слоя?
- Как обеспечить эффективную защиту и управление озером данных?
Отвечая на все эти вопросы, многие организации делают свой выбор в пользу архитектуры медальона. В теории эта концепция кажется простой, однако все подводные камни становятся очевидными нюансы становятся при ее реализации. В этой статье мне хотелось бы дать Вам основные рекомендации, которые основаны на своем опыты внедрения озер данных.
Что такое архитектура медальона?
Архитектура медальона является шаблоном проектирования, который используется организациями для логического упорядочения данных в озере данных.
Архитектура медальона состоит из трех отдельных слоев или зон. Каждый слой указывает качество данных, хранящихся в озере, с более высоким уровнем, представляющим более высокое качество. Этот многоуровневый подход помогает создать единый источник истины для корпоративных продуктов данных.
Важно, что архитектура медальона гарантирует набор свойств ACID (атомарность, согласованность, изоляция и устойчивость) по мере выполнения данных по слоям. Начиная с необработанных данных, ряд проверок и преобразований подготавливает данные, оптимизированные для эффективной аналитики. Существует три этапа медальона: бронза (сырые данные), серебро (проверенные данные) и золото (обогащенные данные).
Landing area (по желанию)
Данный слой служит местом временного хранения данных, собранных из различных источников, до момента их передачи на бронзовый слой. В процессе извлечения данных из источника они не попадают сразу в сырой слой, а проходят двухэтапный процесс:
- Введение данных в landing area;
- Перемещение данных из landing area в бронзовый слой после их расшифровки, разархивирования и т. д. (если это необходимо).
Данный слой обеспечивает дополнительное управление для ввода данных в необработанный слой по определенному расписанию или на основе определенного события (например, загрузка данных только при поступлении группы из 3-4 файлов).
По сути, это буфер на случай возможных сбоев или отправки неверных данных из источников данных.
Этот слой играет важную роль, когда ответственность за отправку данных в озеро данных лежит на системе-источнике, например, внешний клиент отправляет ежедневные данные; или данные извлекаются с помощью Rest API из сторонних приложений; или если данные зашифрованы и должны быть отправлены на бронзовый уровень после их расшифровки.
Данные, хранящиеся в этом уровне, как правило, обладают следующими характеристиками:
- Как правило, в этом слое хранятся данные за последние 3-7 дней. Управление жизненным циклом может быть использовано для автоматизации удаления данных, которым более 3-7 дней;
- Это полезно как для пакетного, так и для потокового режима;
- Форматы данных могут быть самыми разными: CSV, JSON, XML, Parquet, mp3, jpg, zip и т.д.
Бронзовый уровень (необработанная зона)
На бронзовом уровне хранятся непроверенные данные. Данные, принимаемые на бронзовом уровне, обычно
сохраняют исходное состояние как в источнике данных; добавляются постепенно и со временем их объем растет; могут представлять собой любое сочетание потоковых и пакетных транзакций.
Основное назначение этого слоя - обеспечить архив исходной системы. Он также полезен для повторной обработки, если это необходимо, без повторного чтения данных из исходной системы.
Данные, хранящиеся в бронзовом слое, как правило, обладают следующими характеристиками:
- Данные непроверенны;
- Данные могут быть как структурированными, так и полуструктурированными. Неструктурированные данные могут быть представлены в различных форматах: CSV, JSON, XML, Parquet, mp3, jpg, zip и т.д.;
- Данные оправляются с помощью таблиц с интервальными разделами, например, с использованием структуры папок YYYYMMDD или datetime;
- Сохраняют полную историю каждого набора данных в определенном формате хранения, например, Parquet или Delta;
- Могут включать в себя дополнительные метаданные, такие как информация о схеме, имена исходных файлов или запись времени обработки данных.
Серебряный уровень (обогащенная зона)
На серебряном уровне хранятся проверенная, обогащенная версия данных, которую можно передавать для последующей аналитики. Организация этой зоны в первую очередь зависит от бизнес-соображений, обхватывающих такие ключевые бизнес-сущности, как основные клиенты, точки продаж, объем продаж и т.д. Как правило, данные организованы по папкам, относящимся к тому или иному проекту либо отделу.
Данные, хранящиеся в серебряном слое, как правило, обладают следующими характеристиками:
- Данные хранятся в определенном формате хранения: предпочтительно Delta, альтернативным вариантом является Parquet;
- Общие задачи этого уровня включают в себя определение схем и типов данных, удаление ненужных столбцов, дедупликацию исходных данных и применение правил очистки для проверки качества данных и их стандартизации, изменение или удаление персонально идентифицируемой информации (PII) и т.д.;
- Данные обычно обогащаются справочными и/или основными данными;
- Данные, хранящиеся на данном уровне, используются бизнес-пользователями, дата-инженерами и специалистами по обработке, анализу и хранению больших массивов данных.
Золотой уровень (курированная зона)
Данные на золотом уровне являются глубоко переработанными и агрегированными. Эти данные в основном используются аналитиками данных, пригодны для машинного обучения, а также для использования рабочими приложениями.
Этот уровень предназначен для создания отчетов и использует денормализованные, оптимизированные для чтения модели данных с минимальным количеством соединений.
В этом слое размещаются различные презентационные уровни, специфичные для каждого конкретного проекта, такие как аналитика по клиентам, аналитика качества продукции, аналитика запасов, сегментация клиентов, рекомендации по продукции, аналитика маркетинга/продаж и т. д. Модели данных на основе звездных схем в стиле Кимбалла или карты данных в стиле Инмона часто интегрируются именно в этот слой.
Данные, хранящиеся в золотом слое, как правило, обладают следующими характеристиками:
- «Золотые» данные - это данные, преобразованные для дальнейшего потребления или использования;
- «Золотые» таблицы содержат данные, которые были преобразованы не просто в информацию, а в знания.
- Предпочтительным форматом хранения данных является Delta;
- В золотом слое применяются сложные бизнес-правила. Таким образом, используется множество действий по постобработке, вычислению, обогащению и оптимизации данных;
- Данные строго регламентированы и задокументированны.
Sandbox Zone (по желанию)
Данный уровень - это рабочая область для отдельного сотрудника или небольшой группы сотрудников (продвинутых аналитиков и специалистов по анализу данных), в которой они могут проводить эксперименты по поиску закономерностей или корреляций между данными. В качестве примера, предположим, что команда специалистов по науке о данных стремится определить наиболее эффективную стратегию продвижения товара в новом регионе.
В данном случае они могут интегрировать дополнительные данные, такие как демографические данные о клиентах и данные об использовании аналогов в данном регионе. Используя ценные сведения о продажах, полученные на основе этих данных, команда специалистов может оценить соответствие продукта требованиям клиента и разработать оптимальную стратегию продвижения.
Данные, хранящиеся в этом слое, как правило, обладают следующими характеристиками:
- Данный слой – это, по сути, пространство для экспериментов и инноваций, способствующее развитию культуры непрерывного совершенствования в команде разработчиков данных;
- Политики, применяющиеся на данном уровне, ограничивают общий объем хранилища и продолжительность хранения данных;
- Бронзовый и Серебряный уровни обеспечивают доступ к Sandbox Zone.
- Сравнение уровней
Ниже представлена сравнительная таблица уровней, о которых мы говорили в данной статье:
Полезные ссылки:
- What is the medallion lakehouse architecture? — Azure Databricks | Microsoft Learn
- What is a Medallion Architecture? (databricks.com)











