Udostępnij za pośrednictwem


Jaka jest architektura medallion lakehouse?

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 tworzenia pojedynczego źródła danych dla produktów danych przedsiębiorstwa.

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 każdą warstwę architektury (z tabel warstwy Silver ⇒ Silver ⇒ Gold). Architektury medalonu są czasami nazywane również architekturami wieloskoku.

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ązowe 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 zachowuje 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 decydenci
- 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.

Medalion architektury brązowe, srebrne i złote warstwy

  • Warstwa z brązu (ops.bronze): pozyskiwanie nieprzetworzonych danych z magazynu w chmurze, platformy Kafka i usługi 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 wartości null i kwarantowanie 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 szans sprzedaży z usługi Salesforce są dołączane w celu utworzenia account_opportunitieselementu , który został rozszerzony o informacje o koncie.
    • 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 kompleksowego potoku sprzedaży.
    • business_summary: Wysoce zagregowane informacje dla kadry kierowniczej.

Pozyskiwanie danych pierwotnych do warstwy z brązu

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

  • Zawiera i utrzymuje stan pierwotny źródła danych w oryginalnych formatach.
  • Jest dołączany przyrostowo i rośnie wraz z upływem czasu.
  • Jest przeznaczony do użycia przez obciążenia, które wzbogacają dane dla tabel silver, a nie do uzyskiwania dostępu przez analityków i analityków danych.
  • 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 przesyłania strumieniowego i wsadowego ze źródeł, w tym magazynu obiektów w chmurze (na przykład S3, GCS, ADLS), magistrali komunikatów (na przykład Kafka, Kinesis itp.) i systemów federacyjnych (na przykład Federacja lakehouse).

Ograniczanie oczyszczania lub walidacji danych

Minimalna weryfikacja danych jest wykonywana w warstwie z brązu. 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.

Tworzenie srebrnych stołów z warstwy z brązu

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

Usługa Azure Databricks nie zaleca pisania w tabelach silver bezpośrednio z pozyskiwania. Jeśli zapisujesz bezpośrednio z pozyskiwania, wprowadzisz błędy spowodowane zmianami schematu lub uszkodzonymi rekordami w źródłach danych. Zakładając, że wszystkie źródła są tylko dołączane, skonfiguruj większość odczytów z brązu jako odczyty strumieniowe. Operacje odczytu wsadowego powinny być zarezerwowane dla małych zestawów danych (na przykład tabel małych wymiarów).

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.
  • Struktura danych w bardziej eksploatacyjnym formacie przetwarzania podrzędnego.

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 wychodzącymi i opóźnionych
  • Kontrole jakości danych i wymuszanie
  • Ewolucja schematu
  • Rzutowanie typów
  • Sprzężenia

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 mapuje się na funkcje biznesowe i potrzeby.

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 pulpitów nawigacyjnych.

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 pozyskiwanie przyrostowe Wyższa Lower — Tabela przesyłania strumieniowego używana spark.readStream do pozyskiwania z magazynu w chmurze lub magistrali komunikatów.
— Potok delta Live Tables, który aktualizuje tę tabelę przesyłania strumieniowego w sposób ciągły.
— Kod przesyłania strumieniowego ze strukturą używany spark.readStream w notesie do pozyskiwania z magazynu w chmurze lub magistrali komunikatów do tabeli delty.
— Notes jest orkiestrowany przy użyciu zadania usługi Azure Databricks z wyzwalaczem zadania ciągłego.
Wyzwalane pozyskiwanie przyrostowe Lower Wyższa — Przesyłanie strumieniowe pozyskiwania tabel z magazynu w chmurze lub magistrali komunikatów przy użyciu polecenia spark.readStream.
— Potok, który aktualizuje tę tabelę przesyłania strumieniowego, jest wyzwalany przez wyzwalacz zaplanowanego zadania lub wyzwalacz przybycia pliku.
— Kod przesyłania strumieniowego ze strukturą w notesie z wyzwalaczem Trigger.Available .
— Ten notes jest wyzwalany przez wyzwalacz zaplanowanego zadania lub wyzwalacz przybycia pliku.
Pozyskiwanie wsadowe przy użyciu ręcznego pozyskiwania przyrostowego Lower Najwyższy, z powodu rzadkich przebiegów. — Przesyłanie strumieniowe pozyskiwania tabel z magazynu w chmurze przy użyciu polecenia spark.read.
— Nie używa przesyłania strumieniowego ze strukturą. Zamiast tego użyj elementów pierwotnych, takich jak zastępowanie partycji, aby jednocześnie zaktualizować całą partycję.
— Wymaga rozbudowanej architektury nadrzędnej w celu skonfigurowania przetwarzania przyrostowego, co pozwala na koszt podobny do odczytu/zapisu ze strukturą przesyłania strumieniowego.
— Wymaga również partycjonowania danych źródłowych według datetime pola, a następnie przetwarzania wszystkich rekordów z tej partycji do obiektu docelowego.