共用方式為


資料模型

本文介紹 Azure Databricks 上數據模型化的考慮、注意事項和建議。 其目標是設定新數據表或撰寫 ETL 工作負載的使用者,並強調了解影響將原始數據轉換成新數據模型之 Azure Databricks 行為。 數據模型化決策取決於您的組織與工作負載如何使用數據表。 您選擇的數據模型會影響查詢效能、計算成本和記憶體成本。 這包括使用 Azure Databricks 進行資料庫設計的基本概念簡介。

重要

本文僅適用於由 Delta Lake 支持的數據表,包括所有 Unity Catalog 管理的表格。

您可以使用 Azure Databricks 來查詢其他外部數據源,包括向 Lakehouse 同盟註冊的數據表。 每個外部數據源都有不同的限制、語意和交易式保證。 請參閱 查詢數據

資料庫管理概念

以 Azure Databricks 建置的 Lakehouse 與其他企業數據倉儲系統共用許多元件和概念。 在設計數據模型時,請考慮下列概念和功能。

Azure Databricks 上的交易

Azure Databricks 會將交易範圍設定為個別數據表。 這表示 Azure Databricks 不支援多數據表語句(也稱為多語句交易)。

對於數據模型化工作負載,這可轉譯為在內嵌來源記錄時必須執行多個獨立交易,需要插入或更新數據列到兩個或多個數據表中。 這些交易的成功或失敗是獨立於其他交易的,且下游查詢需要能夠接受因交易失敗或延遲而導致的狀態不一致。

Azure Databricks 上的主要和外鍵

主鍵和外鍵是參考性的,不會強制執行。 此模型在許多企業雲端式資料庫系統中很常見,但與許多傳統關係資料庫系統不同。 請參閱 Azure Databricks 中的條件約束

Azure Databricks 上的聯結

聯結可以在任何資料庫設計中引入處理瓶頸。 在 Azure Databricks 上處理數據時,查詢優化器會尋求優化聯結計劃,但當個別查詢必須聯結許多數據表的結果時,可能會困難。 當篩選參數位於另一個數據表的欄位上時,優化器可能無法略過數據表中的記錄,這可能會導致全表掃描。

請參閱 在 Azure Databricks 上使用聯結功能

注意

您可以使用具體化檢視來累加計算某些聯結作業的結果,但其他聯結與具體化檢視不相容。 請參閱 具體化檢視

使用嵌套和複雜資料類型

Azure Databricks 支援使用半結構化數據源,包括 JSON、Avro 和 ProtoBuff,以及將複雜數據儲存為結構、JSON 字串,以及對應和數位。 請參閱 模型半結構化數據

標準化數據模型

Azure Databricks 可與任何數據模型搭配運作。 如果您有需要查詢或移轉至 Azure Databricks 的現有數據模型,您應該先評估效能,再重新架構數據。

如果您要建構新的 Lakehouse 或將資料集新增至現有環境,Azure Databricks 建議避免使用大量正規化的模型,例如第三正規形式 (3NF)。

星型架構或雪花式架構等模型在 Azure Databricks 上表現良好,因為標準查詢中的聯結較少,且較少的鍵需要保持同步。此外,在單一數據表中擁有更多數據欄位,讓查詢優化器透過檔案級別的統計資料略過大量數據。 如需數據略過的詳細資訊,請參閱 Delta Lake 的數據略過。