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? |
|
|
|
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.
-
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 chamadoleads_cleaned
.
- 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
-
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 |
|
|
Ingestão incremental desencadeada | Mais baixo | Mais alto |
|
|
Ingestão em lote com manual de ingestão incremental | Mais baixo | Mais alto, devido às corridas pouco frequentes. |
|