◇ OpenCyber Academy
Engenharia · Capítulo 22 · Português

Capítulo 22 — Governança de dados: modelos de sistema e de dados

Ensino gratuito e aberto para quem deseja proteger pessoas e tecnologias. Não é preciso criar uma conta para estudar ou consultar as respostas.

Capítulo 22 — Governança de dados: modelos de sistema e de dados

Mapa da aula

Aula 22 publicada. Mapa, exemplo, EX064.

flowchart TD
  N0["22.1 Modelando a cadeia"]
  N1["Laboratório — Linhagem a montante e lacunas de titul"]
  N2["22.2 O que o rastreamento mostra"]
  N3["22.3 Fechando as lacunas"]
  N4["22.4 Mantendo os modelos atualizados"]
  N0 --> N1 --> N2 --> N3 --> N4
  N4 --> EX["Exemplo resolvido"]
  EX --> Q["Exercício EX064"]

Desenho lógico

flowchart LR
  N0["22.1 Modelando a cadeia"]
  N1["Laboratório — Linhagem a montante e lacunas de titul"]
  N2["22.2 O que o rastreamento mostra"]
  N3["22.3 Fechando as lacunas"]
  N4["22.4 Mantendo os modelos atualizados"]
  N0 --> N1 --> N2 --> N3 --> N4 --> Q["EX064"]
[22.1 Modelando a cadeia]
    |
    v
[Laboratório — Linhagem a montante e lacunas de titul]
    |
    v
[22.2 O que o rastreamento mostra]
    |
    v
[22.3 Fechando as lacunas]
    |
    v
[22.4 Mantendo os modelos atualizados]
    |
    v
[Exemplo resolvido] --> [Exercício EX064]

Objetivos de aprendizagem

Você vai (1) modelar fluxos de dados e a linhagem de um indicador; (2) encontrar lacunas de titularidade a partir de um grafo de linhagem; (3) manter os modelos atualizados.

22.1 Modelando a cadeia

Kofi modela o indicador de perdas como um grafo dirigido. O número do relatório do conselho depende de um indicador-chave de desempenho, que depende do volume faturado e do volume fornecido. O volume faturado depende das leituras dos medidores e das tarifas; as leituras dependem em parte de leituras manuais feitas em um aplicativo de campo; o volume fornecido depende dos dados brutos de vazão dos sensores. Cada nó é um conjunto de dados ou um cálculo com um dono. O grafo torna explícitas as dependências, que uma descrição escrita do processo tende a embaralhar. Os nós têm nomes.

Laboratório — Linhagem a montante e lacunas de titularidade do número de perdas

"""Trace upstream lineage of a published figure through a synthetic pipeline graph (stdlib only)."""
edges = {
    "board_report.leakage_pct": ["kpi.leakage"],
    "kpi.leakage": ["billing.volume_billed", "scada.volume_supplied"],
    "billing.volume_billed": ["meters.reading", "customers.tariff"],
    "scada.volume_supplied": ["sensors.flow_raw"],
    "meters.reading": ["field_app.manual_read"],
    "customers.tariff": [], "sensors.flow_raw": [], "field_app.manual_read": [],
}
owners = {"kpi.leakage": "ops analytics", "billing.volume_billed": "billing", "scada.volume_supplied": "network ops",
          "meters.reading": "metering", "customers.tariff": "billing", "sensors.flow_raw": None, "field_app.manual_read": None}
def up(n, seen):
    for p in edges.get(n, []):
        if p not in seen: seen.add(p); up(p, seen)
    return seen
src = up("board_report.leakage_pct", set())
print(f"upstream nodes {len(src)}; sources {sorted(n for n in src if not edges[n])}")
print(f"nodes without an owner: {sorted(n for n in src if owners.get(n) is None)}")

Execute com python3 lab_lineage.py. Saída verificada:

upstream nodes 7; sources ['customers.tariff', 'field_app.manual_read', 'sensors.flow_raw']
nodes without an owner: ['field_app.manual_read', 'sensors.flow_raw']

22.2 O que o rastreamento mostra

Ao rodar o laboratório, aparecem sete nós a montante do número do conselho. Três são fontes sem entradas adicionais: as tarifas dos clientes, as leituras manuais do aplicativo de campo e os dados brutos de vazão dos sensores. Dois nós não têm dono: as leituras manuais e as vazões brutas dos sensores. Ambos alimentam o número que o regulador vê. Kofi observa que as entradas mais básicas, mais próximas do mundo físico, são justamente onde falta titularidade, porque ficam entre equipes de engenharia e ninguém as reivindicou. Kofi relata as duas lacunas.

22.3 Fechando as lacunas

Kofi propõe donos para as duas lacunas: o gerente de medição para as leituras manuais e o gerente de operação da rede para os dados brutos de vazão. Cada um aceita depois de combinar o que significa ser dono: aprovar regras de qualidade, responder a problemas em prazos acordados e aprovar mudanças. Ele acrescenta os donos ao grafo e roda o rastreamento de novo, que agora não mostra nenhum nó sem dono. A nova execução vira uma verificação mensal, já que novos conjuntos de dados acrescentados à cadeia podem reabrir lacunas. Os dois donos assinam uma breve declaração de titularidade.

22.4 Mantendo os modelos atualizados

Modelos de linhagem envelhecem à medida que os sistemas mudam. Kofi propõe que qualquer mudança no pipeline de perdas atualize o grafo na mesma versão, o que é garantido por uma lista de verificação da revisão. Ele também compara o grafo com os registros de consultas do data warehouse a cada trimestre, para encontrar dependências que existem na prática, mas não no modelo. A Profa. Varga explica que um modelo que se afasta da realidade é pior do que nenhum, porque as pessoas confiam nele e tomam decisões com base em suposições erradas. Aparecem duas dessas dependências, e ambas são acrescentadas prontamente.

Exemplo resolvido

Kofi modela a cadeia de perdas como um grafo, rastreia sete nós a montante, com três fontes e dois nós sem dono, designa donos e mantém o modelo atualizado com verificações nas versões e comparações com os registros.

Caso sintético. O grafo é sintético; as saídas vêm de lab_lineage.py.

Erros e limites

A linhagem estática não vê dependências em tempo de execução; compare-a com os registros.

Exercícios

Continue estudando — aula 22 (capítulo 22 de 50)

← Capítulo 21 · Índice das aulas · Capítulo 23 →

Continue para a próxima aula já escrita.