Learning Platform
Глоссарий Troubleshooting
Урок 02.01 · 20 мин
Начальный
Storage FormatsPerformanceCostData Engineering

Почему формат хранения важен

Формат — это архитектурное решение

Когда data engineer проектирует pipeline, он принимает десятки решений: какой оркестратор, какой движок, какое хранилище. Но одно решение влияет на всё остальное больше, чем кажется — формат хранения данных.

Формат определяет:

  • Сколько стоит хранить 1 TB данных (разница 5–20x между форматами)
  • Как быстро движок может прочитать нужные колонки (разница 10–100x)
  • Можно ли менять схему без перезаписи всех данных
  • Какие движки могут читать ваши данные без конвертации

Реальные цифры

Рассмотрим типичный аналитический датасет — 1 миллиард строк, 50 колонок, mix текстовых и числовых данных:

ФорматРазмер на дискеВремя scan (все колонки)Время scan (3 колонки)
CSV~500 GB~45 мин~45 мин (читает всё)
JSON~800 GB~60 мин~60 мин (читает всё)
Parquet (Snappy)~50 GB~4 мин~15 сек
ORC (Zlib)~45 GB~4 мин~15 сек
WARNING

Это не синтетический бенчмарк — это порядок величин, который вы увидите в реальных data lake. CSV/JSON обходятся дороже на хранение И на вычисления одновременно.

Три измерения формата

Каждый формат данных можно оценить по трём осям. Идеального формата не существует — есть trade-offs.

Три измерения оценки формата

Скорость чтения

Как быстро движок может прочитать нужные данные. Зависит от layout (row/columnar), метаданных, индексов

Columnar форматы читают только нужные колонки. Row форматы читают всю строку целиком.

Эффективность хранения

Сколько места занимают данные на диске. Зависит от кодировок, компрессии, overhead метаданных

Кодировки + компрессия могут уменьшить размер в 10–20x по сравнению с raw текстом.

Гибкость схемы

Можно ли добавить колонку, переименовать поле, изменить тип без перезаписи всех данных

Форматы со встроенной схемой поддерживают эволюцию. CSV/JSON — нет.

Категории форматов

Форматы хранения делятся на несколько категорий по назначению. В этом курсе мы рассмотрим каждую:

Категории форматов хранения
Аналитические (columnar)Оптимизированы для аналитических запросов — чтение отдельных колонок, агрегации, фильтрация
Сериализация (row)Оптимизированы для передачи данных между сервисами — компактное представление полных записей
Legacy / текстовыеЧеловекочитаемые форматы — просты в использовании, но неэффективны для больших объёмов
In-memoryФорматы для обмена данными между процессами без сериализации — zero-copy доступ
Table FormatsМетаданные поверх columnar форматов — ACID, time travel, schema evolution на data lake
Новое поколениеЭкспериментальные форматы, оптимизированные для ML, GPU, или замена Parquet

Когда формат становится проблемой

Типичный сценарий: команда начинает с JSON в S3, потому что “просто и работает”. Через год:

  1. Хранение стоит $50K/мес — JSON не сжимается эффективно
  2. Запросы идут 20 минут — Athena читает каждый байт каждого файла
  3. Схема дрейфит — разные producers пишут разные поля
  4. Миграция на Parquet — 2 недели работы + перезапись всех данных
TIP

Правило: выбирайте формат в начале проекта, не в середине. Миграция формата на 100 TB данных — это не рефакторинг, это проект.

Как формат влияет на стоимость

В облаке вы платите за три вещи:

  • Хранение — $/GB/месяц (S3, GCS, ADLS)
  • Сканирование — $/TB просканированных данных (Athena, BigQuery)
  • Compute — $/час работы кластера (Spark, Trino)

Columnar формат с хорошей компрессией уменьшает все три:

Влияние формата на облачные расходы

Raw данные (CSV/JSON) — 500 GB

Исходные данные в текстовом формате — максимальный размер, максимальная стоимость
Конвертация в Parquet + Snappy

Parquet + Snappy — 50 GB (10x меньше)

Кодировки (dictionary, RLE) + компрессия (Snappy) уменьшают размер в 10x
Запрос: SELECT 3 из 50 колонок

Сканируется: 3 GB (из 50 GB) — 166x меньше чем CSV

Columnar layout позволяет читать только нужные колонки — ещё 16x экономия на scan

Что дальше

В следующих уроках этого модуля мы разберём фундаментальные концепции, на которых построены все форматы:

  1. Row vs Columnar — как данные физически раскладываются на диске
  2. Кодировки — как уменьшить размер данных до компрессии
  3. Компрессия — алгоритмы сжатия и их trade-offs
  4. Метаданные и схема — как форматы хранят информацию о себе

Эти четыре концепции — строительные блоки для понимания любого формата. Parquet, ORC, Arrow, Delta Lake — все они комбинируют эти блоки по-разному.

Проверьте понимание

Результат: 0 из 0
Прикладной
Вопрос 1 из 4. Аналитический датасет: 1 млрд строк, 50 колонок. Запрос SELECT на 3 колонки. Какой формат обеспечит наибольшую разницу в скорости?

Закончили урок?

Отметьте его как пройденный, чтобы отслеживать свой прогресс

Войдите чтобы оценить урок

Прогресс модуля
0 из 5