7 práticas recomendadas para ingestão de dados

Tiago Navarro
6 min readAug 21, 2022

--

Engenharia de dados: além do hype

Engenharia de Dados é o novo trabalho mais sexy em 2022” Superou a Ciência de Dados em demanda e oportunidades de carreira.

Se você ainda não viu o crescimento astronômico da demanda por Engenharia de Dados, é provável que você tenha vivido em uma caverna nos últimos 2 anos.

O que exatamente é o hype?

Para tentar responder a isso, devemos primeiro explorar,

O que é Engenharia de Dados?

O Coursera define,

A engenharia de dados é a prática de projetar e construir sistemas para coletar, armazenar e analisar dados em escala.

Hmm, interessante, mas o que é realmente? Vamos tentar aprofundar cada um dos pontos destacados acima.

Coletando dados de diferentes fontes:

Os dados agora estão disponíveis em uma variedade de conjuntos de dados estruturados e não estruturados.

Ele reside em texto, imagens, vídeos, plataformas de mídia social, dispositivos da Internet das Coisas (ou IoT), eventos em tempo real que transmitem dados, bancos de dados legados e dados provenientes de provedores de dados e agências.

As fontes nunca foram tão diversas e dinâmicas.

Não é fácil conectar-se a diferentes tipos de fontes, ler diferentes formatos de dados e coletar tudo.

Armazenando dados em um repositório padrão:

Depois de se conectar, é importante armazenar os dados brutos em um local comum.

Os dados precisam ser limpos antes de analisá-los e entendê-los.

Os dados também precisarão estar em conformidade com os compliances e os padrões.

Partes interessadas finais/consumidores de dados:

Temos nossos stakeholders de negócios, aplicativos, programadores, analistas e casos de uso de ciência de dados, todos extraindo esses dados do repositório de dados corporativos.

Todos esses consumidores tentarão analisar e entender os dados para entender o negócio e tomar algumas decisões importantes.

Escalando o Infraestrutura:

Finalmente, dimensionar é uma das tarefas mais importantes para um Engenheiro de Dados. Os dados vão crescer exponencialmente. A infraestrutura para carregar, armazenar e analisar os dados precisa ser capaz de crescer junto com os dados.

Assim, entendemos os trabalhos e desafios básicos que envolvem a Engenharia de Dados. Vamos tentar aprofundar um pouco mais as duas primeiras tarefas, coletando e armazenando dados.

Ingestão de dados:
A ingestão de dados é definida como o processo de absorção de dados de uma grande variedade de fontes e, em seguida, transferi-los para um local de destino onde podem ser analisados e depositados.

Um engenheiro de dados gasta mais de 50% de seu tempo escrevendo diferentes pipelines que movem dados de um lugar para outro. Existem duas estruturas básicas para alcançar o mesmo:

ETL: Extrair — Transformar — Carregar
ELT: Extrair — Carregar — Transformar

Como é intuitivamente entendido, a diferença básica é quando você aplica a transformação, antes ou depois de carregar os dados.

No entanto, em ambos os frameworks o elemento comum é poder extrair os dados e carregá-los em outro destino. Isso é ingestão de dados.

Agora, em uma ampla categorização, existem principalmente 3 tipos de ingestão de dados:

1. Ingestão de dados baseada em lote:

A ingestão baseada em lote ocorre em um horário programado regularmente. Os dados são ingeridos em lotes. Isso é importante quando uma empresa precisa monitorar relatórios diários, ex: relatórios de vendas para diferentes lojas. Este é o caso de uso de ingestão de dados mais usado.

2. Ingestão de dados em tempo real/streaming:

O processo de coleta e transmissão de dados de sistemas de origem em soluções em tempo real, como Change Data Capture (CDC), é conhecido como ingestão de dados em tempo real.

O CDC ou Streaming Data captura quaisquer alterações, novas transações ou reversão em tempo real e move os dados alterados para o destino, sem afetar a carga de trabalho do banco de dados.

A ingestão em tempo real é fundamental em áreas como monitoramento da rede elétrica, análise operacional, análise do mercado de ações, preços dinâmicos em companhias aéreas e mecanismos de recomendação.

3. Arquitetura de ingestão de dados baseada em Lambda:

A arquitetura Lambda na ingestão de dados tenta usar as práticas recomendadas de ingestão em lote e em tempo real.

  1. Camada de lote: calcula os dados com base em toda a imagem. Isso é mais preciso, mas é mais lento para calcular.
  2. Camada de velocidade: é usado para ingestão em tempo real, os dados calculados podem não ser completamente precisos, no entanto, fornece uma imagem em tempo real dos dados.
  3. Camada de serviço: As saídas da camada de lote na forma de visualizações em lote e as provenientes da camada de velocidade na forma de visualizações quase em tempo real são encaminhadas para a camada de serviço. Essa camada indexa as visualizações em lote para que possam ser consultadas em baixa latência em uma base ad hoc.

Agora que entendemos o que é ingestão de dados, parece ser bastante simples, basta copiar os dados da fonte e colá-los no destino, certo?

NÃO.

O que? Por que?

Quais são os desafios na ingestão de dados?

  1. Fontes de dados variadas precisam de protocolos personalizados para se conectar
  2. Diferentes formatos e padrões de dados em fontes
  3. A integridade dos dados durante a leitura e armazenamento
  4. Qualidade de dados e duplicação

E estes são apenas alguns para citar.

Então, como podemos garantir que ingerimos os dados corretos?

Podemos seguir algumas práticas recomendadas simples seguidas por anos.

Práticas recomendadas de ingestão de dados:

1. Adicione alertas na origem para problemas de dados
Adicionar alertas nos dados de origem economizará muito tempo tentando depurar problemas downstream.

Verificações básicas de qualidade de dados como coluna nula, registros duplicados e dados inválidos podem ser verificados antes de perder os dados no repositório.

Se as verificações falharem, os alertas devem ser acionados para a equipe de origem corrigir. Os registros defeituosos podem ser descartados e registrados.

2. Mantenha uma cópia de todos os seus dados brutos antes de aplicar a transformação

A camada de dados brutos deve ser somente leitura e ninguém deve ter acesso à atualização.

Isso servirá como backup em caso de falha nas camadas subsequentes ao tentar limpar ou adicionar transformação.

3. Defina as expectativas e os prazos com antecedência, a ingestão de dados não é fácil

Líderes de negócios e gerentes de projeto geralmente superestimam ou subestimam o tempo necessário para a ingestão de dados.

A ingestão de dados geralmente pode ser muito complexa, e os pipelines de ingestão precisam ter testes adequados.

portanto, é sempre bom definir as expectativas das partes interessadas sobre os cronogramas envolvidos para construir o pipeline e o tempo necessário para carregar os dados.

4. Automatize pipelines, use orquestração, defina SLAs

Os pipelines de ingestão de dados devem ser automatizados, juntamente com toda a dependência necessária.

Uma ferramenta de orquestração pode ser usada para sincronizar diferentes pipelines.

Os SLAs devem ser definidos para cada pipeline, o que permitirá que as equipes de monitoramento sinalizem caso algum pipeline seja executado por mais tempo.

5. Os pipelines de ingestão de dados devem ser idempotentes

A idempotência é uma característica crítica para pipelines de ingestão de dados.

Idempotência significa que se você executar uma operação várias vezes, o resultado não será alterado após a execução inicial.

Matematicamente f(f(x)) = f(x) é uma função idempotente.

No contexto da integração de dados, a idempotência torna o pipeline de ingestão de dados autocorretivo.

Mais importante ainda, impede que registros duplicados sejam carregados.

Algumas das estratégias para conseguir o mesmo podem ser: Delete Insert, Upsert, Merge operation e look up tasks.

6. Modelar, Reutilizar frameworks para desenvolvimento

Muitos dos pipelines de ingestão de dados são repetitivos, por isso é importante criar modelos para o desenvolvimento de pipeline.

Se você criar uma estrutura reutilizável em seu pipeline, o esforço de entrega poderá ser bastante reduzido.

O aumento da velocidade na ingestão de novos dados sempre será apreciado pelo negócio.

7. Documente seus pipelines

Este é o último, mas um dos hábitos mais importantes para inculcar.

É extremamente importante documentar a entrada, a saída e a lógica dentro do pipeline.

Esta documentação pode ajudar a economizar tempo para depurar, explicar a lógica de negócios ou criar um mapeamento de origem para destino para negócios.

--

--

Tiago Navarro
Tiago Navarro

No responses yet