Case Studies: формат в контексте
Теория — в предыдущих уроках. Здесь — четыре реалистичных сценария, в которых команды применяют фреймворк выбора (урок 01), методологию бенчмаркинга (урок 02) и стратегии миграции (урок 04).
Каждый case study следует структуре: контекст → workload → выбор → миграция → результат.
Case Study 1: E-Commerce — CSV→Parquet→Iceberg
Контекст
Средний e-commerce (50M заказов/год, 2 TB сырых данных в месяц). Исторически: ETL в Airflow записывает CSV в S3, Athena для ad-hoc запросов, Looker для BI dashboards. Боль: Athena-запросы дорогие (scan всех данных), нет schema enforcement, новые аналитики ломают pipeline’ы неправильными типами.
Источники: PostgreSQL + Shopify + GA
Источники: PostgreSQL (orders, products, users), Shopify API (transactions), Google Analytics (events). Airflow DAG'ы: 15 ETL jobs, каждый записывает CSV в S3 партиционированный по date.Применение фреймворка
Результат
Case Study 2: FinTech — Kafka+Avro → Hudi MOR
Контекст
Финтех-платформа (платежи): 500K транзакций/час, CDC из PostgreSQL через Debezium → Kafka. Требования: near-real-time аналитика (< 5 минут задержки), fraud detection (ML), regulatory compliance (7-year retention, audit trail).
PostgreSQL → Debezium CDC → Kafka (Avro)
PostgreSQL (OLTP): transactions, accounts, merchants. Debezium CDC connector: capture INSERT/UPDATE/DELETE → Kafka topics. Avro + Schema Registry: строгая схема сообщений. 500K events/hour = ~140 events/second.Применение фреймворка
Результат
Case Study 3: ML-платформа — Parquet → Lance
Контекст
ML-платформа для e-commerce рекомендаций: 100M product embeddings (768 dimensions, CLIP), training dataset 500M rows, weekly retraining. Боль: DataLoader bottleneck — Parquet random access для mini-batch sampling = 60% training time spent on I/O.
PyTorch DataLoader → Parquet (S3)
Training pipeline: PyTorch DataLoader → read random mini-batches (1024 rows) → model forward/backward → update weights. Текущее хранение: Parquet files в S3 (~2 TB). DataLoader: random row access через PyArrow.Решение: Lance
Результат
Case Study 4: Multi-Tenant SaaS — Delta Lake + UniForm
Контекст
B2B SaaS-платформа (data analytics): 200 tenants, каждый с собственными данными (1-50 TB). Databricks — primary compute. Некоторые enterprise tenants требуют доступ через Snowflake (corporate standard). Боль: поддерживать два формата (Delta для Databricks, Iceberg для Snowflake) = двойной pipeline.
200 tenants × 1-50 TB = ~2 PB total
200 tenants: isolated S3 prefixes (s3://data/{tenant_id}/). Ingest: Databricks Structured Streaming from Kafka. Compute: Databricks (primary), Snowflake (10 enterprise tenants). Проблема: enterprise tenants хотят Snowflake access → нужен Iceberg.Решение: Delta Lake + UniForm
Delta Lake 3.x + UniForm: авто-генерация Iceberg metadata
Delta Lake 3.x UniForm: при каждом commit Delta автоматически генерирует Iceberg-совместимые metadata (manifests, snapshots). Данные хранятся ОДИН раз в Delta формате. Iceberg readers (Snowflake) читают через сгенерированные Iceberg metadata.Результат
Сравнительная таблица case studies
Уроки из case studies
Итоги модуля
Модуль 17 дал фреймворк для практического выбора формата:
- Урок 01: Определите архетип workload’а → выделите deal-breakers → сузьте до 1-2 форматов
- Урок 02: Бенчмаркайте на своих данных, по правильной методологии, публикуйте результаты
- Урок 03: Для table format: engine compatibility + streaming support + maintenance overhead → Iceberg / Delta / Hudi / Paimon
- Урок 04: Shadow write → gradual rollout → validate → cleanup. Никогда Big Bang
- Урок 05: Реальные сценарии подтверждают: workload-first выбор, in-place миграция, ROI за 1-3 месяца
В Модуле 18 (Capstone) вы примените весь этот фреймворк на практике: Docker-лаборатория с бенчмарками всех форматов на одном датасете.