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.
- 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_opportunities
elementu , który został rozszerzony o informacje o koncie. - Dane
leads_raw
są czyszczone w zestawie danych o nazwieleads_cleaned
.
- 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
- 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. |