Buscar

Engenharia de Dados

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 4 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Engenharia de dados é responsável por fazer a extração de dados de uma ou mais fontes em batch (em lote, por exemplo, um arquivo txt) ou em streaming (vai coletando os dados à medida que são gerados, real time direto da fonte). Uma vez coletados, é feita a ingestão dos dados brutos em uma tabela temporária de preparação (área intermediária ou staging area) para alterá-los antes de inseri-los no destino ou ferramenta de uso em tempo real.
O pipeline de dados é o conjunto de etapas envolvidas no processo de mover dados de sua origem (pode ser um banco de dados, arquivos csv, APIs, MySQL, Google Ads, etc, e ter mais de uma fonte) para um destino (data warehouse, data lake, data store, nuvem, modelo, etc). Inclui a agregação, organização e movimentação dos dados. Pode ser implementado desde ferramentas de automação em ambiente local, ferramentas em nuvem ou via programação (python, R, Java, C++, Scala). Essas etapas são:
· Limpeza
· Transformação
· Enriquecimento: trazer contexto para os dados, integrá-los
· Segurança: verifica quem tem acesso aos dados em cada etapa, seja interno ou externo, criptografia, etc
· Orquestração: cada uma das etapas de engenharia pode ser feita em um pipeline separado, com ferramentas distintas e depois concatenados. O gerenciamento desses pipelines é feito pela orquestração. Assim é possível criar regras (como só disparar o próximo pipeline se o anterior estiver concluído), vai criar logs, etc
· Integração contínua (CI) / Entrega contínua (CD): é uma maneira de garantir que os códigos das aplicações, dos programas estejam sempre sendo atualizados da melhor forma possível, com segurança, de maneira compartilhada e entregues o mais rápido possível. É uma abordagem de desenvolvimento de software em que os desenvolvedores trabalham juntos em um repositório compartilhado de código (combinando criação, teste e implantação) e, à medida que as alterações são feitas, há um processo de build automatizado para detectar problemas de código. O resultado é um ciclo de vida de desenvolvimento mais rápido e uma taxa de erro menor
· Gestão dados e metadados: verifica permissões, adequação à LGPD, quem são os donos dos dados, os responsáveis por garantir que estão confiáveis, quais chaves os conectam a outros dados, documentação, criação de catálogo de dados, etc
· Linhagem de dados: onde o dado nasce, por onde passa e onde é descartado
ETL (extract, transform, load) são um tipo de pipeline de dados. É um subprocesso de um pipeline de dados. As etapas ETL não incluem consultas e etapas subsequentes.
Dentre as ferramentas de pipeline de dados com foco em transformação de dados, temos o Apache Airflow (orquestração), AWS Glue (catálogo de dados) e o Amazon Athena (consulta de dados).
Para armazenamento, temos o DataBricks, Hadoop, SnowFlake, GCP, Amazon S3, Azure Data Factory.
Ferramentas para realtime analytics, temos o Tableau, Metabase, Amazon Kinesis, Looker Studio, PowerBI, Jupyter.
O arquiteto de dados projeta a solução e o engenheiro constrói e faz a manutenção.
O engenheiro DataOps é responsável por coordenar, monitorar e gerenciar todo o processo de pipelines.
PoC (proof of concept) se refere a um modelo que tem como objetivo colocar em prática algo que está somente no campo da teoria, simulando cenários, validando requisitos de negócio, testando ferramentas e prevendo custos. Costuma ser bastante usada para averiguar a funcionalidade de novos softwares e soluções antes de ir para produção.
Sistema ERP: sistema de gestão coorporativa, para cuidar de inventário, vendas, etc.
SLA: service level agreement.
Containers: máquinas virtuais super leves. É uma opção barata para fazer deploy de modelos de machine learning sem a necessidade de disponibilizar um servidor só para isso.
O Amazon Elastic Container Service (ECS) é um serviço em nuvem da AWS para fazer deploy de containers, enquanto o Amazon Elastic Kubernetes Service (EKS) é utilizado para orquestrar / gerenciar containers.
Serviços Serverless não precisam de provisionamento de infraestrutura.
IaC é infraestrutura com código, cujo objetivo é gerenciar a infraestrutura de forma simples, permitindo mudanças rápida e implementando as boas práticas de CI/CD.
Big Data é definido por volume, velocidade, variedade e veracidade.
Padrões de acesso: com que frequência os dados vão ser acessados, em que volume, qual a lógica, etc.
Sistemas Gerenciadores de Banco de Dados (SGBD): Oracle, SQL Server, MySQL, etc.
Armazenamento SQL: é o formato tradicional de armazenamento de dados tabulares.
Armazenamento NoSQL: permite armazenamento de dados em diferentes formatos, como dados semi-estruturados tipo JSON, XML ou colunas. São sistemas de armazenamento orientados à performance e facilidade de uso. Costumam utilizar armazenamento colunar.
Armazenamento em Linha: cada linha é uma entidade, uma instância. É bom para realizar consultas, mas não é bom para performance.
Armazenamento em Coluna: possui uma coluna sobre os metadados (dados sobre dados) e na outra os dados com identificação (tipo um índice). É muito mais performático.
Quando estamos falando de formatos como vídeo, áudio, imagem, etc ou quando o volume for muito grande e seja necessário processar esses dados em alta velocidade, armazenamento SQL e NoSQL não são ideais. Temos como alternativas de melhor performance formatos como Parquet, Avro, JSON (java script object notation), CSV, ORC, HDF5. É possível armazenar e processar os dados em um único servidor / máquina ou em um ambiente distribuído.
a. Parquet: formato de armazenamento colunas para armazenar grandes quantidades de dados de forma eficiente. É a principal escolha para armazenar dados no ecossistema Hadoop (em ambiente distribuído), permitindo consultas, análises eficientes usando ferramentas como Apache Spark e compartilhamento de dados entre sistemas. Esses arquivos têm ótima compressão de dados, fácil particionamento, leitura seletiva e suporte em diversas plataformas.
b. Avro: formato de serialização para armazenar dados. É frequentemente usado no ecossistema Hadoop por oferecer suporte a estruturas de dados complexas e ser eficiente para armazenar grandes quantidades de dados em um ambiente distribuído, possibilitando o compartilhamento desses dados entre sistemas. Esse arquivo permite mudanças de schema, é orientado a linha e tem suporte a schema irregular (como JSON – que é um formato de dicionário).
c. ORC: optimized row columnar é um formato de armazenamento colunar, composto de grupos de linhas, usado para armazenar grandes quantidades de dados de forma eficiente. Suportam tipos de dados como datetime, decimal e tipos complexos (como listas, mapas, estruturas) e armazenam metadados.
Data Warehouse: tipo de banco de dados projetado especificamente para consultas e análises eficientes, ou para oferecer suporte a sistemas de relatórios e inteligência de negócios, de grandes volumes de dados de várias fontes, como bancos de dados transacionais (aquele usado no dia-a-dia da empresa, para cadastrar dados operacionais, cadastros, vendas, etc) ou arquivos de log. Pode ser criado com SGBD SQL ou NoSQL, no formato colunar ou linear, sendo frequentemente usados para armazenar dados históricos. O DW exige que os dados sejam limpos e organizados antes do armazenamento.
Data Lake: permite o armazenamento dos dados no formato bruto para posterior processamento e organização. Exige uma boa governança de dados. É um grande repositório centralizado (concentra dados de várias fontes) que permite armazenar e processar grandes quantidades de dados estruturados e não estruturados de forma escalável e flexível (qualquer formato e tipo). Normalmente é usado o sistema de armazenamento distribuído (várias máquinas trabalhando em conjunto).
Data Lakehouse: une o armazenamento flexível de dados brutos não estruturados de um Data Lake com os recursos e ferramentas de gerenciamento do Data Warehouse no armazenamento em nuvem de baixo custo em formatos abertos e, normalmente, distribuídos. A ideia é “from BI to AI”, então nem todas as empresastêm necessidade de um DLH. Eles são projetados para ser um repositório centralizado, escalável, flexível, com bom desempenho de consulta. O problema é que têm alta complexidade para configurar, exige mais recursos, aumentando custos, cria desafios adicionais de governança e integração de dados.
Data Store: é um repositório para armazenar e gerenciar dados, podendo ser divididos em sete categorias (onde da 3 para frente são considerados DS propriamente dito):
1. Bancos de dados relacionais (SQL – normalmente usados em DWs)
2. Bancos de dados não relacionais (NoSQL – DWs ou DLs)
3. Sistemas de arquivos (distribuídos ou não, DLs e DLHs): podem ser local ou em rede e na nuvem ou não. O objetivo é armazenar dados em qualquer formato de arquivo e, em geral, têm baixo custo.
4. Armazenamento key-value: é basicamente um hashmap, um mapa de chaves para valores. Como um dicionário em escala de produção.
5. Full-text Search engine: projetos para o específico caso de uso de pesquisar documentos de texto. Você envia documentos semiestruturados e, em vez de armazená-los e usar analisadores (XML, JSON) para extrair informações, o mecanismo de pesquisa divide o conteúdo do documento em um novo formato otimizado para pesquisa com base em substrings de campos de texto. O elasticsearch é o principal representante dessa categoria. Faz sentido usar quando temos grandes volumes de texto.
6. Fila de mensagens: age como um middleware. São consideradas uma ferramenta de transferência de dados, mais do que de armazenamento, mas armazenam os dados com tanta confiabilidade e persistência quanto as demais ferramentas. O Apache Kafka é o principal representante da categoria.
7. In-memory data store: é possível pegar os dados do disco e armazenar temporariamente na memória para otimizar performance e leitura. IMDS são sistemas que armazenam, leem, gravam e acessam dados na memória de acesso aleatório (RAM) em vez de na memória somente de leitura (ROM). Eles usam a RAM para recuperar dados rapidamente, fazendo réplicas constantemente atualizadas de registros de dados e são definidos pelo local em que mantêm os dados, não necessariamente pelo tipo de estrutura de dados.

Continue navegando