# Lakehouse

Понятия Datalake и Lakehouse тесно связаны, но это не одно и то же. Если использовать аналогию из предыдущих ответов, то **Datalake** — это огромный склад, куда сваливают все подряд (и песок, и кирпичи, и трубы) в том виде, в котором привезли. А **Lakehouse** — это тот же склад, но с установленными стеллажами, системой учета, зонами приемки и отгрузки, благодаря чему там можно не только хранить, но и сразу собирать готовые конструкции для отправки заказчику.

Давайте разберем детали.

## Фундаментальные концепции, основные понятия и компоненты Lakehouse

Lakehouse — это современная архитектура данных, которая объединяет лучшие черты Datalake (гибкость хранения любых данных по низкой цене) и Data Warehouse (производительность, структурированность и надежность). Он строится поверх масштабируемого объектного хранилища, добавляя к нему критически важные слои управления.

### Ключевые компоненты архитектуры

1. **Хранилище (Storage Layer):** Фундамент Lakehouse. Это масштабируемое и недорогое объектное хранилище, совместимое с Amazon S3 (например, **S3, Ozone, HDFS, Яндекс.Облако**). Оно обеспечивает независимое масштабирование хранения от вычислений.
2. **Табличный формат (Table Format):** Ключевой компонент, превращающий озеро в дом. Самые популярные open-source форматы — **Apache Iceberg, Delta Lake и Apache Hudi**. Они добавляют к файлам в хранилище слой метаданных, позволяя работать с набором файлов как с одной SQL-таблицей.
3. **Каталог метаданных (Metadata Catalog):** Справочная система, которая знает, где какая таблица (по версии Iceberg/Delta) лежит. Это может быть **Hive Metastore (HMS), AWS Glue, REST-каталог**.
4. **Вычислительный слой (Compute Layer):** Набор движков для обработки данных. Они отделены от хранилища и могут запускаться по требованию. Основные инструменты: **Apache Spark** (для ETL и сложной обработки), **StarRocks, Trino, Presto, Impala** (для быстрых SQL-запросов и BI).
5. **Управление и оркестрация:** Инструменты для автоматизации процессов и контроля доступа. Включают **Kubernetes** (для управления вычислительными контейнерами), **Apache Airflow** (для оркестрации ETL-задач), **Ranger** (для безопасности), а также инструменты для разработки, такие как **JupyterHub**.

### Фундаментальные концепции

* **Разделение Compute и Storage:** Вычислительные мощности и хранилище живут и масштабируются независимо. Вы платите только за вычисления, когда они реально нужны, а хранилище стоит копейки.
* **ACID-транзакции:** Благодаря табличным форматам, Lakehouse гарантирует надежность данных (атомарность, согласованность, изоляцию, надежность) при одновременной записи или чтении множеством пользователей, чего так не хватало простым Datalake.
* **Схема "Медальона" (Multi-hop / Medallion Architecture):** Подход к организации данных внутри Lakehouse. Данные проходят через слои очистки и обогащения:
  * **Bronze (сырой):** Данные как есть из источника.
  * **Silver (очищенный):** Валидированные, очищенные, объединенные данные.
  * **Gold (готовый к использованию):** Данные, агрегированные и подготовленные специально для бизнес-отчетов и ML.
* **Open Data Formats:** Данные хранятся в открытых высокопроизводительных форматах, таких как **Parquet, ORC, Avro**, что исключает привязку к одному вендору.

## Когда и для чего применяется Lakehouse

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

* **Замена классического Data Warehouse:** Для построения корпоративной отчетности (BI) с меньшими затратами, так как хранилище (S3) значительно дешевле, чем диски в MPP-базах.
* **Data Hub для операционной деятельности:** Lakehouse может использоваться не только для аналитики, но и для питания операционных процессов. Как в примере с **«Магнитом»**: фотографии товаров на кассы, начисление бонусов, сверка чеков с ФНС — все это работает на данных из Lakehouse.
* **Data Science и Machine Learning:** Data Scientists могут обучать модели непосредственно на огромных объемах сырых или обогащенных данных, не выгружая их из дорогого хранилища и не копируя лишний раз.
* **Исторический архив и аудит:** Благодаря возможностям табличных форматов (Iceberg/Delta) хранить снапшоты (версии) данных, Lakehouse позволяет «отматывать время назад» и видеть состояние данных на любой момент в прошлом. Это критически важно для аудита и расследования инцидентов.
* **Унификация платформы данных:** Компании стремятся сделать Lakehouse единым местом, куда стекаются данные из всех систем (транзакционных, файловых, потоковых) и откуда они потом забираются для любых задач — от SQL-отчетов до стриминговой аналитики.

## Как реализуется Lakehouse

Lakehouse — это не продукт, а архитектурный паттерн. Его реализация — это сборка конструктора из описанных выше компонентов.

1. **Выбор основы:**
    * **Самостоятельная сборка:** Компании с сильной инженерной командой берут объектное хранилище (как в облаке, так и on-premise), ставят поверх него табличный формат (Apache Iceberg — популярный выбор) и подключают нужные движки (Spark для ETL, Trino/StarRocks для запросов).
    * **Платформенные решения:** Использование управляемых сервисов, которые автоматизируют часть работы. Например, **Azure Databricks** предлагает платформу с оптимизированным движком и инструментарием для Lakehouse. Существуют также решения российских вендоров, как в кейсе «Магнита» (Data Sapience).

2. **Организация данных (Medallion):** Инженеры настраивают пайплайны (обычно в Apache Spark или Flink), которые забирают данные из источников (Kafka, базы данных, файлы) и раскладывают их по слоям Bronze -> Silver -> Gold.

3. **Настройка доступа:** Аналитикам дают доступ к слою Gold через SQL-движки (StarRocks, Presto) и BI-инструменты. Data Scientists могут подключаться к Silver напрямую через Spark или Python для построения моделей.

## Почему Datalake и Lakehouse — это не одно и то же

Это самый важный вопрос. Главное различие — в **наличии управления и структуры поверх хранилища**.

**Datalake** — это просто хранилище файлов. Вы кладете файл (CSV, JSON, видео) в папку. Чтобы прочитать его, вы должны знать его формат, местоположение и надеяться, что данные внутри не испортились. В Datalake **сложно или невозможно**:

* Обновить одну строчку в файле (приходится перезаписывать весь файл).
* Гарантировать, что два человека не испортят данные, записывая их одновременно.
* Обеспечить высокую скорость SQL-аналитики без создания отдельных копий данных в специальных форматах.
* Без качественного каталога метаданных он быстро превращается в "Data Swamp" (болото данных).

**Lakehouse** решает эти проблемы. Он берет то же дешевое файловое хранилище, но добавляет поверх него **табличный формат (как Iceberg)**. Этот формат действует как умный индекс и журнал транзакций. Он позволяет:

* Работать с набором файлов как с одной таблицей.
* Делать ACID-транзакции (CRUD-операции на уровне строк).
* Использовать "time travel" для доступа к историческим версиям.
* Оптимизировать хранение для быстрых запросов без копирования данных.

**Краткая таблица различий:**

| Характеристика | Datalake (Озеро данных) | Lakehouse (Озерный дом) |
| :--- | :--- | :--- |
| **Основная идея** | Хранилище "всего" в сыром виде. | Управляемое хранилище с возможностями склада. |
| **Транзакции (ACID)** | Не поддерживаются или очень ограниченно. | Полноценная поддержка ACID. |
| **Обновление данных** | Требуется перезапись всего файла/партиции. | Поддерживается на уровне строк (UPDATE/DELETE/MERGE). |
| **Управление** | Низкое. Риск превратиться в "болото". | Высокое. Есть каталог, схема, контроль версий. |
| **Производительность SQL** | Низкая без дополнительных ухищрений. | Высокая, сопоставимая с DWH. |
| **Целевые задачи** | Хранение сырых данных, пакетная ETL, обучение ML-моделей (с низкими требованиями к консистентности). | Все задачи Datalake + BI-отчетность, интерактивная аналитика, операционные приложения. |

## Итог

Если совсем просто: **Lakehouse = Datalake (дешевое хранилище) + Data Warehouse (управление, транзакции и производительность)**. Это эволюция озера данных, которая исправляет его главные недостатки, делая его пригодным для серьезной корпоративной работы.
