Концепция озера данных появилась как ответ на ограничения классических хранилищ, для которых схему данных нужно придумывать заранее. В озеро сначала кладут всё как есть, а уже потом решают, что и как анализировать.
Что обычно хранится
- Сырые события из продукта в формате JSON.
- Журналы работы систем и снимки баз данных.
- Выгрузки из внешних систем без обработки.
- Файлы для ML: изображения, аудио, видео, тексты.
Современная архитектура
- Сами файлы лежат в дешёвом облачном хранилище: S3, GCS, Yandex Object Storage.
- Поверх них — открытые форматы (Parquet, ORC) и слой метаданных (Apache Iceberg, Delta Lake).
- Аналитические движки (Athena, Presto, Trino, Spark) умеют запрашивать данные прямо из озера.
- Такую связку называют озером-хранилищем, по-английски lakehouse: гибрид озера и классического хранилища.
- Много разнородных данных, в том числе неструктурированных
- Хочется сохранять историю в исходном виде «на всякий случай»
- Нужны и аналитика, и ML на одних и тех же данных
- Маленький проект с парой источников — достаточно одного хранилища, отдельное озеро строить незачем
Финтех-компания собирает события из мобильного приложения, банкоматов, веб-кабинета и партнёрских каналов. Все сырые события через Kafka попадают в озеро данных на S3 в формате Parquet. На основе озера живут и витрины в хранилище для BI, и наборы признаков для ML-моделей. Если возникает новый аналитический вопрос, который не покрыт текущими витринами, аналитик идёт прямо в озеро и собирает нужную выборку, не переделывая исходный конвейер загрузки.
Озеро очень быстро превращается в болото, если в нём нет каталога данных и владельцев. Прежде чем сгружать туда сырьё со всей компании, продумайте: кто отвечает за каждый источник, как описаны схемы и кто чистит устаревшее. Описания источников и ответственных удобно держать в базе знаний Shtab, а доступ к разделам разграничивать правами и ролями. Без этого через год озеро станет непригодным для работы.