Partilhar via


O que é a arquitetura Medallion Lakehouse?

A arquitetura medallion descreve uma série de camadas de dados que indicam a qualidade dos dados armazenados no lakehouse. O Azure Databricks recomenda adotar uma abordagem em várias camadas para criar uma única fonte de verdade para produtos de dados corporativos.

Essa arquitetura garante atomicidade, consistência, isolamento e durabilidade à medida que os dados passam por várias camadas de validações e transformações antes de serem armazenados em um layout otimizado para análises eficientes. Os termos bronze (bruto), prata (validado) e ouro (enriquecido) descrevem a qualidade dos dados em cada uma dessas camadas.

Arquitetura Medallion como padrão de concepção de dados

Uma arquitetura de medalhão é um padrão de design de dados usado para organizar logicamente os dados. Seu objetivo é melhorar incremental e progressivamente a estrutura e a qualidade dos dados à medida que fluem através de cada camada da arquitetura (de tabelas de camada Bronze ⇒ Prata ⇒ Ouro). As arquiteturas Medallion são por vezes também referidas como arquiteturas multi-hop.

Ao progredir os dados através dessas camadas, as organizações podem melhorar incrementalmente a qualidade e a confiabilidade dos dados, tornando-os mais adequados para aplicativos de business intelligence e aprendizado de máquina.

Seguir a arquitetura Medallion é uma prática recomendada, mas não é uma obrigação.

Pergunta Bronze Silver Ouro
O que acontece nesta camada? Ingestão de dados brutos Limpeza e validação de dados Modelação dimensional e agregação
Quem é o utilizador pretendido?
  • Engenheiros de dados
  • Operações de dados
  • Equipas de conformidade e auditoria
  • Engenheiros de dados
  • Analistas de dados (use a camada Silver para um conjunto de dados mais refinado que ainda retém informações detalhadas necessárias para uma análise aprofundada)
  • Cientistas de dados (criam modelos e realizam análises avançadas)
  • Analistas de negócios e desenvolvedores de BI
  • Cientistas de dados e engenheiros de aprendizado de máquina (ML)
  • Executivos e decisores
  • Equipas operacionais

Exemplo de arquitetura de medalhão

Este exemplo de arquitetura de medalhão mostra camadas de bronze, prata e ouro para uso por uma equipe de operações de negócios. Cada camada é armazenada em um esquema diferente do catálogo de operações.

Medallion Architecture: camadas de bronze, prata e ouro

  • Camada de bronze (ops.bronze): Processa dados brutos do armazenamento em nuvem, Kafka e Salesforce. Nenhuma limpeza ou validação de dados é realizada aqui.
  • Camada prateada (ops.silver): A limpeza e validação de dados são realizadas nesta camada.
    • Os dados sobre clientes e transações são limpos eliminando nulos e colocando em quarentena registros inválidos. Esses conjuntos de dados são unidos em um novo conjunto de dados chamado customer_transactions. Os cientistas de dados podem usar esse conjunto de dados para análises preditivas.
    • Da mesma forma, contas e conjuntos de dados de oportunidade do Salesforce são unidos para criar account_opportunities, que é enriquecido com informações de conta.
    • Os leads_raw dados são limpos num conjunto de dados chamado leads_cleaned.
  • Camada de ouro (ops.gold): Esta camada foi concebida para utilizadores empresariais. Ele contém menos conjuntos de dados do que prata e ouro.
    • customer_spending: Gasto médio e total para cada cliente.
    • account_performance: Desempenho diário para cada conta.
    • sales_pipeline_summary: Informações sobre o processo integral de vendas.
    • business_summary: Informação altamente agregada para o pessoal executivo.

Ingerir dados brutos para a camada de bronze

A camada de bronze contém dados brutos e não validados. Os dados ingeridos na camada de bronze normalmente têm as seguintes características:

  • Contém e mantém o estado bruto da fonte de dados em seus formatos originais.
  • É anexado incrementalmente e cresce ao longo do tempo.
  • Destina-se ao consumo por processos que enriquecem dados para silver tables, não para acesso por analistas e cientistas de dados.
  • Serve como a única fonte de verdade, preservando a fidelidade dos dados.
  • Permite o reprocessamento e a auditoria, retendo todos os dados históricos.
  • Pode ser qualquer combinação de streaming e transações em lote de fontes, incluindo armazenamento de objetos na nuvem (por exemplo, S3, GCS, ADLS), barramentos de mensagens (por exemplo, Kafka, Kinesis, etc.) e sistemas federados (por exemplo, Lakehouse Federation).

Limitar a limpeza ou validação de dados

A validação mínima dos dados é realizada na camada de bronze. Para garantir contra dados descartados, o Azure Databricks recomenda armazenar a maioria dos campos como string, VARIANT ou binário para proteger contra alterações inesperadas de esquema. Colunas de metadados podem ser adicionadas, como a proveniência ou a fonte dos dados (por exemplo, _metadata.file_name ).

Validar e desduplicar dados na camada prateada

A limpeza e validação de dados são realizadas em camada prateada.

Construa mesas de prata a partir da camada de bronze

Para construir a camada de prata, leia os dados de uma ou mais tabelas de bronze ou prata e escreva dados em tabelas de prata.

O Azure Databricks não recomenda escrever diretamente em "tabelas de prata" a partir do processo de ingestão. Se escrever diretamente a partir da ingestão, introduzirá erros devido a alterações de esquema ou a registos corrompidos nas fontes de dados. Supondo que todas as fontes sejam somente acréscimo, configure a maioria das leituras a partir da camada bronze como leituras em streaming. As leituras em lote devem ser reservadas para pequenos conjuntos de dados (por exemplo, tabelas dimensionais pequenas).

A camada prateada representa versões validadas, limpas e enriquecidas dos dados. A camada de prata:

  • Deve sempre incluir pelo menos uma representação validada e não agregada de cada registo. Se as representações agregadas gerarem muitas cargas de trabalho downstream, essas representações podem estar na camada prata, mas normalmente estão na camada ouro.
  • É onde você executa a limpeza, a desduplicação e a normalização de dados.
  • Melhora a qualidade dos dados corrigindo erros e inconsistências.
  • Estrutura os dados em um formato mais consumível para processamento a jusante.

Reforçar a qualidade dos dados

As seguintes operações são realizadas em tabelas de prata:

  • Aplicação do esquema
  • Manipulação de valores nulos e ausentes
  • Eliminação de dados duplicados
  • Resolução de problemas de dados fora de ordem e de chegada tardia
  • Controlos da qualidade dos dados e aplicação da legislação
  • Evolução do esquema
  • Tipo de fundição
  • Junções

Iniciar a modelagem de dados

É comum começar a executar a modelagem de dados na camada prateada, incluindo a escolha de como representar dados fortemente aninhados ou semiestruturados:

  • Use o tipo de dados VARIANT.
  • Utilize JSON cadeias de caracteres.
  • Crie estruturas, mapas e matrizes.
  • Nivele o esquema ou normalize os dados em várias tabelas.

Análise de energia com a camada de ouro

A camada ouro representa visualizações altamente refinadas dos dados que impulsionam análises, painéis, ML e aplicativos downstream. Os dados da camada Gold geralmente são altamente agregados e filtrados para períodos de tempo específicos ou regiões geográficas. Ele contém conjuntos de dados semanticamente relevantes que se relacionam com funções e necessidades empresariais.

A camada de ouro:

  • Consiste em dados agregados adaptados para análises e relatórios.
  • Alinha-se com a lógica e os requisitos de negócios.
  • É otimizado para desempenho em consultas e painéis.

Alinhe-se com a lógica e os requisitos de negócios

A camada ouro é onde você modelará seus dados para relatórios e análises usando um modelo dimensional, estabelecendo relacionamentos e definindo medidas. Os analistas com acesso a dados em ouro devem ser capazes de encontrar dados específicos do domínio e responder a perguntas.

Como a camada ouro modela um domínio de negócios, alguns clientes criam várias camadas de ouro para atender a diferentes necessidades de negócios, como RH, finanças e TI.

Crie agregados personalizados para análises e relatórios

As organizações geralmente precisam criar funções agregadas para medidas como médias, contagens, máximos e mínimos. Por exemplo, se sua empresa precisa responder a perguntas sobre vendas semanais totais, você pode criar uma visão materializada chamada weekly_sales que pré-agrega esses dados para que analistas e outros não precisem recriar visualizações materializadas usadas com frequência.

CREATE OR REPLACE MATERIALIZED VIEW weekly_sales AS
SELECT week,
       prod_id,
       region,
       SUM(units) AS total_units,
       SUM(units * rate) AS total_sales
FROM orders
GROUP BY week, prod_id, region

Otimizar o desempenho de consultas e painéis

A otimização de tabelas de camada ouro para desempenho é uma prática recomendada porque esses conjuntos de dados são consultados com frequência. Grandes quantidades de dados históricos são normalmente acessadas na camada de lasca e não materializadas na camada de ouro.

Controle os custos ajustando a frequência de ingestão de dados

Controle os custos determinando a frequência com que os dados devem ser ingeridos.

Frequência de ingestão de dados Custo Latência Exemplos declarativos Exemplos processuais
Ingestão incremental contínua Mais alto Mais baixo
  • Tabela de fluxo contínuo usando spark.readStream para ingerir dados do armazenamento em nuvem ou do barramento de mensagens.
  • O pipeline de DLT que atualiza esta tabela de streaming funciona continuamente.
  • Código de streaming estruturado usando spark.readStream num bloco de notas para ingerir do armazenamento em nuvem ou barramento de mensagens numa tabela Delta.
  • O bloco de anotações é orquestrado usando um trabalho do Azure Databricks com um gatilho de trabalho contínuo.
Ingestão incremental desencadeada Mais baixo Mais alto
  • Streaming de ingestão de tabelas a partir do armazenamento em nuvem ou barramento de mensagens usando spark.readStream.
  • O pipeline que atualiza esta tabela de streaming é acionado pelo gatilho agendado do trabalho ou pelo gatilho de chegada de arquivo.
  • Código de Streaming estruturado num bloco de notas com o gatilho Trigger.Available.
  • Este bloco de anotações é acionado pelo gatilho agendado do trabalho ou por um gatilho de chegada de arquivo.
Ingestão em lote com manual de ingestão incremental Mais baixo Mais alto, devido às corridas pouco frequentes.
  • Ingestão de Tabela em Streaming do armazenamento em nuvem usando spark.read.
  • Não usa Streaming Estruturado. Em vez disso, utilize primitivas como a "sobrescrição de partição" para atualizar uma partição inteira de uma vez.
  • Requer uma arquitetura upstream extensa para configurar o processamento incremental, o que permite um custo semelhante às leituras/gravações do Structured Streaming.
  • Também requer particionamento de dados de origem por um campo datetime e, em seguida, processamento de todos os registos dessa partição no destino.