Compartilhar via


O que é arquitetura medallion do Lakehouse?

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

Essa arquitetura garante a 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álise eficiente. Os termos bronze (bruto), prata (validado) e ouro (enriquecido) descrevem a qualidade dos dados em cada uma dessas camadas.

Arquitetura Medallion como um padrão de design de dados

Uma arquitetura de medalhão é um padrão de design de dados usado para organizar dados logicamente. Seu objetivo é melhorar de forma incremental e progressiva a estrutura e a qualidade dos dados à medida que fluem por cada camada da arquitetura (das tabelas de camadas Bronze ⇒ Prata ⇒ Ouro). Às vezes, as arquiteturas Medallion também são chamadas de arquiteturas multi-hop.

Ao progredir os dados por meio 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 machine learning.

Seguir a arquitetura de medalhão é uma prática recomendada recomendada, mas não um requisito.

Pergunta Bronze Prata Ouro
O que acontece nesta camada? Ingestão de dados brutos Limpeza e validação de dados Modelagem dimensional e agregação
Quem é o usuário pretendido?
  • Engenheiros de dados
  • Operações de dados
  • Equipes de conformidade e auditoria
  • Engenheiros de dados
  • Analistas de dados (usem a camada Silver para obter um conjunto de dados mais refinado que ainda retém informações detalhadas necessárias para uma análise aprofundada)
  • Cientistas de dados (criar modelos e executar análises avançadas)
  • Analistas de negócios e desenvolvedores de BI
  • Cientistas de dados e engenheiros de ML (machine learning)
  • Executivos e tomadores de decisão
  • Equipes 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.

Arquitetura medalhão camadas de bronze, prata e ouro

  • Camada bronze (ops.bronze): ingere dados brutos do armazenamento em nuvem, Kafka e Salesforce. Nenhuma limpeza ou validação de dados é executada aqui.
  • Camada prata (ops.silver): a limpeza e a validação de dados são executadas nesta camada.
    • Os dados sobre clientes e transações são limpos descartando 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álise preditiva.
    • Da mesma forma, contas e conjuntos de dados de oportunidade do Salesforce são unidos para criar account_opportunities, que é aprimorado com informações da conta.
    • Os leads_raw dados são limpos em um conjunto de dados chamado leads_cleaned.
  • Camada de ouro (ops.gold): Esta camada foi projetada para usuários corporativos. 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 pipeline de vendas de ponta a ponta.
    • business_summary: Informações altamente agregadas para a equipe executiva.

Ingerir dados brutos na camada bronze

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

  • Contém e mantém o estado bruto da fonte de dados em seus formatos originais.
  • São incrementalmente acrescentados e crescem ao longo do tempo.
  • Destina-se ao consumo por cargas de trabalho que enriquecem os dados para tabelas prateadas, 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 transações de streaming e em lote de origens, incluindo armazenamento de objetos em 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 de dados é realizada na camada de bronze. Para garantir contra dados descartados, o Azure Databricks recomenda armazenar a maioria dos campos como cadeia de caracteres, VARIANT ou binário para proteger contra alterações inesperadas de esquema. Colunas de metadados podem ser adicionadas, como a proveniência ou a origem dos dados (por exemplo, _metadata.file_name ).

Validar e eliminar a duplicação de dados na camada prata

A limpeza e a validação de dados são executadas na camada prata.

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 grave os dados nas tabelas de prata.

O Azure Databricks não recomenda gravar em tabelas prateadas diretamente da ingestão. Se você escrever diretamente a partir do processo de ingestão, criará falhas devido a alterações de esquema ou registros corrompidos em fontes de dados. Supondo que todas as fontes sejam somente de acréscimo, configure a maioria das leituras de bronze como leituras de 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 registro. Se as representações agregadas gerarem muitas cargas de trabalho downstream, essas representações poderão estar na camada prateada, mas normalmente estarão na camada dourada.
  • É onde você executa limpeza, desduplicação e 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 downstream.

Impor qualidade de dados

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

  • Imposição de esquema
  • Tratamento de valores nulos e ausentes
  • Eliminação de duplicação de dados
  • Resolução de problemas de dados fora de ordem e atrasados
  • Verificações e aplicação da qualidade dos dados
  • Evolução do esquema
  • Conversão de tipo
  • Junções

Comece a modelar dados

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

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

Análise de energia com a camada 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 ouro geralmente são altamente agregados e filtrados para períodos de tempo ou regiões geográficas específicas. Ele contém conjuntos de dados semanticamente significativos que são mapeados para funções e necessidades de negócios.

A camada de ouro:

  • Consiste em dados agregados personalizados para análise 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 à lógica e aos requisitos de negócios

A camada de ouro é onde você modela seus dados para relatórios e análises usando um modelo dimensional estabelecendo relações 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 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 precisar responder perguntas sobre o total de vendas semanais, você poderá criar uma exibição materializada chamada weekly_sales que pré-agrega esses dados para que analistas e outros não precisem recriar exibiçõ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 em consultas e dashboards

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 fita 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 de ingestão de dados.

Frequência de ingestão de dados Custo Latência Exemplos declarativos Exemplos de procedimentos
Ingestão incremental contínua Maior Menor
  • Tabela de streaming que usa spark.readStream para ingerir do armazenamento em nuvem ou do barramento de mensagens.
  • O pipeline que atualiza essa tabela de streaming funciona continuamente.
  • Código de Streaming Estruturado usando spark.readStream em um notebook para capturar dados do armazenamento em nuvem ou do barramento de mensagens em uma tabela Delta.
  • O notebook é orquestrado usando uma tarefa no Azure Databricks com um gatilho de execução contínua.
Ingestão incremental disparada Menor Maior
  • Ingestão de tabelas de streaming a partir de armazenamento em nuvem ou de barramento de mensagens usando spark.readStream.
  • O pipeline que atualiza essa tabela de streaming é disparado pelo gatilho agendado do trabalho ou pela chegada de um arquivo.
  • Código de streaming estruturado em um notebook com um gatilho Trigger.Available.
  • Este notebook é ativado pelo gatilho agendado da tarefa ou por um gatilho de chegada de arquivo.
Ingestão em lote com ingestão incremental manual Menor Mais alto, por causa de corridas pouco frequentes.
  • Ingestão de tabela em streaming a partir do armazenamento em nuvem usando spark.read.
  • Não usa Streaming Estruturado. Em vez disso, use primitivos como substituição de partição para atualizar uma partição inteira de uma só vez.
  • Requer uma extensa infraestrutura upstream para configurar o processamento incremental, resultando em um custo semelhante ao das leituras/gravações de Streaming Estruturado.
  • Também requer o particionamento de dados de origem por um datetime campo e, em seguida, o processamento de todos os registros dessa partição para o destino.