Welcome to my personal place for love, peace and happiness 🤖

Описание патерна Write-Audit-Publish

Кстати, хорошо ложится на git-like подход работы с данными.

Write-Audit-Publish (WAP) — это патерн проектирования в инженерии данных, предназначенный для повышения надежности и качества данных перед тем, как они станут доступны конечным потребителям (аналитикам, дашбордам, другим системам).

Основная цель WAP — предотвратить попадание некорректных, неполных или ошибочных данных в “production” среду. Вместо того чтобы записывать данные напрямую в целевую таблицу, процесс разделяется на три изолированных этапа lakefs.io.

Как это работает?

Процесс WAP состоит из трех логических шагов:

  1. Write (Запись)
    На этом этапе данные (новые или обновленные) записываются в промежуточную, изолированную область. Это может быть отдельная таблица, временный каталог в озере данных или, что более современно, отдельная ветка (branch) в табличном формате, таком как Apache Iceberg. Ключевой момент — эти данные не видны конечным потребителям.
  1. Audit (Аудит/Проверка)
    После записи данные в изолированной области подвергаются всесторонней проверке. Этот этап — сердце патерна. Проверки могут включать:
    • Технические проверки: соответствие схеме данных, отсутствие `NULL` в ключевых полях, уникальность идентификаторов.
    • Бизнес-логика: проверка на соответствие бизнес-правилам (например, сумма заказа не может быть отрицательной).
    • Статистические проверки: выявление аномалий и выбросов.
    • Сравнительные проверки: сверка с данными из других таблиц или систем.
      Если аудит не пройден, данные остаются в изоляции для анализа и исправления, не затрагивая при этом рабочую среду.
  1. Publish (Публикация)
    Только если этап аудита успешно пройден, данные публикуются, то есть становятся видимыми для конечных пользователей. Этот процесс, как правило, является атомарной операцией. Это означает, что все изменения применяются одновременно, как единая транзакция. Потребители видят либо старое состояние данных, либо полностью обновленное и проверенное, без промежуточных, грязных состояний.

Примеры использования и реализации

Патерн WAP не привязан к конкретной технологии, но некоторые современные инструменты делают его реализацию особенно удобной.

1. Apache Iceberg

Apache Iceberg, открытый табличный формат для озер данных, идеально подходит для реализации WAP благодаря своей поддержке ветвления (branching) и тегирования (tagging), похожей на Git.

  • Write: Новые данные записываются не в основную ветку `main`, а в отдельную ветку, например `ingestion_updates_20240816`.
  • Audit: Запросы на проверку качества данных выполняются исключительно к данным в этой новой ветке.
  • Publish: Если проверки прошли успешно, основная ветка `main` “перематывается” (fast-forward) на состояние ветки `ingestion_updates_20240816`. Эта операция метаданных происходит мгновенно и атомарно. Если проверки не пройдены, ветка просто удаляется www.tabular.io

Этот подход также позволяет координировать обновления для нескольких таблиц, используя общее имя ветки, проводить перекрестные проверки, а затем публиковать все изменения одновременно для обеспечения консистентности www.tabular.io.

2. Snowflake

В облачном хранилище данных Snowflake патерн WAP также может быть эффективно реализован.

  • Write: Данные загружаются во временную или “staging” таблицу.
  • Audit: С помощью SQL-запросов и инструментов, таких как `Snowflake Tasks`, выполняются проверки данных в этой staging-таблице.
  • Publish: Если данные корректны, они атомарно переносятся в основную, “production” таблицу с помощью команды `MERGE`, которая позволяет эффективно вставлять, обновлять и удалять строки за одну операцию www.getorchestra.io. Для отслеживания изменений в исходных таблицах часто используются `Snowflake Streams`.
Ключевые преимущества WAP
  • Повышение доверия к данным: Пользователи могут быть уверены, что данные, которые они видят, прошли строгую проверку качества.
  • Надежность конвейеров данных (pipelines): Сбои в процессе трансформации или загрузки не нарушают целостность данных в основной системе.
  • Изоляция и атомарность: Изменения либо применяются целиком, либо не применяются вовсе, что исключает “грязное чтение”.
  • Улучшенная отладка: Если данные не прошли аудит, они остаются в изолированной среде, где инженеры могут легко их проанализировать и исправить ошибку.

В итоге, WAP позволяет перейти от оркестрации, основанной на “успешности выполнения задачи”, к оркестрации, основанной на “готовности и качестве данных” www.tabular.io

Ссылки

  • Общее описание и важность патерна: What Is Write-Audit-Publish and Why Should You Care? lakefs.io
  • Реализация с Apache Iceberg: Write – Audit- Publish (WAP) Pattern – Tabular www.tabular.io
  • Пример реализации на AWS с Apache Iceberg: Write-Audit-Publish Pattern with Apache Iceberg on AWS www.guptaakashdeep.com
  • Реализация в Snowflake: Data Engineering Patterns: Write-Audit-Publish (WAP) – Snowflake www.getorchestra.io
Follow this blog
Send
Share
Pin