Dela via


Vad är medallion lakehouse-arkitekturen?

Arkitekturen "medallion" beskriver en serie datalager som anger kvaliteten på data i lakehuset. Azure Databricks rekommenderar att du använder en metod med flera lager för att skapa en enda sanningskälla för företagets dataprodukter.

Den här arkitekturen garanterar atomitet, konsekvens, isolering och hållbarhet när data passerar genom flera lager av valideringar och transformeringar innan de lagras i en layout som är optimerad för effektiv analys. Termerna brons (rå), silver (validerad) och guld (berikad) beskriver kvaliteten på data i vart och ett av dessa lager.

Medallion-arkitektur som ett mönster för datadesign

En medaljongarkitektur är ett datadesignmönster som används för att organisera data logiskt. Dess mål är att stegvis och progressivt förbättra strukturen och kvaliteten på data när de flödar genom varje skikt i arkitekturen (från Brons ⇒ Silver ⇒ Guldskikttabeller). Medallion-arkitekturer kallas ibland även för arkitekturer med flera hopp.

Genom att gå vidare med data genom dessa lager kan organisationer stegvis förbättra datakvaliteten och tillförlitligheten, vilket gör den mer lämplig för business intelligence- och maskininlärningsprogram.

Att följa medaljongarkitekturen är en rekommenderad metod, men inte ett krav.

Fråga Brons Silver Guld
Vad händer i det här lagret? Rådatainmatning Datarensning och validering Dimensionsmodellering och sammansättning
Vem är den avsedda användaren?
  • Datatekniker
  • Dataåtgärder
  • Efterlevnads- och granskningsteam
  • Datatekniker
  • Dataanalytiker (använd Silver-lagret för en mer förfinad datamängd som fortfarande behåller detaljerad information som krävs för djupgående analys)
  • Dataforskare (skapa modeller och utföra avancerad analys)
  • Affärsanalytiker och BI-utvecklare
  • Dataforskare och maskininlärningstekniker (ML)
  • Chefer och beslutsfattare
  • Operativa team

Exempel på medaljongarkitektur

Det här exemplet på en medaljongarkitektur visar brons-, silver- och guldskikt för användning av ett affärsdriftsteam. Varje lager lagras i ett annat schema i ops-katalogen.

Medaljongarkitektur brons, silver och guldskikt

  • Bronsskikt (ops.bronze): Matar in rådata från molnlagring, Kafka och Salesforce. Ingen datarensning eller verifiering utförs här.
  • Silverskikt (ops.silver): Datarensning och validering utförs i det här lagret.
    • Data om kunder och transaktioner rensas genom att null-värden tas bort och ogiltiga poster tas bort. Dessa datauppsättningar är anslutna till en ny datauppsättning med namnet customer_transactions. Dataexperter kan använda den här datamängden för förutsägelseanalys.
    • På samma sätt kopplas konton och affärsmöjlighetsdatauppsättningar från Salesforce till att skapa account_opportunities, vilket utökas med kontoinformation.
    • Data leads_raw rensas i en datauppsättning med namnet leads_cleaned.
  • Guldskikt (ops.gold): Det här lagret är utformat för företagsanvändare. Den innehåller färre datamängder än silver och guld.
    • customer_spending: Genomsnittliga och totala utgifter för varje kund.
    • account_performance: Dagliga prestanda för varje konto.
    • sales_pipeline_summary: Information om försäljningspipelinen från början till slut.
    • business_summary: Mycket aggregerad information för den verkställande personalen.

Mata in rådata till bronsskiktet

Bronsskiktet innehåller råa, ovaliderade data. Data som matas in i bronsskiktet har vanligtvis följande egenskaper:

  • Innehåller och underhåller datakällans råtillstånd i sina ursprungliga format.
  • Läggs till stegvis och växer med tiden.
  • Är avsedd för användning av arbetsuppgifter som berikar data för silvertabeller, inte för åtkomst av analytiker och dataforskare.
  • Fungerar som den enda sanningskällan och bevarar datans integritet.
  • Möjliggör upparbetning och granskning genom att behålla alla historiska data.
  • Kan vara valfri kombination av strömnings- och batchtransaktioner från källor, inklusive molnobjektlagring (till exempel S3, GCS, ADLS), meddelandebussar (till exempel Kafka, Kinesis osv.) och federerade system (till exempel Lakehouse Federation).

Begränsa rensning eller validering av data

Minimal dataverifiering utförs i bronsskiktet. För att säkerställa mot borttagna data rekommenderar Azure Databricks att du lagrar de flesta fält som sträng, VARIANT eller binärt för att skydda mot oväntade schemaändringar. Metadatakolumner kan läggas till, till exempel härkomsten eller datakällan (till exempel _metadata.file_name ).

Verifiera och deduplicera data i silverskiktet

Datarensning och validering utförs i silverlager.

Skapa silvertabeller från bronsskiktet

Om du vill skapa silverskiktet läser du data från en eller flera brons- eller silvertabeller och skriver data till silvertabeller.

Azure Databricks rekommenderar inte att du skriver till silvertabeller direkt från inmatning. Om du skriver direkt från datainsamlingen kommer du att orsaka fel på grund av schemaändringar eller korrupta poster i datakällor. Förutsatt att alla källor endast är tillägg konfigurerar du de flesta läsningar från brons som direktuppspelningsläsningar. Batchläsningar bör reserveras för små datamängder (till exempel små dimensionstabeller).

Silverskiktet representerar verifierade, rensade och berikade versioner av data. Silverskiktet:

  • Bör alltid innehålla minst en validerad, icke-aggregerad representation av varje post. Om aggregerade representationer driver många underordnade arbetsbelastningar kan dessa representationer finnas i silverskiktet, men vanligtvis är de i guldskiktet.
  • Här utför du datarensning, deduplicering och normalisering.
  • Förbättrar datakvaliteten genom att korrigera fel och inkonsekvenser.
  • Strukturerar data till ett mer förbrukningsbart format för nedströmsbearbetning.

Framtvinga datakvalitet

Följande åtgärder utförs i silvertabeller:

  • Tillämpning av schema
  • Hantering av null- och saknade värden
  • Datadeduplicering
  • Lösning på problem med oordnade och försenade data
  • Kontroller och tillämpning av datakvalitet
  • Schemautveckling
  • Typgjutning
  • Sammanfogningar

Påbörja datamodellering

Det är vanligt att börja utföra datamodellering i silverskiktet, inklusive att välja hur du ska representera kraftigt kapslade eller halvstrukturerade data:

  • Använd VARIANT datatyp.
  • Använd JSON strängar.
  • Skapa structs, kartor och matriser.
  • Platta ut schema eller normalisera data till flera tabeller.

Power Analytics med guldskiktet

Det guldfärgade lagret representerar mycket förfinade vyer av data som driver nedströmsanalys, instrumentpaneler, ML och program. Guldlagerdata är ofta mycket aggregerade och filtrerade för specifika tidsperioder eller geografiska regioner. Den innehåller semantiskt meningsfulla datauppsättningar som mappar till affärsfunktioner och behov.

Guldskiktet:

  • Består av aggregerade data som är skräddarsydda för analys och rapportering.
  • Överensstämmer med affärslogik och krav.
  • Är optimerad för prestanda i sökfrågor och på instrumentpaneler.

Anpassa till affärslogik och krav

Det guldfärgade lagret är där du ska modellera dina data för rapportering och analys med hjälp av en dimensionsmodell genom att upprätta relationer och definiera mått. Analytiker med åtkomst till data i guld bör kunna hitta domänspecifika data och svara på frågor.

Eftersom guldskiktet modellerar en affärsdomän skapar vissa kunder flera guldskikt för att uppfylla olika affärsbehov, till exempel HR, ekonomi och IT.

Skapa aggregeringar som är skräddarsydda för analys och rapportering

Organisationer behöver ofta skapa aggregerade funktioner för mått som medelvärden, antal, max och minimum. Om ditt företag till exempel behöver svara på frågor om den totala veckoförsäljningen kan du skapa en materialiserad vy med namnet weekly_sales som föraggregerar dessa data så att analytiker och andra inte behöver återskapa ofta använda materialiserade vyer.

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

Optimera för prestanda i sökfrågor och instrumentpaneler

Det är bra att optimera tabeller med guldlager för prestanda eftersom dessa datauppsättningar ofta efterfrågas. Stora mängder historiska data används vanligtvis i sliver-lagret och materialiseras inte i guldskiktet.

Kontrollera kostnaderna genom att justera datainmatningsfrekvensen

Kontrollera kostnaderna genom att bestämma hur ofta data ska matas in.

Datainmatningsfrekvens Kostnad Svarstid Deklarativa exempel Procedurexempel
Kontinuerlig inkrementell datainhämtning Högre Lägre
  • Strömmande tabell som använder spark.readStream för att inhämta från molnlagring eller meddelandebuss.
  • DLT-pipelinen som uppdaterar den här strömningstabellen körs kontinuerligt.
  • Kod för strukturerad direktuppspelning med spark.readStream i en notebook-fil för att mata in från molnlagring eller meddelandebuss till en Delta-tabell.
  • Anteckningsboken dirigeras med hjälp av ett Azure Databricks-jobb med en kontinuerlig jobbutlösare.
Utlöst inkrementell datainhämtning Sänk Högre
  • Strömmande tabell som matas in från molnlagring eller meddelandebuss med hjälp av spark.readStream.
  • Pipelinen som uppdaterar den här strömningstabellen utlöses av jobbets schemalagda utlösare eller en utlösare för filinkomst.
  • Kod för strukturerad streaming i en notebook med en Trigger.Available-utlösare.
  • Den här notebooken aktiveras av jobbets schemalagda utlösare eller en filinkomstutlösare.
Batchinmatning med manuell stegvis inmatning Sänka Högsta, på grund av sällsynta förekomster.
  • Inmatning av strömmande tabell från molnlagring med hjälp av spark.read.
  • Använder inte strukturerad direktuppspelning. Använd i stället primitiver som partitionsöverskrivning för att uppdatera en hel partition samtidigt.
  • Kräver omfattande uppströmsarkitektur för att konfigurera inkrementell bearbetning, vilket möjliggör en kostnad som liknar strukturerade direktuppspelningsläsningar/skrivningar.
  • Kräver också partitionering av källdata av ett datetime fält och sedan bearbetning av alla poster från partitionen till målet.