Fundamentos de Engenharia de Dados
Projete e Construa Sistemas de Dados Robustos
Descrição do livro
A engenharia de dados cresceu rapidamente na última década, deixando muitos engenheiros de software, cientistas e analistas de dados em busca de uma visão abrangente dessa prática. Com este livro prático, você aprenderá a projetar e construir sistemas para atender às necessidades de sua organização e clientes, avaliando as melhores tecnologias disponíveis por meio da estrutura do ciclo de vida da engenharia de dados.
Os autores Joe Reis e Matt Housley guiam você pelo ciclo de vida da engenharia de dados e mostram como integrar uma variedade de tecnologias em nuvem para atender às necessidades dos consumidores de dados downstream. Você compreenderá como aplicar os conceitos de geração, ingestão, orquestração, transformação, armazenamento e governança de dados que são essenciais em qualquer ambiente de dados, independentemente da tecnologia utilizada.
Este livro o ajudará a:
• Obter uma visão geral de todo o cenário de engenharia de dados.
• Avaliar problemas de engenharia de dados utilizando um conjunto abrangente de melhores práticas.
• Não se deixar guiar pelo hype do momento ao escolher as tecnologias, arquitetura e processos de dados adequados.
• Utilizar o ciclo de vida da engenharia de dados para projetar e criar uma arquitetura robusta.
• Integrar governança de dados e segurança em todo o ciclo de vida da engenharia de dados.
Ver menos ▲Sumário
Sumário
- Prefácio
- Fundamentos e componentes essenciais da engenharia de dados
- Capítulo 1 ■ Descrição do que é engenharia de dados
- O que é engenharia de dados?
- Definição de engenharia de dados
- O ciclo de vida da engenharia de dados
- Evolução do engenheiro de dados
- Engenharia de dados e ciência de dados
- Habilidades e funções da engenharia de dados
- Maturidade de dados e o engenheiro de dados
- Formação e habilidades de um engenheiro de dados
- Responsabilidades comerciais
- Responsabilidades técnicas
- As diversas funções na engenharia de dados, do tipo A ao tipo B
- Engenheiros de dados dentro de uma organização
- para o público externo
- Engenheiros de dados e outras funções técnicas
- Engenheiros de dados e liderança corporativa
- Resumo
- Recursos adicionais
- Capítulo 2 ■ O ciclo de vida da engenharia de dados
- O que é o ciclo de vida da engenharia de dados?
- O ciclo de vida dos dados versus o ciclo de vida da engenharia de dados
- Geração: Sistemas de origem
- Armazenamento
- Ingestão
- Transformação
- Disponibilização de dados
- Principais elementos subjacentes em todo o ciclo de vida da engenharia de dados
- Segurança
- Gerenciamento de dados
- DataOps
- Arquitetura de dados
- Orquestração
- Engenharia de software
- Resumo
- Recursos adicionais
- Capítulo 3 ■ Desenvolvendo uma boa arquitetura de dados
- O que é arquitetura de dados?
- Definição de arquitetura corporativa
- Definição de arquitetura de dados
- A “boa” arquitetura de dados
- Princípios de uma boa arquitetura de dados
- Princípio 1: Escolha componentes comuns com sabedoria
- Princípio 2: Planeje para falhas
- Princípio 3: Projete para escalabilidade
- Princípio 4: Arquitetura é o cerne da liderança
- Princípio 5: Esteja sempre arquitetando
- Princípio 6: Desenvolva sistemas fracamente acoplados
- Princípio 7: Tome decisões que possam ser revertidas
- Princípio 8: Priorize a segurança
- Princípio 9: Adote o FinOps
- Principais conceitos de arquitetura
- Domínios e serviços
- Sistemas distribuídos, escalabilidade e planejando para falhas
- Acesso do usuário: locatário único versus multilocatários
- Arquitetura orientada a eventos
- Projetos brownfield versus projetos greenfield
- Exemplos e tipos de arquitetura de dados
- Data Warehouse
- Data Lake
- Convergência, a nova geração de data lakes e a plataforma de dados
- Pilha de dados moderna
- Arquitetura Lambda
- Arquitetura Kappa
- O modelo Dataflow e o processamento em lote e em fluxo (streaming) unificado
- Arquitetura para IoT
- Data Mesh
- Outros exemplos de arquitetura de dados
- Quem faz parte do desenvolvimento de uma arquitetura de dados?
- Resumo
- Recursos adicionais
- Capítulo 4 ■ Escolhendo tecnologias ao longo do ciclo de vida da engenharia de dados
- Tamanho e capacidades da equipe
- Velocidade de entrada no mercado
- Interoperabilidade
- Otimização de custos e valor comercial
- Custo total de propriedade
- Custo de oportunidade total de propriedade
- FinOps
- Hoje versus o futuro: tecnologias imutáveis versus tecnologias transitórias
- Nossa recomendação
- Local
- On-premises
- Nuvem
- Nuvem híbrida
- Multicloud
- Computação descentralizada: o blockchain e a computação de borda
- Nossa recomendação
- Argumentos sobre a repatriação dos dados da nuvem
- Construir versus comprar
- Software de código aberto
- Jardins murados proprietários
- Nossa recomendação
- Sistemas monolíticos versus sistemas modulares
- Monolito
- Modularidade
- O padrão de monolito distribuído
- Nossa recomendação
- Arquitetura sem servidor (serverless) versus arquitetura com servidor
- Arquitetura sem servidor
- Contêineres
- Avaliando arquitetura sem servidor versus arquitetura com servidor
- Nossa recomendação
- Otimização, desempenho e a guerra de benchmarks
- Big Data...no contexto dos anos 1990s
- Comparações de custos sem sentido
- Otimização assimétrica
- O “caveat emptor” — comprador, tenha cautela
- Elementos subjacentes e seus impactos na escolha de tecnologias
- Gerenciamento de dados
- DataOps
- Arquitetura de dados
- Exemplo de orquestração: Airflow
- Engenharia de software
- Resumo
- Recursos adicionais
- O ciclo de vida da engenharia de dados em detalhes
- Capítulo 5 ■ Geração de dados em sistemas de origem
- Fontes de dados: como os dados são criados?
- Sistemas de origem: principais conceitos
- Arquivos e dados não estruturados
- APIs
- Bancos de dados de aplicação (sistemas OLTP)
- Sistema de processamento analítico online
- Captura de dados de alteração
- Logs
- Logs de banco de dados
- CRUD
- Padrão insert-only (apenas inserir)
- Mensagens e fluxos
- Tipos de registro de tempo
- Detalhes práticos dos sistemas de origem
- Banco de dados
- APIs
- Compartilhamento de dados
- Fonte de dados de terceiros
- Fila de mensagens e plataformas de streaming de eventos
- Com quem você trabalhará
- Elementos subjacentes e seus impactos em sistemas de origem
- Segurança
- Gerenciamento de dados
- DataOps
- Arquitetura de dados
- Orquestração
- Engenharia de software
- Resumo
- Recursos adicionais
- Capítulo 6 ■ Armazenamento
- Componentes básicos do armazenamento de dados
- Unidade de disco magnético
- Unidades de estado sólido
- Memória de acesso aleatório
- Redes e CPU
- Serialização
- Compressão
- Cache
- Sistemas de armazenamento de dados
- Armazenamento em uma única máquina versus armazenamento distribuído
- Consistência eventual versus consistência forte
- Armazenamento de arquivos
- Armazenamento em blocos
- Armazenamento de objetos
- Sistemas de armazenamento baseado em memória e cache
- O Hadoop Distributed File System
- Armazenamento de streaming
- Índices, particionamento e clustering
- Abstrações de armazenamento na engenharia de dados
- Data warehouse
- Data lake
- Data lakehouse
- Plataformas de dados
- Arquitetura de armazenamento de fluxo para lote
- Principais conceitos e tendências em armazenamento
- Catálogo de dados
- Compartilhamento de dados
- Esquema
- Separação entre computação e armazenamento
- Ciclo de vida do armazenamento de dados e retenção de dados
- Armazenamento de único locatário versus armazenamento multilocatário
- Com quem você trabalhará
- Elementos subjacentes
- Segurança
- Gerenciamento de dados
- DataOps
- Arquitetura de dados
- Orquestração
- Engenharia de software
- Resumo
- Recursos adicionais
- Capítulo 7 ■ Ingestão
- O que é ingestão de dados?
- Principais considerações de engenharia para a etapa de ingestão
- Dados limitados versus ilimitados
- Frequência
- Ingestão síncrona versus ingestão assíncrona
- Serialização e desserialização
- Taxa de transferência e escalabilidade
- Confiabilidade e durabilidade
- Carga útil
- Diferença entre os padrões push, pull e poll
- Considerações sobre ingestão em lote
- Snapshot ou extração diferencial
- Exportação e ingestão baseada em arquivos
- ETL versus ELT
- Inserções, atualizações e tamanho de lote
- Migração de dados
- Considerações sobre ingestão de streaming e mensagens
- Evolução do esquema
- Dados que chegam atrasados
- Ordenação e entrega múltipla
- Replay
- Tempo de vida
- Tamanho das mensagens
- Tratamento de erros e filas de mensagens mortas
- Operações de pull e push realizadas pelo consumidor
- Localização
- Formas de ingestão de dados
- Conexão direta com o banco de dados
- Captura de dados de alteração
- APIs
- Filas de mensagens e plataformas de streaming de eventos
- Conectores de dados gerenciados
- Movimentação de dados com armazenamento de objetos
- EDI
- Bancos de dados e exportação de arquivos
- Questões práticas com formatos de arquivo comuns
- Shell
- SSH
- SFTP e SCP
- Webhooks
- Interface web
- Web scraping
- Appliances de transferência para migração de dados
- Compartilhamento de dados
- Com quem você trabalhará
- Stakeholders do upstream
- Stakeholders do downstream
- Elementos subjacentes
- Segurança
- Gerenciamento de dados
- DataOps
- Orquestração
- Engenharia de software
- Resumo
- Recursos adicionais
- Capítulo 8 ■ Consultas, modelagem e transformação
- Consultas
- O que é uma consulta?
- A vida útil de uma consulta
- O otimizador de consultas
- Aprimorando o desempenho da consulta
- Consultas em dados de streaming
- Modelagem de dados
- O que é um modelo de dados?
- Modelos conceitual, lógico e físico de dados
- Normalização
- Técnicas para modelagem de dados analíticos em lote
- Modelando dados de streaming
- Transformações
- Transformações em lote
- Visualizações materializadas, federação e virtualização de consultas
- Transformações e processamento de streaming
- Com quem você trabalhará
- Stakeholders do upstream
- Stakeholders do downstream
- Elementos subjacentes
- Segurança
- Gerenciamento de dados
- DataOps
- Arquitetura de dados
- Orquestração
- Engenharia de software
- Resumo
- Recursos adicionais
- Capítulo 9 ■ Disponibilizando dados para análise, machine learning e ETL reverso
- Considerações gerais para a disponibilização de dados
- Confiança
- Qual é o caso de uso e quem é o usuário?
- Produtos de dados
- Autoatendimento ou não?
- Definições e lógica de dados
- Data Mesh
- Análise
- Análise de negócios
- Análise operacional
- Análise incorporada
- Machine learning
- O que um engenheiro de dados deve saber sobre ML
- Maneiras de disponibilizar dados para análise e ML
- Troca de arquivos
- Bancos de dados
- Sistemas de streaming
- Federação de consultas
- Compartilhamento de dados
- Camadas semânticas e camadas de métricas
- Disponibilizando dados em notebooks
- ETL reverso
- Com quem você trabalhará
- Elementos subjacentes
- Segurança
- Gerenciamento de dados
- DataOps
- Arquitetura de dados
- Orquestração
- Engenharia de software
- Resumo
- Recursos adicionais
- Segurança, privacidade e o futuro da engenharia de dados
- Capítulo 10 ■ Segurança e privacidade
- Pessoas
- O poder do pensamento negativo
- Mantenha-se sempre paranoico com a segurança
- Processos
- Falsa sensação de segurança versus hábito de segurança
- Segurança ativa
- O princípio do privilégio mínimo
- Responsabilidade compartilhada na nuvem
- Sempre faça o backup dos seus dados
- Um exemplo de política de segurança
- Tecnologia
- Aplique patches e atualize os sistemas
- Criptografia
- Registro de logs, monitoramento e emissão de alertas
- Acesso à rede
- Segurança para engenharia de dados de baixo nível
- Resumo
- Recursos adicionais
- Capítulo 11 ■ O futuro da engenharia de dados
- O ciclo de vida da engenharia de dados veio para ficar
- A diminuição da complexidade e a ascensão de ferramentas de dados fáceis de usar
- Engenharia de dados “empresarial”
- Funções e responsabilidades se transformarão
- Indo além da pilha de dados moderna, rumo à pilha de dados em tempo real
- A pilha de dados em tempo real
- Pipelines de streaming e bancos de dados analíticos em tempo real
- A fusão de dados com aplicações
- A estreita relação entre aplicações e ML
- Dados de matéria escura e o surgimento de... planilhas ?!
- Conclusão
- Apêndice A ■ Detalhes técnicos de serialização e compressão
- Formatos de serialização
- Serialização baseada em linhas
- Serialização colunar
- Serialização híbrida
- Mecanismos de armazenamento de banco de dados
- Compressão: gzip, bzip2, Snappy e outros
- Apêndice B ■ Rede em nuvem
- Topologia de rede em nuvem
- Custos de saída de dados
- Zonas de disponibilidade
- Regiões
- Redundância de multirregião e rede específicos do GCP
- Conexões de rede diretas para as nuvens
- CDNs
- O futuro das taxas de saída de dados
- Índice remissivo
Livros relacionados
Recursos
Opinião dos leitores
Ailton T
O livro “Fundamentos de Engenharia de Dados” apresenta uma visão bastante completa sobre os principais conceitos envolvidos na construção e manutenção de plataformas de dados modernas. O conteúdo aborda temas importantes como ingestão, armazenamento, processamento, qualidade, governança e disponibilização de dados para diferentes tipos de consumo. Achei interessante como o livro consegue conectar fundamentos técnicos com desafios reais enfrentados por equipes que trabalham com pipelines, integrações e arquiteturas de dados em larga escala. A abordagem ajuda a entender que engenharia de dados vai muito além de apenas mover informações entre sistemas. A leitura é organizada e bastante relevante para profissionais que atuam ou pretendem atuar com Data Lakes, Data Warehouses, analytics e ecossistemas orientados a dados. No geral, considero um livro muito útil para quem deseja fortalecer a base conceitual em engenharia de dados e compreender melhor as boas práticas envolvidas na construção de ambientes de dados mais confiáveis e escaláveis.






