Learning Platform
Глоссарий Troubleshooting
Урок 03.06 · 25 мин
Продвинутый
ODCSData ContractsYAMLData QualitySLA

Open Data Contract Standard (ODCS)

Введение

В предыдущем уроке мы изучили Data Contracts как концепцию. Но каждая организация изобретала собственный формат — DataTech использовала ad-hoc YAML с полями contract.name, contract.version, contract.owner. Такие контракты невозможно валидировать автоматически.

Open Data Contract Standard (ODCS) — открытый стандарт, созданный в PayPal и в 2023 году переданный проекту Bitol (Linux Foundation AI & Data). Текущая стабильная версия — ODCS v3.0.1 (актуальна на момент подготовки курса), а версия v3.1.0 была выпущена в декабре 2025 — она добавляет relationships между свойствами, более строгую JSON Schema-валидацию, расширенные метаданные и executable SLAs при полной обратной совместимости с v3.0. Параллельно существует Data Contract Specification (DCS) от datacontract.com — это сосуществующий стандарт со своей экосистемой (datacontract-cli и др.); оба формата активно используются в индустрии.

Пять обязательных полей

ODCSv3.1.02026-03

Минимальный валидный ODCS контракт содержит ровно 5 полей:

apiVersion: v3.1.0
kind: DataContract
id: 53581432-6c55-4ba2-a65f-72344a91553a
version: 1.0.0
status: draft

Каждое поле имеет строгое назначение:

ПолеОписаниеФормат
apiVersionВерсия спецификации ODCSv3.1.0 (фиксированная строка)
kindТип документаВсегда DataContract
idУникальный идентификатор контрактаUUID или строковый ID
versionВерсия контракта (semver)1.0.0 — связь с версионированием из урока 05
statusТекущее состояние контрактаОдин из 5 статусов жизненного цикла

Жизненный цикл контракта (status)

proposed
draft
active
deprecated
retired

Fundamentals

После обязательных полей контракт описывает метаданные data product:

name: customer_data_product
domain: crm
tenant: DataTech
description:
  purpose: Customer master data for CRM and analytics
  limitations: No financial transaction data included
  usage: Use for customer segmentation and retention analysis

Поля: name (snake_case, naming conventions из урока 04), domain (Domain Ownership из урока 05), tenant (организация). Объект description содержит purpose, limitations, usage.

Schema

ODCSv3.1.02026-03

Schema — ключевая секция контракта, описывающая структуру данных: таблицы, колонки, типы и классификацию.

schema:
  - name: customers
    physicalType: table
    properties:
      - name: customer_id
        logicalType: integer
        physicalType: bigint
        required: true
        primaryKey: true
        classification: public
      - name: email
        logicalType: string
        physicalType: varchar
        required: true
        classification: restricted
        quality:
          - metric: nullValues
            mustBe: 0
            type: library
            dimension: completeness
      - name: full_name
        logicalType: string
        physicalType: varchar
        required: true
        classification: restricted
      - name: created_at
        logicalType: timestamp
        physicalType: timestamp
        required: true
        classification: public

Ключевые свойства: logicalType (абстрактный тип), physicalType (тип СУБД), classification (public/restricted/confidential), quality (inline-правила). Обратите внимание: classification задаётся на каждую колонкуcustomer_id (public) и email (restricted) в одной таблице.

Проверка знанийKnowledge check
Почему classification на уровне колонки (а не таблицы) критичен для governance автоматизации?
ОтветAnswer
Column-level classification позволяет автоматизировать PII-сканирование, маскирование и контроль доступа для каждого поля отдельно. В таблице customers поле email (restricted) требует маскирования при экспорте в аналитические системы, а customer_id (public) можно передавать свободно. Если classification задан на уровне таблицы (confidential), все колонки получают одинаковый уровень -- и public-данные блокируются без необходимости. Column-level classification -- основа для автоматических Data Access Policies и dynamic data masking.

Quality Rules

ODCS также поддерживает top-level quality rules на уровне таблицы:

quality:
  - metric: rowCount
    mustBeGreaterThan: 1000
    type: library
    dimension: completeness
    severity: error
  - metric: duplicateValues
    mustBe: 0
    type: library
    dimension: uniqueness
    arguments:
      properties:
        - customer_id
  - type: sql
    query: "SELECT COUNT(*) FROM customers WHERE email NOT LIKE '%@%.%'"
    mustBe: 0
    dimension: conformity
    description: Email format validation

ODCS поддерживает 4 типа правил: library (встроенные метрики), sql (произвольные запросы), text (документация), custom (внешняя логика). Поле dimension связывает правило с измерениями качества (accuracy, completeness, conformity, uniqueness, timeliness) — подробнее в Модуле 04.

SLA Properties

SLA определяет обязательства producer перед consumers в машиночитаемом формате:

slaProperties:
  - property: latency
    value: 1
    unit: d
  - property: retention
    value: 7
    unit: y
  - property: availability
    value: 99.5

В отличие от строковых SLA (freshness: "1 hour" из урока 05), числовые значения с единицами можно мониторить автоматически. Latency 1d, retention 7y (бухгалтерские требования), availability 99.5%.

Team и Roles

Контракт фиксирует ответственных за data product и уровни доступа:

team:
  name: CRM Domain Team
  members:
    - username: aivanov
      role: Data Steward
      dateIn: "2025-01-15"
roles:
  - role: analyst
    access: read
  - role: engineer
    access: write

team определяет producer (кто отвечает). roles определяет consumer access levels (связь с RBAC из Модуля 06).

Справочник дополнительных секций

ODCS v3.1.0 определяет дополнительные секции для специализированных сценариев:

ODCS: дополнительные секции
Описание связей между таблицами (foreign keys) и ссылки на внешние системы. Используется для cross-schema lineage.
Каналы поддержки: Slack-каналы, email, Teams. Определяет, куда обращаться при проблемах с данными.
Стоимость использования data product (для внутренних marketplace). Включает priceAmount, priceCurrency, priceUnit.
Технические детали: хост, порт, тип СУБД (postgres, snowflake, bigquery). Для автоматического подключения consumers.
Произвольные пары ключ-значение для организационных нужд. Расширяемость без изменения стандарта.

Эти секции опциональны. Для большинства организаций достаточно required fields + schema + quality + slaProperties + team.

Сценарий: DataTech переходит на ODCS

В уроке 05 DataTech создала ad-hoc data contract. Теперь CRM Domain Team переводит его в ODCS.

До (ad-hoc формат):

contract:
  name: customer_data_product
  version: "2.1.0"
  owner: CRM Domain Team
  schema:
    properties:
      customer_id: { type: integer, pii: false }
      email: { type: string, pii: true, classification: confidential }
  sla:
    freshness: "1 hour"
    availability: "99.5%"

После (ODCS v3.1.0):

apiVersion: v3.1.0
kind: DataContract
id: dt-customer-001
version: 2.1.0
status: active
name: customer_data_product
domain: crm
tenant: DataTech
description:
  purpose: Customer master data for CRM and analytics
  limitations: No financial transaction data included
  usage: Use for customer segmentation and retention analysis
schema:                          # типизированная schema
  - name: customers
    physicalType: table
    properties:
      - name: customer_id
        logicalType: integer
        classification: public   # column-level classification
      - name: email
        logicalType: string
        classification: restricted
        quality:                 # inline quality rules
          - metric: nullValues
            mustBe: 0
slaProperties:                   # машиночитаемый SLA
  - property: latency
    value: 1
    unit: d
team:
  name: CRM Domain Team

Ключевые изменения: обязательные поля вместо произвольной вложенности, типизированная schema (logicalType/physicalType), column-level classification вместо pii: true/false, машиночитаемый SLA, inline quality rules.

Проверка знанийKnowledge check
Какие преимущества даёт переход от ad-hoc контрактов к ODCS стандарту?
ОтветAnswer
Четыре ключевых преимущества: (1) Machine-readable validation -- ODCS имеет JSON Schema, контракты можно валидировать автоматически в CI/CD, ad-hoc формат требует кастомных валидаторов. (2) Interoperability -- все команды и инструменты работают с одним форматом, ad-hoc контракты несовместимы между командами. (3) Версионированная спецификация -- apiVersion фиксирует версию стандарта, при обновлении ODCS контракты можно мигрировать по известным правилам. (4) Tooling support -- индустриальная конвергенция на ODCS означает поддержку в каталогах данных, CI/CD инструментах и платформах качества.

Итоги

  • ODCS (Bitol/Linux Foundation) — открытый стандарт data contracts; v3.0.1 актуальна, v3.1.0 выпущена в декабре 2025; параллельно существует DCS от datacontract.com
  • 5 обязательных полей: apiVersion, kind, id, version, status
  • Schema — column-level classification + inline quality rules
  • Quality rules — 4 типа (library, sql, text, custom) с привязкой к dimension качества
  • SLA — машиночитаемые обязательства (latency, retention, availability)
  • Team/roles — ответственные и уровни доступа
  • Контракты версионируются через semver: major (breaking), minor (additive), patch (fix)

ODCS определяет ЧТО — формальный контракт между producer и consumer. Но контракт без enforcement — бумажный тигр. Data Integration Governance (управление интеграцией данных) определяет КАК данные физически перемещаются между системами: ETL/ELT pipeline governance, API versioning, schema registry governance, B2B data exchange. В следующем уроке мы изучим governance-практики для каждого паттерна интеграции — от Airflow DAGs DataTech до Kafka topics FinSecure.

Дополнительные материалы

Углублённые статьи по теме урока

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

Результат: 0 из 0
Аналитический
Вопрос 1 из 7. DataTech создала ad-hoc data contract для customer_data_product (YAML файл с полями contract.name, contract.version, contract.owner). Через 6 месяцев 4 доменные команды используют свои ad-hoc форматы -- у каждой свои поля и структура. Какое ключевое преимущество миграции на ODCS v3.1.0?

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

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

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

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