📖
C&D.tech - Docs
  • 🇧🇷PORTUGUÊS - BRA
    • Apresentação
    • Engenharia de Dados
      • Conceitos
        • Conceituando dados
        • O que é Engenharia de Dados
        • Profissionais de Dados
      • Fundamentos de Engenharia de Dados
        • Arquitetura de Dados
          • O que é arquitetura
          • Tipos de Arquiteturas
            • Arquitetura Transacional
            • Arquitetura Analítica
              • Data Warehouse e Data Mart
              • Data Lake e Lakehouse
        • Formato de Dados
        • Formato de Arquivos
    • Índices e Referências
      • Referências
        • 📗Livros
        • 📑Artigos
        • 📹Vídeos
        • 👨‍💻Cursos
        • 👨‍🏫Profissionais
        • 📃Outros Materiais
      • Índices
        • 🗂️Figuras e Imagens
        • 📇Siglas Utilizadas
    • Contato
Fornecido por GitBook
Nesta página
  • O que é arquitetura analítica?
  • Quais arquiteturas existem?
  • Datalake e Lakehouse, e camadas de processamento em arquiteturas Kappa e Lambda
  • Arquitetura Kappa
  • Arquitetura Lambda
  • Referências
  • Siglas

Isto foi útil?

Editar no GitHub
  1. PORTUGUÊS - BRA
  2. Engenharia de Dados
  3. Fundamentos de Engenharia de Dados
  4. Arquitetura de Dados
  5. Tipos de Arquiteturas

Arquitetura Analítica

Nesta página é destinada a compreensão do conceito de arquitetura analíticas

AnteriorArquitetura TransacionalPróximoData Warehouse e Data Mart

Atualizado há 10 meses

Isto foi útil?

Escrito por

O que é arquitetura analítica?

Como abordado anteriormente, as arquiteturas transacionais (OLTP) são modelos arquitetônicos projetados para realizar e processar transações. Em tecnologia, sempre existirá um tradeoff; por esse motivo, dois grandes pensadores, Ralph Kimball e Bill Inmon, propuseram a separação do ambiente transacional do ambiente analítico.

Essa separação ocorre principalmente por dois motivos: tempo (no sentido amplo) e recursos. Vamos começar falando de recursos, pois isso facilitará o entendimento do fator tempo. Anteriormente, os recursos eram limitados (principalmente devido ao custo), e trabalhava-se basicamente com escalonamento vertical (upgrade). Vamos a um exemplo:

Uma empresa possui um ERP baseado em um modelo Cliente-Servidor, em que os dados são arquivados em um banco relacional (SQL Server, Oracle) projetado e moldado em formas normais para evitar redundância de dados. Esse banco está preparado, principalmente, para receber três tipos de transações: INSERT (inserção de novos registros), UPDATES (atualização de dados) e DELETE (exclusão/cancelamento).

Ao se realizar uma consulta analítica (por exemplo, um relatório de um sistema qualquer) utilizando o SELECT e, por consequência, o uso de JOINs (união) de várias tabelas, o sistema gerenciador do banco montará um plano de execução dessa consulta. Dependendo de como o banco estiver configurado, as transações de Inserção, Atualização e Exclusão podem ser "travadas" ou bloqueadas.

Aqui podemos observar uma limitação de recursos: para que a consulta seja processada mais rapidamente (além de estar bem escrita), seria necessário também melhorar o processamento do servidor onde o banco está instalado; neste caso, seria necessário um escalonamento vertical (upgrade).

Agora, imagine se, no dia a dia, seria viável para o usuário de negócio travar o banco para que as consultas alimentassem seus relatórios e painéis visuais. Com base nisso, e levando em consideração o tempo, foi proposta a criação de arquiteturas resilientes, capazes de comportar consultas. Este modelo é desnormalizado das formas normais para que seja modelado em formato analítico.

Quais arquiteturas existem?

As primeiras arquiteturas analíticas (OLAP) foram o Data Mart (DM), proposto por Bill Inmon, e o Data Warehouse (DW), proposto por Ralph Kimball. Ambas arquiteturas são concebidas na desnormalização das formas normais, base para modelagem de sistemas transacionais, e modeladas em tabelas fatos e dimensões.

Abordaremos mais detalhes sobre essa modelagem de dados, seus modelos de tabelas e as diferenças entre uma e outra; por ora, foquemos na grande vantagem dessas arquiteturas, que não era mais evitar a redundância de dados, mas sim garantir menores tempos de resposta quando os dados eram requisitados (SELECTs).

Com o advento da Web 3.0 e o crescente número de dados de diversos tipos (estruturados, semi-estruturados e não estruturados), principalmente devido às redes sociais como Facebook, Twitter (atual X), entre outros, começaram a surgir questionamentos quanto à capacidade dos DW e DM para lidar com essa nova realidade.

Dessa forma, em 2010, surge pela primeira vez o conceito de Data Lake, proposto por James Dixon. Nessa arquitetura, baseada principalmente no conceito do Hadoop File System (HDFS), começa-se a armazenar diversos tipos de dados em seu formato "bruto", tais como: áudio, vídeo, txt, csv, planilhas eletrônicas etc. Eles passam por camadas e são disponibilizados para consumo. Abordaremos mais sobre os Data Lakes em uma sessão específica.

Os Data Lakes se tornaram comuns nas arquiteturas de empresas que possuíam grandes volumes de dados (Big Data). Porém, essa tecnologia tinha algumas deficiências, como a governança de dados e o controle de transações no acrônimo ACID (oriundo dos sistemas transacionais).

Diante disso, em meados de 2018, a Databricks, empresa dos criadores do Apache Spark (que substituiu o Hadoop), começou a introduzir um novo conceito: o Data Lakehouse. Esta arquitetura é flexível, sendo a junção do melhor dos Data Lakes (processamento e armazenamento) com o Data Warehouse (modelagem, governança e transações ACID). Essa evolução trouxe consigo alguns novos formatos de arquivos, como: Delta (inicialmente um formato proprietário da Databricks e depois aberto à comunidade), Apache HUDI (criado pela Uber e também cedido à comunidade Apache) e Iceberg (criado pela Netflix e também cedido à comunidade Apache).

Datalake e Lakehouse, e camadas de processamento em arquiteturas Kappa e Lambda

Na tecnologia da informação, palavras comuns de se ouvir são: abstração, resiliência, escalabilidade, segurança e tolerância a falhas. Para abordar essas questões, é necessário compreender duas topologias de arquiteturas: Kappa e Lambda. Entender essas arquiteturas é fundamental na modelagem e construção de Datalakes e Lakehouses.

Arquitetura Kappa

Modelo de Arquitetura Kappa

Esse modelo arquitetural foi proposto por Nathan Marz, em meados de 2011. Ele é composto por processamentos em lote (Batch Layer) e em tempo real (Speed Layer), posteriormente disponibilizados para consumo nas aplicações (Serving Layer). Cada camada dessa arquitetura consiste em:

  • Ingestion Layer: é a camada de origem dos dados, ou seja, o transacional.

  • Batch Layer: é a camada que processa dados no formato "lote", com uma frequência pré-determinada, por exemplo, duas ou três vezes ao dia. Essa camada, também chamada de camada fria, geralmente usa técnicas de CDC para coleta de dados.

  • Speed Layer: é a camada que processa dados em tempo real (ou próximo a isso); os dados são consumidos à medida em que chegam. Nessa camada, também chamada de camada quente, faz-se necessário o uso de alguma ferramenta de mensageria.

  • Serving Layer: é a camada de armazenamento dos dados processados pelas camadas anteriores, onde se fornece acesso às aplicações analíticas com dados tratados para geração de insights a partir de ferramentas de visualização.

Arquitetura Lambda

Modelo de Arquitetura Lambda

Esse modelo arquitetural foi proposto por Jay Kreps (criador do Apache Kafka e co-fundador da Confluent), em meados de 2014. A grande diferença entre ela e a Kappa é que unifica as camadas de processamento, tornando-a apenas uma (Speed Layer). As camadas dessa arquitetura consistem em:

  • Ingestion Layer: é a camada de origem dos dados, ou seja, o transacional.

  • Speed Layer: é a camada que processa dados em tempo real (ou próximo a isso); os dados são consumidos à medida que chegam e também em "lote", com uma frequência pré-determinada, por exemplo, duas ou três vezes ao dia. Nela, podem ser usadas diversas técnicas e ferramentas para processamento dos dados, como técnicas de CDC para processamento em lote e ferramentas de mensageria (Kafka) para consumo em tempo real.

  • Serving Layer: é a camada de armazenamento dos dados processados na Speed Layer, com o objetivo de fornecer acesso às aplicações analíticas aos dados tratados, para geração de insights a partir de ferramentas de visualização.


Referências

Siglas

ACID - Atomicity, Consistency, Isolation, Durability

CDC - Change Data Capture

CSV - Comma-separated values

DM - Data Mart

DW - Data Warehouse

ERP - Enterprise Resource Planning

HDFS - Hadoop File System

HUDI - Hadoop Upserts Deletes and Incrementals

TXT - Text

Figura 21 - Modelo de Arquitetura Kappa (Fonte: )
Figura 22 - Modelo de Arquitetura Lamba (Fonte: )

🇧🇷
Matheus Sampaio
Evolution to the Data Lakehouse | Databricks
What is a Data Lakehouse? | Databricks
Apache Hudi | Onehouse
Apache Iceberg
Apache Hudi
Fundamentals of Real-Time Data Processing Architectures Lambda and Kappa
Unite Real-Time and Batch Analytics Using the Big Data Lambda Architecture, Without Servers!
Arquiteturas de Big Data - Azure Architecture Center | Microsoft Learn
Franz Adms
Franz Adms