Freigeben über


Worum handelt es sich bei der Medallion Lakehouse-Architektur?

Die Medaillon-Architektur beschreibt eine Reihe von Datenebenen, die die Qualität der im Lakehouse gespeicherten Daten kennzeichnen. Azure Databricks empfiehlt, einen mehrschichtigen Ansatz zum Erstellen einer einzigen Quelle der Wahrheit für Enterprise-Datenprodukte zu erstellen.

Diese Architektur garantiert Unteilbarkeit, Konsistenz, Isolierung und Dauerhaftigkeit, da die Daten mehrere Ebenen von Validierungen und Transformationen durchlaufen, bevor sie in einem für effiziente Analysen optimierten Layout gespeichert werden. Die Begriffe Bronze (roh), Silber (validiert) und Gold (angereichert) beschreiben die Qualität der Daten auf jeder dieser Ebenen.

Medallion-Architektur als Datenentwurfsmuster

Eine Medallion-Architektur ist ein Datenentwurfsmuster, das zum logischen Organisieren von Daten verwendet wird. Ziel ist es, die Struktur und Qualität der Daten inkrementell und schrittweise zu verbessern, da sie durch jede Ebene der Architektur fließt (aus Bronze ⇒ Silber ⇒ Gold-Schichttabellen). Medallion-Architekturen werden manchmal auch als Multi-Hop-Architekturen bezeichnet.

Durch den Fortschritt von Daten über diese Ebenen können Organisationen die Datenqualität und -zuverlässigkeit inkrementell verbessern, sodass sie für Business Intelligence- und Machine Learning-Anwendungen besser geeignet ist.

Das Folgen der Medallion-Architektur ist eine empfohlene bewährte Methode, aber keine Anforderung.

Frage Bronze Silber Gold
Was geschieht in dieser Ebene? Rohdatenerfassung Datenreinigung und -validierung Dimensionale Modellierung und Aggregation
Wer ist der beabsichtigte Benutzer? - Dateningenieure
- Datenvorgänge
– Compliance- und Überwachungsteams
- Dateningenieure
- Datenanalysten (verwenden Sie die Silver-Ebene für ein verfeinertes Dataset, das weiterhin detaillierte Informationen aufbewahrt, die für eine eingehende Analyse erforderlich sind)
- Data Scientists (Erstellen von Modellen und Durchführen erweiterter Analysen)
- Business Analysts und BI-Entwickler
- Data Scientists und Machine Learning (ML) Ingenieure
- Führungskräfte und Entscheidungsträger
- Operative Teams

Beispiel-Medallion-Architektur

Dieses Beispiel einer Medaillenarchitektur zeigt Bronze-, Silber- und Goldschichten für die Verwendung durch ein Geschäftsbetriebsteam. Jede Ebene wird in einem anderen Schema des Ops-Katalogs gespeichert.

Medallion-Architektur Bronze, Silber und Goldschichten

  • Bronzeschicht (ops.bronze): Erfasst Rohdaten aus Cloudspeicher, Kafka und Salesforce. Hier werden keine Datenbereinigungen oder Überprüfungen durchgeführt.
  • Silberschicht (ops.silver): Datenbereinigung und -validierung werden auf dieser Ebene durchgeführt.
    • Daten zu Kunden und Transaktionen werden bereinigt, indem Nullen gelöscht und ungültige Datensätze in Quarantäne gesetzt werden. Diese Datasets werden mit einem neuen Dataset verknüpft, das aufgerufen wird customer_transactions. Data Scientists können dieses Dataset für Predictive Analytics verwenden.
    • Ebenso werden Konten und Verkaufschancen-Datasets aus Salesforce verknüpft, um zu erstellen account_opportunities, was mit Kontoinformationen erweitert wird.
    • Die leads_raw Daten werden in einem Dataset bereinigt, das aufgerufen wird leads_cleaned.
  • Goldschicht (ops.gold): Diese Ebene wurde für Geschäftsbenutzer entwickelt. Es enthält weniger Datasets als Silber und Gold.
    • customer_spending: Durchschnittliche und Gesamtausgaben für jeden Kunden.
    • account_performance: Tägliche Leistung für jedes Konto.
    • sales_pipeline_summary: Informationen zur End-to-End-Vertriebspipeline.
    • business_summary: Hoch aggregierte Informationen für die Leitenden Mitarbeiter.

Erfassen von Rohdaten auf der Bronzeebene

Die Bronzeschicht enthält rohe, nichtvalidierte Daten. Die in der Bronzeschicht aufgenommenen Daten haben in der Regel die folgenden Merkmale:

  • Enthält und verwaltet den rohen Zustand der Datenquelle in den ursprünglichen Formaten.
  • Daten werden inkrementell hinzugefügt und wachsen mit der Zeit.
  • Ist für den Verbrauch durch Workloads vorgesehen, die Daten für Silbertabellen anreichern, nicht für den Zugriff durch Analysten und Data Scientists.
  • Dient als einzige Quelle der Wahrheit, wobei die Genauigkeit der Daten erhalten bleibt.
  • Ermöglicht die Erneute Verarbeitung und Überwachung, indem alle historischen Daten aufbewahrt werden.
  • Dabei kann es sich um eine beliebige Kombination aus Streaming- und Batchtransaktionen aus Quellen handeln, z. B. Cloudobjektspeicher (z. B. S3, GCS, ADLS), Nachrichtenbusse (z. B. Kafka, Kinesis usw.) und Verbundsysteme (z. B. Lakehouse Federation).

Einschränken der Datenbereinigung oder -validierung

Die minimale Datenüberprüfung erfolgt in der Bronzeschicht. Um vor verworfenen Daten sicherzustellen, empfiehlt Azure Databricks, die meisten Felder als Zeichenfolge, VARIANT oder Binärdatei zu speichern, um vor unerwarteten Schemaänderungen zu schützen. Metadatenspalten können hinzugefügt werden, z. B. die Herkunft oder Quelle der Daten (z. B _metadata.file_name . ).

Validieren und Deduplizieren von Daten auf der Silberebene

Die Datenbereinigung und -validierung werden in Silberschicht durchgeführt.

Bauen Sie silberne Tische aus der Bronzeschicht

Um die Silberschicht zu erstellen, lesen Sie Daten aus einem oder mehreren Bronze- oder Silbertabellen, und schreiben Sie Daten in Silbertabellen.

Azure Databricks empfiehlt sich nicht, direkt aus der Aufnahme in Silbertabellen zu schreiben. Wenn Sie direkt aus der Aufnahme schreiben, treten Fehler aufgrund von Schemaänderungen oder beschädigten Datensätzen in Datenquellen auf. Wenn alle Quellen nur angefügt sind, konfigurieren Sie die meisten Lesevorgänge aus Bronze als Streaminglesevorgänge. Batchlesevorgänge sollten für kleine Datasets reserviert werden (z. B. kleine dimensionale Tabellen).

Die Silberschicht stellt überprüfte, gereinigte und angereicherte Versionen der Daten dar. Die Silberschicht:

  • Sollte immer mindestens eine validierte, nicht aggregierte Darstellung jedes Datensatzes enthalten. Wenn aggregierte Darstellungen viele nachgelagerte Workloads fördern, befinden sich diese Darstellungen möglicherweise in der Silberschicht, aber normalerweise befinden sie sich in der Goldschicht.
  • Hier führen Sie datenbereinigung, Deduplizierung und Normalisierung durch.
  • Verbessert die Datenqualität, indem Fehler und Inkonsistenzen korrigiert werden.
  • Strukturiert Daten in einem konsumierbareren Format für die nachgelagerte Verarbeitung.

Erzwingen der Datenqualität

Die folgenden Vorgänge werden in Silbertabellen ausgeführt:

  • Schemaerzwingung
  • Behandeln von Null- und fehlenden Werten
  • Datendeduplizierung
  • Lösung von Problemen mit veralteten und verspätet eingehenden Daten
  • Überprüfungen und Durchsetzung von Datenqualität
  • Schema-Entwicklung
  • Typumwandlung
  • Joins

Modellieren von Daten beginnen

Es ist üblich, mit der Durchführung der Datenmodellierung in der Silberschicht zu beginnen, einschließlich der Auswahl, wie stark geschachtelte oder halbstrukturierte Daten dargestellt werden sollen:

  • Verwenden Sie VARIANT den Datentyp.
  • Verwenden Sie JSON Zeichenfolgen.
  • Erstellen sie Strukturen, Zuordnungen und Arrays.
  • Flaches Schema oder Normalisieren von Daten in mehreren Tabellen.

Unterstützung von Analysen mit der Goldebene

Die Goldschicht stellt hoch verfeinerte Ansichten der Daten dar, die nachgelagerte Analysen, Dashboards, ML und Anwendungen fördern. Goldschichtdaten werden häufig hoch aggregiert und nach bestimmten Zeiträumen oder geografischen Regionen gefiltert. Sie enthält semantisch aussagekräftige Datasets, die Geschäftsfunktionen und -anforderungen zugeordnet sind.

Die Goldschicht:

  • Besteht aus aggregierten Daten, die auf Analysen und Berichte zugeschnitten sind.
  • Richtet sich an Geschäftslogik und Anforderungen.
  • Ist für die Leistung in Abfragen und Dashboards optimiert.

Ausrichten an Geschäftslogik und Anforderungen

Auf der Goldschicht modellieren Sie Ihre Daten für die Berichterstellung und Analyse mithilfe eines dimensionalen Modells, indem Sie Beziehungen erstellen und Measures definieren. Analysten mit Zugriff auf Daten in Gold sollten in der Lage sein, domänenspezifische Daten zu finden und Fragen zu beantworten.

Da die Goldschicht eine Geschäftsdomäne modelliert, erstellen einige Kunden mehrere Goldschichten, um unterschiedliche Geschäftsanforderungen wie PERSONAL, Finanzen und IT zu erfüllen.

Erstellen von Aggregats, die auf Analysen und Berichte zugeschnitten sind

Organisationen müssen häufig Aggregatfunktionen für Measures wie Mittelwerte, Anzahl, Höchstwerte und Mindestwerte erstellen. Wenn Ihr Unternehmen beispielsweise Fragen zu wöchentlichen Gesamtverkäufen beantworten muss, könnten Sie eine materialisierte Ansicht erstellen, die diese weekly_sales Daten vorab aggregiert, sodass Analysten und andere nicht häufig verwendete materialisierte Ansichten neu erstellen müssen.

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

Optimieren der Leistung in Abfragen und Dashboards

Das Optimieren von Goldschichttabellen für die Leistung ist eine bewährte Methode, da diese Datasets häufig abgefragt werden. Auf große Mengen an historischen Daten wird in der Regel in der Schrägschicht zugegriffen und nicht in der Goldschicht materialisiert.

Steuern der Kosten durch Anpassen der Datenaufnahmehäufigkeit

Steuern Sie die Kosten, indem Sie bestimmen, wie häufig Daten aufgenommen werden sollen.

Datenaufnahmehäufigkeit Kosten Latency Deklarative Beispiele Verfahrensbeispiele
Kontinuierliche inkrementelle Aufnahme Höher Niedriger – Streamingtabelle, die spark.readStream zum Aufnehmen aus Cloudspeicher oder Nachrichtenbus verwendet wird.
– Die Delta Live Tables-Pipeline, die diese Streamingtabelle aktualisiert, wird kontinuierlich ausgeführt.
– Strukturierter Streamingcode, der spark.readStream in einem Notizbuch zum Aufnehmen aus Cloudspeicher oder Nachrichtenbus in eine Delta-Tabelle verwendet wird.
– Das Notizbuch wird mit einem Azure Databricks-Auftrag mit einem fortlaufenden Auftragstrigger orchestriert.
Inkrementelle Aufnahme ausgelöst Geringer Höher - StreamingTabellenaufnahme aus Cloudspeicher oder Nachrichtenbus mithilfe spark.readStreamvon .
– Die Pipeline, die diese Streamingtabelle aktualisiert, wird durch den geplanten Trigger des Auftrags oder einen Dateiankunftsauslöser ausgelöst.
– Strukturierter Streamingcode in einem Notizbuch mit einem Trigger.Available Trigger.
– Dieses Notizbuch wird durch den geplanten Trigger des Auftrags oder einen Dateiankunftsauslöser ausgelöst.
Batchaufnahme mit manueller inkrementeller Erfassung Geringer Die höchste, aufgrund von seltenen Läufen. - Streaming table ingest from cloud storage using spark.read.
- Verwendet strukturiertes Streaming nicht. Verwenden Sie stattdessen Grundtypen wie Partitionsüberschreibung, um eine gesamte Partition gleichzeitig zu aktualisieren.
- Erfordert eine umfangreiche upstream-Architektur, um die inkrementelle Verarbeitung einzurichten, was Kosten ermöglicht, die strukturierten Streaming-Lese-/Schreibvorgängen ähneln.
- Erfordert außerdem die Partitionierung von Quelldaten nach einem datetime Feld und anschließendes Verarbeiten aller Datensätze aus dieser Partition in das Ziel.