Когда использовать текстовые форматы
Не всё — аналитика
Предыдущий урок показал, почему текстовые форматы плохи для аналитических запросов. Но аналитика — не единственный use case для данных. Текстовые форматы остаются лучшим выбором в целом ряде сценариев, где их преимущества (читаемость, совместимость, простота) перевешивают недостатки.
Use case 1: Конфигурационные файлы
Конфигурации — идеальная ниша для текстовых форматов. Файл маленький (десятки KB), читается и редактируется человеком, не участвует в аналитических запросах:
JSON для конфигураций — компромисс. RFC 8259 запрещает комментарии, но многие инструменты используют JSONC (JSON with Comments) или JSON5. TypeScript (tsconfig.json) и VS Code используют JSONC — стандартный JSON-парсер их не прочитает.
Use case 2: REST API и interchange
JSON — де-факто стандарт для REST API. Преимущества: универсальная поддержка (каждый язык имеет JSON-парсер), самоописание (ключи = имена полей), читаемость для отладки:
Use case 3: ETL Landing Zone
Landing zone — промежуточное хранилище для сырых данных перед трансформацией. CSV и JSON Lines — стандартные форматы для landing zone:
Паттерн raw → staging → curated: raw (CSV/JSON as-is), staging (validated + typed, still text or Avro), curated (Parquet/Delta, partitioned, ready for queries). Каждый слой — отдельный S3 prefix. Raw хранится дешёво (S3 Infrequent Access), curated — в горячем хранилище.
Use case 4: Structured Logging (JSON Lines)
JSON Lines — идеальный формат для structured logging: append-only, одна запись = одна строка, parseable, но при этом human-readable:
Use case 5: Audit trails и compliance
Аудиторские записи (audit logs) часто требуют человеко-читаемый формат по юридическим причинам: аудитор должен иметь возможность прочитать файл без специального софта:
Стратегии конверсии: текст → columnar
Текстовые форматы — временные. Данные поступают в текстовом формате и конвертируются в columnar как можно раньше:
Decision framework: какой формат выбрать
Паттерн: конверсия при ingestion
Ключевой паттерн data engineering: конвертировать из текстового в columnar как можно раньше. Чем ближе к источнику — тем меньше данных обрабатывается в неэффективном формате:
Итог
Текстовые форматы — не устаревшие, а нишевые. Конфигурации, API, logging, audit, interchange — это легитимные и оптимальные сценарии для CSV, JSON, XML. Ключевое правило: данные поступают в текстовом формате → конвертируются в columnar при первой возможности → живут в Parquet/Delta для аналитики. Текстовый формат — формат входа, не формат хранения.