Платформы данных
Медальонная архитектура: схема онлайн
«Медальон» показывает, как один набор данных проходит уровни качества и доступа: сырые, обезличенные, промежуточные, агрегированные, архив. Для каждого уровня видно бакет, формат, инструмент, кто пишет и пример данных, а акцент стоит на уровне, который читают потребители.
Когда использовать
- Описать bronze/silver/gold-слои озера данных для команды
- Показать, на каком шаге обезличиваются персональные данные
- Согласовать с аналитиками, какой уровень считать витриной
- Задокументировать правила хранения и переноса в архив
Как с ней работать в Dele
- Уровней (tiers) — 3–6, слева направо в порядке продвижения. У каждого: название, бакет, инструмент, формат, кто пишет и 1–2 конкретных примера данных.
- Стиль: outer — для сырого входного уровня, cold — только для последнего, архивного.
- Подпись продвижения (promotion) — заглавными до 14 символов: MASK IDS, AGGREGATE. lifecycle: true рисует пунктиром перенос по сроку хранения, а не преобразование.
- Продвижение идёт только слева направо, обратных потоков нет.
- Акцент ровно один — аналитический уровень, который запрашивают потребители, обычно агрегированный. Не архив.
- До двух карточек способов записи (paths): путь через SQL, через ноутбук.
Три способа собрать диаграмму
Словами. Откройте ИИ-ассистента в редакторе или подключите своего агента по MCP и опишите задачу, например:
«Нарисуй медальонную схему для данных опроса покупателей: сырые ответы, обезличенные, промежуточные, агрегаты по магазинам, архив. Хранилище MinIO, запросы Trino.»
В редакторе. Создайте диаграмму из шаблона «Медальон», меняйте элементы на холсте и в панели справа — раскладка пересчитывается сама.
Кодом. Диаграмма — это JSON-спецификация. Её можно править в панели «Спецификация», генерировать скриптом и хранить в git.
Спецификация примера (JSON)
{
"type": "medallion",
"title": "Пять уровней хранения аналитики магазина",
"description": "Пять уровней хранения данных интернет-магазина — сырые, обезличенные, подготовленные, агрегированные и архив — с инструментами, форматами и переходами между ними.",
"exampleLabel": "Пример магазина",
"tiers": [
{
"label": "Сырые",
"bucket": "raw-commerce",
"style": "outer",
"tool": "NiFi · загрузка",
"format": "JSON · Parquet",
"writer": "Инженер данных",
"examples": [
"события кликстрима",
"записи заказов"
]
},
{
"label": "Обезличенные",
"bucket": "anon-commerce",
"style": "default",
"tool": "Trino SQL",
"format": "Iceberg · партиции",
"writer": "Инженер данных",
"examples": [
"псевдонимы сессий",
"скрытые ID клиентов"
],
"promotion": "МАСКА ID"
},
{
"label": "Подготовка",
"bucket": "staging-commerce",
"style": "default",
"tool": "Trino · ноутбуки",
"format": "Iceberg · очищено",
"writer": "Аналитик данных",
"examples": [
"факты заказов",
"проверенные события"
],
"promotion": "ОЧИСТКА"
},
{
"label": "Агрегаты",
"bucket": "analytics-marts",
"style": "default",
"tool": "Trino INSERT",
"format": "Iceberg · метрики",
"writer": "Аналитик данных",
"examples": [
"конверсия по дням",
"выручка по каналам"
],
"promotion": "АГРЕГАЦИЯ",
"focal": true
},
{
"label": "Архив",
"bucket": "archive-commerce",
"style": "cold",
"tool": "Жизненный цикл S3",
"format": "холодный · неизменяемый",
"writer": "Инженер данных",
"examples": [
"кликстрим за годы",
"закрытые снимки заказов"
],
"promotion": "ХРАНЕНИЕ",
"lifecycle": true
}
],
"paths": [
{
"tag": "SQL",
"title": "Trino INSERT INTO … SELECT",
"sublabel": "фильтр · join · агрегаты — повторяемые преобразования"
},
{
"tag": "НОУТБУК",
"title": "Python-ноутбуки над объектным хранилищем",
"sublabel": "исследование · проверка · модели"
}
]
}Когда выбрать другой формат
- Пошаговый процесс обработки — схема процесса → Процесс
- Компоненты всей платформы и кластер → Общая архитектура
- Кто из ролей что делает с данными → Поток данных по ролям
Вопросы о формате
Обязательно ли называть уровни bronze, silver, gold?
Нет. Назовите уровни так, как принято у вас: сырые, обезличенные, агрегированные. Уровней может быть от 3 до 6.
Как показать перенос в архив?
Последний уровень получает стиль cold, а переход к нему — lifecycle: true, он рисуется пунктиром.