在 Microsoft Fabric 中實作 medallion Lakehouse 架構
本文介紹獎章湖架構,並說明如何在 Microsoft Fabric 中實作 Lakehouse。 其以多個物件為目標:
- 數據工程師: 設計、建置和維護基礎結構與系統的技術人員,讓組織能夠收集、儲存、處理和分析大量數據。
- 卓越中心、IT和BI小組: 負責監督整個組織分析的團隊。
- Fabric 管理員:負責監督組織中 Fabric 的管理員。
獎章湖屋架構,通常稱為獎章架構,是組織用來邏輯組織湖屋數據的設計模式。 這是 Fabric 的建議設計方法。
Medallion 架構包含三個不同的層級,或區域。 每一層都會指出儲存在 Lakehouse 中的數據品質,而較高層級代表較高的品質。 這個多層式方法可協助您為企業數據產品建置單一事實來源。
重要的是,當數據在層中進行時,獎章架構會保證不可部分完成性、一致性、隔離和持久性 (ACID) 一組屬性。 從原始數據開始,一系列驗證和轉換會準備經過優化以有效率分析的數據。 有三個獎牌階段:銅牌(原始)、銀牌(經驗證)和金牌(豐富)。
如需詳細資訊,請參閱 什麼是獎章湖屋架構?。
Fabric 中的 OneLake 和 Lakehouse
新式數據倉儲的基礎是數據湖。 Microsoft OneLake,這是整個組織的單一、統一、邏輯數據湖。 它會隨每個網狀架構租用戶自動布建,且其設計為所有分析數據的單一位置。
您可以使用 OneLake 來:
- 拿掉尋址接收器並減少管理工作。 所有組織數據都會儲存、 管理和保護 在一個 Data Lake 資源內。 由於 OneLake 已使用您的 Fabric 租使用者布建,因此不會再布建或管理任何資源。
- 減少數據移動和重複。 OneLake 的目標是只儲存一份數據。 較少的數據復本會產生較少的數據移動程式,進而提升效率並降低複雜度。 如有必要,您可以建立 快捷方式 來參考儲存在其他位置的數據,而不是將它複製到 OneLake。
- 搭配多個分析引擎使用。 OneLake 中的數據會以開放式格式儲存。 如此一來,各種分析引擎可以查詢數據,包括 Analysis Services(由 Power BI 使用)、T-SQL 和 Apache Spark。 其他非網狀架構應用程式也可以使用 API 和 SDK 來 存取 OneLake 。
如需詳細資訊,請參閱 OneLake,適用於數據的 OneDrive。
若要將數據儲存在 OneLake 中,您可以在 Fabric 中建立 Lakehouse 。 Lakehouse 是一個數據架構平臺,可用來在單一位置儲存、管理和分析結構化和非結構化數據。 它可以輕鬆地調整為所有文件類型和大小的大量數據,而且因為它儲存在單一位置,因此可以輕鬆地在整個組織中共用和重複使用。
每個 Lakehouse 都有一個內建的 SQL 分析端點,可解除鎖定數據倉儲功能,而不需要移動數據。 這表示您可以使用 SQL 查詢在 Lakehouse 中查詢您的數據,而不需要任何特殊設定。
如需詳細資訊,請參閱 什麼是 Microsoft Fabric 中的 Lakehouse?。
數據表和檔案
當您在 Fabric 中建立 Lakehouse 時,會自動為數據表和檔案布建兩個實體儲存位置。
- 數據表 是一個受控區域,用於裝載 Apache Spark 中所有格式的數據表(CSV、Parquet 或 Delta)。 所有數據表,無論是自動還是明確建立,都會被辨識為 Lakehouse 中的數據表。 此外,任何 Delta 數據表,也就是具有檔案型事務歷史記錄的 Parquet 數據檔,也會辨識為數據表。
- 檔案 是一個非受控區域,用於以任何檔格式儲存數據。 儲存在此區域中的任何 Delta 檔案都不會自動辨識為數據表。 如果您想要在 Unmanaged 區域中的 Delta Lake 資料夾上建立資料表,您必須使用指向 Apache Spark 中 Delta Lake 檔案之 Unmanaged 資料夾的位置,明確建立 快捷方式 或外部資料表。
受控區域(數據表)與 Unmanaged 區域(檔案)之間的主要區別是自動數據表探索和註冊程式。 此程式只會在受控區域中建立的任何資料夾上執行,但不會在 Unmanaged 區域中執行。
在 Microsoft Fabric 中 ,Lakehouse 總 管會提供整個 Lakehouse 的統一圖形表示法,讓使用者巡覽、存取及更新其數據。
如需自動數據表探索的詳細資訊,請參閱 自動數據表探索和註冊。
Delta Lake Storage
Delta Lake 是優化的儲存層,可提供儲存數據和數據表的基礎。 它支援巨量數據工作負載的 ACID 交易,因此它是 Fabric Lakehouse 中的預設記憶體格式。
重要的是,Delta Lake 在 Lakehouse 中提供串流和批次作業的可靠性、安全性和效能。 不過,在內部,它會以 Parquet 檔案格式儲存數據,但也會維護事務歷史記錄和統計數據,以提供標準 Parquet 格式的功能和效能改善。
Delta Lake 格式比一般檔格式提供下列主要優點。
- 支援 ACID 屬性,特別是持久性,以防止數據損毀。
- 更快速地讀取查詢。
- 增加數據新鮮度。
- 支援批次和串流工作負載。
- 支援使用 Delta Lake 時間行動的數據復原。
- 使用 Delta Lake 數據表歷程記錄增強法規合規性和稽核。
網狀架構會使用 Delta Lake 標準化記憶體檔格式,而且根據預設,Fabric 中的每個工作負載引擎都會在將數據寫入新數據表時建立 Delta 數據表。 如需詳細資訊,請參閱 Lakehouse 和 Delta Lake 數據表。
Fabric 中的 Medallion 架構
獎章架構的目標是逐步改善數據的結構和品質,因為它在每一個階段進行時。
獎章架構包含三個不同的層(或區域)。
- 銅牌: 也稱為 原始區域,第一層會以原始格式儲存源數據。 此層中的數據通常是僅附加且不可變。
- Silver: 也稱為 擴充區域,此層會儲存從銅層取得的數據源。 未經處理的數據已經過清理和標準化,現在已結構化為數據表(數據列和數據行)。 它也可能會與其他數據整合,以提供所有商務實體的企業檢視,例如客戶、產品和其他實體。
- 黃金: 也稱為 策劃區域,最後一層會儲存從銀層取得的數據源。 數據會經過精簡,以符合特定的下游商務和分析需求。 數據表通常符合 星型架構設計,可支持針對效能和可用性優化的數據模型開發。
重要
因為 Fabric Lakehouse 代表單一區域,因此您會為每個三個區域建立一個 Lakehouse。
在 Fabric 中的一般獎章架構實作中,銅區會以與數據源相同的格式儲存數據。 當數據源是關係資料庫時,Delta 數據表是不錯的選擇。 銀和金區域包含 Delta 數據表。
提示
若要瞭解如何建立 Lakehouse,請透過 Lakehouse 端對端案例 教學課程。
網狀架構湖屋指引
本節提供使用 medallion 架構實作 Fabric Lakehouse 的相關指引。
部署模型
若要在 Fabric 中實作獎章架構,您可以使用 lakehouses (每個區域各一個)、數據倉儲或兩者的組合。 您的決策應以您的喜好設定和小組的專業知識為基礎。 請記住,Fabric 提供彈性:您可以使用不同的分析引擎,在 OneLake 中處理一份數據。
以下是要考慮的兩種模式。
- 模式 1: 將每個區域建立為湖屋。 在此情況下,商務使用者會使用 SQL 分析端點來存取數據。
- 模式 2: 建立銅和銀區作為湖屋,並將黃金區域建立為數據倉儲。 在此情況下,商務使用者會使用數據倉儲端點來存取數據。
雖然您可以在單一 Fabric 工作區中建立所有 Lakehouse,但建議您在自己的個別 Fabric 工作區中建立每個 Lakehouse。 此方法可讓您在區域層級擁有更多控制權和更佳的治理。
針對青銅區域,建議您以原始格式儲存數據,或使用 Parquet 或 Delta Lake。 盡可能保留數據的原始格式。 如果源數據來自 OneLake、Azure Data Lake Store Gen2(ADLS Gen2)、Amazon S3 或 Google,請在青銅區域中建立 快捷方式 ,而不是跨區域複製數據。
針對銀和金區域,建議您使用 Delta 數據表,因為它們所提供的額外功能和效能增強功能。 網狀架構會標準化 Delta Lake 格式,根據預設,Fabric 中的每個引擎都會以這個格式寫入數據。 此外,這些引擎會使用 V 順序寫入時間優化至 Parquet 檔案格式。 該優化可讓網狀架構計算引擎快速讀取,例如 Power BI、SQL、Apache Spark 及其他。 如需詳細資訊,請參閱 Delta Lake 數據表優化和 V 順序。
最後,現今許多組織都面臨數據量的巨大成長,以及越來越需要以邏輯方式組織和管理該數據,同時促進更針對性且更有效率的使用和控管。 這可引導您建立和管理具有控管的分散式或同盟數據組織。
若要符合此目標,請考慮實作 數據網格架構。 數據網格 是一種架構模式,著重於建立提供數據做為產品的數據網域。
您可以藉由建立數據網域,為 Fabric 中的數據資產建立數據網格架構。 您可以建立對應至商務網域的網域,例如行銷、銷售、庫存、人力資源和其他網域。 接著,您可以在每個網域內設定數據區,以實作獎章架構。
如需網域的詳細資訊,請參閱 網域。
瞭解差異數據表數據記憶體
本節說明在 Fabric 中實作獎章湖屋架構的其他指引主題。
檔案大小
一般而言,當巨量數據平臺有少量的大型檔案,而不是大量的小型檔案時,其效能會更好。 這是因為當計算引擎必須管理許多元數據和檔案作業時,就會發生效能降低。 為了提升查詢效能,建議您針對大小約為 1 GB 的數據檔。
Delta Lake 具有稱為 預測優化的功能。 預測優化不需要手動管理 Delta 數據表的維護作業。 啟用此功能時,Delta Lake 會自動識別受益於維護作業的數據表,然後優化其記憶體。 它可以透明地將許多較小的檔案聯合成大型檔案,而不會對數據的其他讀取器和寫入器造成任何影響。 雖然這項功能應該構成卓越營運和數據準備工作的一部分,但 Fabric 也有能力在數據寫入期間優化這些數據檔。 如需詳細資訊,請參閱 Delta Lake 的預測優化。
歷程記錄保留期
根據預設,Delta Lake 會維護所有變更的歷程記錄,這表示歷程記錄元數據的大小會隨著時間成長。 根據您的商務需求,您應該將歷程記錄數據保留一段時間,以降低記憶體成本。 請考慮只保留上個月的歷程記錄數據,或其他適當的時間週期。
您可以使用 VACUUM 命令,從 Delta 資料表移除較舊的歷程記錄數據。 不過,請注意,根據預設,您無法在過去七天內刪除歷程記錄數據,這是為了維護數據的一致性。 默認天數是由數據表屬性 delta.deletedFileRetentionDuration = "interval <interval>"
所控制。 它會判斷檔案必須刪除的時間週期,才能將其視為真空作業的候選專案。
表格分割區
當您在每個區域中儲存數據時,建議您盡可能使用分割的資料夾結構。 這項技術有助於改善數據管理性和查詢效能。 一般而言,由於數據分割剪除/消除,資料夾結構中的數據分割會導致更快速地搜尋特定數據項。
一般而言,當新數據送達時,您會將數據附加至目標數據表。 不過,在某些情況下,您可能會合併數據,因為您需要同時更新現有的數據。 在此情況下,您可以使用 MERGE 命令來執行 upsert 作業。 當您的目標數據表已分割時,請務必使用分割區篩選來加速作業。 如此一來,引擎就可以排除不需要更新的數據分割。
資料存取
最後,您應該規劃和控制誰需要存取 Lakehouse 中的特定數據。 您也應該瞭解存取此資料時要使用的各種交易模式。 然後,您可以定義正確的數據表分割配置,以及與 Delta Lake Z 順序索引的數據組合。
相關內容
如需實作 Fabric Lakehouse 的詳細資訊,請參閱下列資源。
- 教學課程: Lakehouse 端對端案例
- Lakehouse 和 Delta Lake 數據表
- Microsoft網狀架構決策指南:選擇數據存放區
- Delta Lake 數據表優化和 V 順序
- 在 Apache Spark 上優化寫入的需求
- 有任何問題嗎? 請嘗試詢問 網狀架構社群。
- 有任何建議嗎? 貢獻改進 Fabric 的想法。