Udostępnij za pośrednictwem


Na czym polega architektura lakehouse typu medallion?

Architektura medalionu opisuje serię warstw danych, które określają jakość danych przechowywanych w Lakehouse. Usługa Azure Databricks zaleca zastosowanie wielowarstwowego podejścia do stworzenia jednego źródła prawdy dla produktów danych korporacyjnych.

Ta architektura gwarantuje niepodzielność, spójność, izolację i trwałość, ponieważ dane przechodzą przez wiele warstw weryfikacji i przekształceń przed zapisaniem w układzie zoptymalizowanym pod kątem wydajnej analizy. Terminy brązowe (surowe), srebrne (zweryfikowane) i złote (wzbogacone) opisują jakość danych w każdej z tych warstw.

Architektura medalionu jako wzorzec projektowania danych

Architektura medalionu to wzorzec projektowania danych używany do logicznego organizowania danych. Jej celem jest przyrostowe i stopniowe ulepszanie struktury i jakości danych w miarę ich przepływu przez poszczególne warstwy architektury (od tabel warstwy Bronze ⇒ Silver ⇒ Gold). Architektury medalionowe są czasami określane również jako architektury wieloskokowe.

Postępując zgodnie z postępem danych w tych warstwach, organizacje mogą przyrostowo poprawić jakość i niezawodność danych, dzięki czemu będą bardziej odpowiednie dla aplikacji do analizy biznesowej i uczenia maszynowego.

Stosowanie architektury medalonu jest zalecanym najlepszym rozwiązaniem, ale nie wymaganiem.

Pytanie Brąz Srebrny Złoty
Co się dzieje w tej warstwie? Pozyskiwanie nieprzetworzonych danych Czyszczenie i walidacja danych Modelowanie wymiarowe i agregacja
Kto jest zamierzonym użytkownikiem?
  • Inżynierowie danych
  • Operacje na danych
  • Zespoły ds. zgodności i inspekcji
  • Inżynierowie danych
  • Analitycy danych (używają warstwy Silver do bardziej wyrafinowanego zestawu danych, który nadal przechowuje szczegółowe informacje niezbędne do szczegółowej analizy)
  • Analitycy danych (tworzenie modeli i wykonywanie zaawansowanych analiz)
  • Analitycy biznesowi i deweloperzy analizy biznesowej
  • Analitycy danych i inżynierowie uczenia maszynowego
  • Kierownictwo i osoby podejmujące decyzje
  • Zespoły operacyjne

Przykładowa architektura medalionu

W tym przykładzie architektury medalionu przedstawiono brązowe, srebrne i złote warstwy do użycia przez zespół ds. operacji biznesowych. Każda warstwa jest przechowywana w innym schemacie wykazu operacji.

Architektura medalu: warstwy brązowa, srebrna i złota

  • Warstwa brązowa (ops.bronze): Pobiera nieprzetworzone dane z takich źródeł jak magazyn w chmurze, platforma Kafka i usługa Salesforce. W tym miejscu nie jest przeprowadzane czyszczenie danych ani walidacja.
  • Warstwa srebrna (ops.silver): czyszczenie i walidacja danych są wykonywane w tej warstwie.
    • Dane dotyczące klientów i transakcji są czyszczone przez usuwanie pustych wartości oraz separowanie nieprawidłowych rekordów. Te zestawy danych są przyłączone do nowego zestawu danych o nazwie customer_transactions. Analitycy danych mogą używać tego zestawu danych do analizy predykcyjnej.
    • Podobnie konta i zestawy danych okazji sprzedaży z Salesforce są łączone w celu utworzenia account_opportunities, rozszerzonego o dane dotyczące konta.
    • Dane leads_raw są czyszczone w zestawie danych o nazwie leads_cleaned.
  • Warstwa złota (ops.gold): ta warstwa jest przeznaczona dla użytkowników biznesowych. Zawiera mniej zestawów danych niż srebro i złoto.
    • customer_spending: Średnie i łączne wydatki dla każdego klienta.
    • account_performance: Dzienna wydajność dla każdego konta.
    • sales_pipeline_summary: informacje na temat całościowego potoku sprzedaży.
    • business_summary: Wysoce zagregowane informacje dla kadry kierowniczej.

Pozyskiwanie danych pierwotnych do warstwy z brązu

Warstwa brązowa zawiera nieprzetworzone, niewalidowane dane. Dane pozyskane w warstwie brązu zwykle mają następujące cechy:

  • Zawiera i utrzymuje stan pierwotny źródła danych w oryginalnych formatach.
  • Dołączany jest stopniowo i rośnie wraz z upływem czasu.
  • Jest przeznaczony do używania przez obciążenia, które wzbogacają dane dla tabel srebrnych, a nie do uzyskiwania dostępu przez analityków i data scientistów.
  • Służy jako pojedyncze źródło prawdy, zachowując wierność danych.
  • Umożliwia ponowne przetwarzanie i inspekcję przez przechowywanie wszystkich danych historycznych.
  • Może to być dowolna kombinacja transakcji strumieniowych i wsadowych ze źródeł, w tym magazynów obiektów w chmurze (na przykład S3, GCS, ADLS), magistral komunikatów (na przykład Kafka, Kinesis itp.) i systemów federacyjnych (na przykład Lakehouse Federation).

Ograniczanie oczyszczania lub walidacji danych

Minimalna weryfikacja danych jest wykonywana w warstwie brązowej. Aby zapewnić ochronę przed porzuconymi danymi, usługa Azure Databricks zaleca przechowywanie większości pól jako ciągów, wariantów lub plików binarnych w celu ochrony przed nieoczekiwanymi zmianami schematu. Kolumny metadanych mogą być dodawane, takie jak pochodzenie lub źródło danych (na przykład _metadata.file_name ).

Weryfikowanie i deduplikowanie danych w warstwie srebrnej

Czyszczenie i walidacja danych są wykonywane w warstwie srebrnej.

Buduj srebrne stoły z warstwy brązu

Aby utworzyć warstwę srebrną, odczytaj dane z co najmniej jednej tabeli z brązu lub srebra i zapisuj dane do tabel srebrnych.

Usługa Azure Databricks nie zaleca bezpośredniego zapisu do srebrnych tabel w trakcie pozyskiwania danych. Jeśli zapisujesz bezpośrednio z procesu pozyskiwania danych, wprowadzisz błędy spowodowane zmianami schematu lub uszkodzonymi rekordami w źródłach danych. Zakładając, że wszystkie źródła są tylko dodawane, skonfiguruj większość odczytów z warstwy bronze jako odczyty strumieniowe. Odczyty wsadowe powinny być zarezerwowane dla małych zestawów danych (na przykład małych tabel wymiarowych).

Warstwa srebrna reprezentuje zweryfikowane, oczyszczone i wzbogacone wersje danych. Warstwa srebra:

  • Zawsze należy uwzględnić co najmniej jedną zweryfikowaną, niegregowaną reprezentację każdego rekordu. Jeśli reprezentacje zagregowane napędzają wiele obciążeń podrzędnych, te reprezentacje mogą znajdować się w warstwie srebrnej, ale zazwyczaj znajdują się w warstwie złota.
  • To miejsce, w którym wykonujesz czyszczenie danych, deduplikację i normalizację.
  • Poprawia jakość danych, poprawiając błędy i niespójności.
  • Strukturyzuje dane w bardziej przystępnym formacie do dalszego przetwarzania.

Wymuszanie jakości danych

W tabelach silver są wykonywane następujące operacje:

  • Wymuszanie schematów
  • Obsługa wartości null i brakujących wartości
  • Deduplikacja danych
  • Rozwiązywanie problemów z danymi nieuporządkowanymi i późno przybywającymi
  • Kontrole jakości danych i egzekwowanie
  • Ewolucja schematu
  • Rzutowanie typów
  • Połączenia

Rozpoczynanie modelowania danych

Często rozpoczyna się modelowanie danych w warstwie srebrnej, w tym wybieranie sposobu reprezentowania silnie zagnieżdżonych lub częściowo ustrukturyzowanych danych:

  • Użyj VARIANT typu danych.
  • Użyj JSON ciągów.
  • Tworzenie struktur, map i tablic.
  • Spłaszczanie schematu lub normalizacja danych w wielu tabelach.

Analiza zużycia energii z warstwą złota

Warstwa złota reprezentuje wysoce wyrafinowane widoki danych, które napędzają analizę podrzędną, pulpity nawigacyjne, uczenie maszynowe i aplikacje. Dane warstwy złotej są często wysoce agregowane i filtrowane dla określonych okresów lub regionów geograficznych. Zawiera on semantycznie znaczące zestawy danych, które są mapowane na funkcje i potrzeby biznesowe.

Warstwa złota:

  • Składa się z zagregowanych danych dostosowanych do analizy i raportowania.
  • Jest zgodna z logiką biznesową i wymaganiami.
  • Jest zoptymalizowany pod kątem wydajności zapytań i dashboardów.

Dopasowanie do logiki biznesowej i wymagań

Warstwa złota to miejsce, w którym modelujesz dane na potrzeby raportowania i analizy przy użyciu modelu wymiarowego, ustanawiając relacje i definiując miary. Analitycy z dostępem do danych w złocie powinni mieć możliwość znajdowania danych specyficznych dla domeny i odpowiadania na pytania.

Ponieważ warstwa złota modeluje domenę biznesową, niektórzy klienci tworzą wiele warstw złota, aby spełnić różne potrzeby biznesowe, takie jak kadry, finanse i dział IT.

Tworzenie agregacji dostosowanych do analizy i raportowania

Organizacje często muszą tworzyć funkcje agregujące dla miar, takich jak średnie, liczby, maksimum i minimum. Jeśli na przykład twoja firma musi odpowiedzieć na pytania dotyczące łącznej sprzedaży tygodniowej, możesz utworzyć zmaterializowany widok o nazwie weekly_sales , który poprzedza te dane, aby analitycy i inni nie musieli ponownie tworzyć często używanych zmaterializowanych widoków.

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

Optymalizowanie pod kątem wydajności zapytań i pulpitów nawigacyjnych

Optymalizacja tabel warstw złota pod kątem wydajności jest najlepszym rozwiązaniem, ponieważ te zestawy danych są często odpytywane. Duże ilości danych historycznych są zwykle dostępne w warstwie sliver i nie są materializowane w warstwie złota.

Kontrolowanie kosztów przez dostosowanie częstotliwości pozyskiwania danych

Kontrolowanie kosztów przez określenie, jak często pozyskiwać dane.

Częstotliwość pozyskiwania danych Koszt Opóźnienie Przykłady deklaratywne Przykłady proceduralne
Ciągłe przyrostowe wchłanianie Wyższa Obniżyć
  • Tabela przesyłania strumieniowego używając spark.readStream do pobierania danych z magazynu w chmurze lub magistrali komunikatów.
  • Potok DLT, który aktualizuje tę tabelę przesyłania strumieniowego, działa w sposób ciągły.
  • Kod Structured Streaming używający spark.readStream w notesie do pobierania danych z magazynu w chmurze lub magistrali komunikatów do tabeli Delta.
  • Notatnik jest orkiestrowany przy użyciu zadania usługi Azure Databricks z ciągłym wyzwalaczem zadania.
Wyzwalane pozyskiwanie przyrostowe niższy Wyższa
  • Pozyskiwanie danych strumieniowych do tabeli z magazynu w chmurze lub magistrali komunikatów przy użyciu spark.readStream.
  • Pipeline, który aktualizuje tę tabelę danych strumieniowych, jest uruchamiany przez wyzwalacz zaplanowanego zadania lub wyzwalacz przybycia pliku.
  • Kod strukturalnego przesyłania strumieniowego w notesie z wyzwalaczem Trigger.Available.
  • Ten notatnik jest wyzwalany przez wyzwalacz zaplanowanego zadania lub wyzwalacz przybycia pliku.
Pozyskiwanie wsadowe przy użyciu ręcznego pozyskiwania przyrostowego Obniżyć Najwyższy, ze względu na rzadkie uruchomienia.
  • Przesyłanie strumieniowe pozyskiwania tabeli z magazynu w chmurze przy użyciu spark.read.
  • Nie używa strukturalnego przesyłania strumieniowego. Zamiast tego użyj elementów pierwotnych, takich jak zastępowanie partycji, aby jednocześnie zaktualizować całą partycję.
  • Wymaga rozbudowanej architektury wejściowej do skonfigurowania przetwarzania danych przyrostowych, co umożliwia osiągnięcie kosztów porównywalnych do odczytu/zapisu przesyłania strumieniowego ze strukturą.
  • Ponadto wymaga partycjonowania danych źródłowych według pola datetime, a następnie przetwarzania wszystkich rekordów z tej partycji do obiektu docelowego.