Sdílet prostřednictvím


Modelování dat

Tento článek představuje důležité informace, upozornění a doporučení pro modelování dat v Azure Databricks. Zaměřuje se na uživatele, kteří nastavují nové tabulky nebo vytváří úlohy ETL, s důrazem na pochopení chování Azure Databricks, které ovlivňují transformaci nezpracovaných dat do nového datového modelu. Rozhodnutí o modelování dat závisí na tom, jak vaše organizace a úlohy používají tabulky. Datový model, který zvolíte, má vliv na výkon dotazů, náklady na výpočetní prostředky a náklady na úložiště. To zahrnuje úvod do základních konceptů návrhu databáze pomocí Azure Databricks.

Důležité

Tento článek se týká výhradně tabulek založených na Delta Lake, které zahrnují všechny spravované tabulky katalogu Unity.

Azure Databricks můžete použít k dotazování jiných externích zdrojů dat, včetně tabulek registrovaných ve službě Lakehouse Federation. Každý externí zdroj dat má různá omezení, sémantika a záruky transakcí. Viz Dotazování na data.

Koncepty správy databází

Lakehouse sestavený pomocí Azure Databricks sdílí mnoho komponent a konceptů s dalšími systémy podnikových datových skladů. Při návrhu datového modelu zvažte následující koncepty a funkce.

Transakce na Azure Databricks

Azure Databricks definuje transakce na jednotlivé tabulky. To znamená, že Azure Databricks nepodporuje příkazy s více tabulkami (označované také jako transakce s více příkazy).

U úloh modelování dat to znamená, že při ingestování zdrojového záznamu je nutné provádět více nezávislých transakcí, které vyžadují vložení nebo aktualizaci řádků do dvou nebo více tabulek. Každá z těchto transakcí může být úspěšná nebo neúspěšná nezávisle na jiných transakcích a podřízené dotazy musí být odolné vůči neshodě stavu kvůli neúspěšným nebo zpožděným transakcím.

Primární a cizí klíče v Azure Databricks

Primární a cizí klíče jsou informativní a nevynucují se. Tento model je běžný v mnoha podnikových cloudových databázových systémech, ale liší se od mnoha tradičních systémů relačních databází. Viz Omezení v Azure Databricks.

Spojení v Azure Databricks

Spojení můžou zavádět kritické body zpracování v jakémkoli návrhu databáze. Při zpracování dat v Azure Databricks se optimalizátor dotazů snaží optimalizovat plán spojení, ale může bojovat, když jednotlivý dotaz musí spojit výsledky z mnoha tabulek. Optimalizátor může také selhat ve snaze přeskočit záznamy v tabulce, když jsou parametry filtru v poli v jiné tabulce, což může vést k úplnému prohledávání tabulky.

Viz Práce s spojeními v Azure Databricks.

Poznámka:

Materializovaná zobrazení můžete použít k přírůstkovém výpočtu výsledků některých operací spojení, ale jiná spojení nejsou kompatibilní s materializovanými zobrazeními. Podívejte se na Materializovaná zobrazení.

Práce s vnořenými a složitými datovými typy

Azure Databricks podporuje práci s částečně strukturovanými zdroji dat, včetně JSON, Avro a ProtoBuff a ukládání složitých dat jako struktur, řetězců JSON a map a polí. Viz Částečně strukturovaná data modelu.

Normalizované datové modely

Azure Databricks může dobře pracovat s libovolným datovým modelem. Pokud máte existující datový model, ze kterého potřebujete dotazovat nebo migrovat do Azure Databricks, měli byste před změnou architektury dat vyhodnotit výkon.

Pokud navrhujete nový lakehouse nebo přidáváte datové sady do stávajícího prostředí, Azure Databricks nedoporučuje používat silně normalizovaný model, jako je třetí normální forma (3NF).

Modely, jako je hvězdicové schéma nebo schéma sněhové vločky, fungují dobře v Azure Databricks, protože ve standardních dotazech existuje méně spojení a méně klíčů, které je potřeba synchronizovat. Kromě toho, mít více datových polí v jedné tabulce umožňuje optimalizátoru dotazů přeskočit velké objemy dat pomocí statistiky na úrovni souboru. Pro více informací o vynechání dat najdete v tématu Vynechání dat pro Delta Lake.