- 資料架構教程
- 資料架構 - 首頁
- 資料架構 - 簡介
- 資料架構 - 大資料
- 資料架構 - 資料架構型別
- 資料架構 - 設計會議
- 資料架構 - 關係型資料倉庫
- 資料架構 - 資料湖
- 資料架構 - 資料儲存解決方案
- 資料架構 - 資料儲存流程
- 資料架構 - 設計方法
- 資料架構 - 資料建模方法
- 資料架構 - 資料攝取方法
- 資料架構 - 現代資料倉庫
- 資料架構 - 資料織網
- 資料架構 - 資料湖倉
- 資料架構 - 資料網格基礎
- 有用資源
- 資料架構 - 有用資源
- 資料架構 - 討論
資料架構 - 資料湖倉
本章重點介紹資料湖倉的概念,這是一種管理和分析資料的新方法。我們將解釋什麼是資料湖倉,它如何結合資料湖和資料倉庫的最佳特性,以及為什麼它正成為儲存和處理海量資料的熱門選擇。以下是您將學到的內容:
什麼是資料湖倉?
資料湖倉是一種儲存和管理資料的方式。它將資料湖和資料倉庫的優勢結合到一個系統中,簡化了資料儲存。無需同時使用這兩個系統,只需使用具有改進功能的資料湖即可。
為什麼我們需要資料湖倉?
資料湖倉解決了舊系統中原始資料和處理後的資料分開儲存的問題,這些問題會導致延遲、高成本和協作差。
舊方法
在資料湖倉出現之前,公司面臨著這些問題:
- 他們必須為原始資料和處理後的資料維護單獨的系統。
- 在系統之間移動資料緩慢且昂貴。
- 資料團隊難以有效協作。
- 難以維護資料質量。
新方法
資料湖倉透過以下方式解決了這些問題:
- 將所有資料儲存在一個地方。
- 使資料分析更容易。
- 節省儲存成本。
- 幫助團隊更好地協同工作。
資料湖倉的關鍵功能
使用資料湖倉時,您可以:
- 儲存任何型別的資料(數字、文字、圖片、影片)。
- 跟蹤資料隨時間的變化。
- 允許不同的人同時處理資料。
- 確保資料保持準確和可靠。
資料湖倉的優勢
資料湖倉提供多種優勢,包括:
- 它將所有資料儲存在一個地方。
- 它透過使用單個系統進行儲存和處理來降低成本。
- 它支援即時和批次資料。
- 它透過內建檢查保持資料清潔和可靠。
- 它使協作更容易並加快分析速度。
資料湖倉如何工作?
資料湖倉透過結合幾個步驟來簡化資料的儲存、管理和分析。以下是它的工作原理:
- 資料攝取:該過程從不同的來源(例如應用程式、感測器和資料庫)收集資料開始。然後將這些資料儲存在一個可以處理所有型別資料的系統中,無論資料是結構化、半結構化還是非結構化的。
- 資料處理:資料攝取後,對其進行清理和轉換,使其準備好進行分析。此步驟將原始資料組織成更易於使用的格式。
- 資料管理:元資料層用於跟蹤和管理資料。這有助於保持一切井然有序,並確保使用者可以在需要時輕鬆查詢和訪問正確的資料。
- 資料分析:最後,使用者可以執行查詢、生成報告並從資料中提取見解,從而為決策提供資訊。
用於資料湖倉的 Delta Lake
Delta Lake透過改進的可靠性、安全性以及效能來改進資料湖。它本身不是儲存,而是構建在資料湖之上。您可以透過以 Delta Lake 格式而不是 CSV 或 JSON 等格式儲存資料,輕鬆地將您的資料湖轉換為 Delta Lake。
使用Delta Lake格式時,您的資料將作為帶有事務日誌的 Parquet 檔案儲存,該日誌跟蹤所有更改。這提高了資料湖的功能。由於其普及性,大多數工具都支援它。
為資料湖新增功能的其他選項包括Apache Iceberg和Apache Hudi。
Delta Lake 特性
Delta Lake為資料湖添加了一些重要的功能,使其更像關係型資料倉庫。以下是一些重要的功能:
DML 支援
Delta Lake支援INSERT、DELETE、UPDATE和MERGE等 DML 命令,使資料管理更加輕鬆。與僅處理批次處理且不允許即時更新的傳統資料湖不同,Delta Lake 允許您有效地更新資料,而無需重寫整個檔案。
Delta 表和事務日誌
在Delta Lake中,資料被組織成 Delta 表,這些表將大型表拆分成較小的檔案以更好地進行管理。事務日誌跟蹤更改,透過最佳化儲存和使用記憶體中處理來加快 DML 操作。例如,當您執行UPDATE語句時,它只讀取和更新必要的檔案,而不是整個表。
ACID 事務
Delta Lake支援事務的ACID(原子性、一致性、隔離性、永續性)特性,但僅限於單個 Delta 表內。與可以跨多個表處理事務的關係資料庫不同,Delta Lake 的 ACID 支援僅限於一次一個表。
時間旅行
Delta Lake包含一個“時間旅行”功能,允許您查詢特定時間點的資料。事務日誌跟蹤所有更改,因此您可以輕鬆訪問資料的先前版本或根據需要撤消更改。此功能對於審計和資料恢復特別有用。
小檔案問題
Delta Lake解決了“小檔案”問題,其中存在太多小檔案會影響效能並增加儲存成本。它會自動使用壓縮演算法將小檔案合併成較大的檔案,從而提高效率並減少儲存開銷。
統一處理
Delta Lake允許使用者對相同資料進行批次和即時流處理。這簡化了資料處理工作流程和架構,無需為批次和流任務設定單獨的系統。
模式強制
Delta Lake使用模式規則來確保寫入Delta 表的資料符合指定的約束,例如資料型別和唯一性。這有助於防止資料損壞,因為在寫入操作期間會拒絕任何無效資料。
使用 Delta Lake 提高效能
Delta Lake透過多種方式提高了資料湖的效能:
- 資料跳過:Delta Lake 在從Delta 表讀取資料時可以跳過不相關的資料,因此查詢只關注必要的資料,從而加快效能。
- 快取:透過支援 Spark 中的資料快取,Delta Lake 使重複查詢更快,減少了第一次執行後執行它們所需的時間。
- 快速索引:Delta Lake 使用最佳化的索引結構來快速找到所需的資料,從而加快查詢執行速度。
- 查詢最佳化:Delta Lake 與 Spark SQL 協同工作,透過使用 Spark 的內建最佳化功能來加快查詢速度並提高效率。
- 謂詞下推:過濾器直接應用於儲存層,這意味著需要處理的資料更少,從而加快查詢執行速度。
- 列裁剪:僅讀取所需的列,減少資料處理並加快查詢速度。
- 向量化執行:Delta Lake 使用單個 CPU 指令處理多個數據點,從而提高 CPU 效能和整體速度。
- 並行處理:Delta Lake 支援並行執行任務,允許同時處理多個操作,從而獲得更快的結果。
- Z 順序:Delta Lake 使用 Z 順序索引來組織資料,以便更快、更最佳化地訪問,從而提高查詢速度。
資料湖倉架構
資料湖倉架構透過結合資料湖和資料倉庫的功能,使資料管理更加輕鬆。
在資料湖倉中,資料經過與其他系統相同的階段:攝取、儲存、轉換、建模和視覺化。但是,它沒有使用單獨的資料湖和關係型資料倉庫,而是將所有內容都儲存在一個使用 Delta Lake 技術的資料湖中。
這種方法解決了傳統資料系統中的許多常見問題。
- 可靠性:保持資料湖和關係型資料倉庫之間的資料一致性可能很困難,資料傳輸可能會失敗或導致資料不匹配。使用資料湖倉,無需在系統之間複製資料,從而消除了這些問題。
- 資料陳舊:關係型資料倉庫中的資料可能會過時,因為只在設定的時間更新,導致報告不一致。資料湖倉將所有資料儲存在一個地方,確保資料始終是最新的。
- 高階分析支援:關係型資料倉庫不適合高階分析(例如 AI 和機器學習),因為這些工具更適合在資料湖中找到的原始資料。資料湖倉使資料科學家更容易直接處理他們需要的資料。
- 成本效益:管理關係型資料倉庫和資料湖的成本很高。資料湖倉將所有內容儲存在一個地方,降低了儲存和計算成本。
- 資料治理:如果資料儲存在單獨的系統中,則難以管理訪問和維護質量。資料湖倉使用資料的單個副本,簡化了治理和安全性。
- 複雜性:管理資料湖和關係型資料倉庫都需要專門的技能,因此更加複雜。資料湖倉透過將所有內容整合到一個平臺中來降低這種複雜性。
如果跳過關係型資料倉庫會怎樣?
與使用關係型資料倉庫相比,選擇資料湖倉可能是一個不錯的選擇,尤其是在資料集較小的情況下。使用資料湖倉(例如 Delta Lake),你只需要一個數據儲存系統,從而節省儲存和計算成本。你無需將資料複製到關係型資料倉庫,這降低了成本和複雜性。
然而,也有一些重要的挑戰需要考慮。
- 效能:由於索引、快取和查詢最佳化等功能,關係型資料倉庫在處理複雜查詢方面速度更快。Delta Lake 的效能可能無法與之匹敵,尤其是在大型資料集的情況下。
- 安全性:關係型資料倉庫提供了更好的安全功能,例如行級安全、加密和審計,而 Delta Lake 缺乏這些功能。
- 併發性:關係型資料倉庫可以同時處理更多的使用者和任務。Delta Lake 在使用者數量較多的情況下可能會遇到問題。
- 元資料管理:關係型資料倉庫更容易管理資料資訊(元資料),因為它是系統的一部分。Delta Lake 的基於檔案的系統可能會導致元資料方面的問題。
- 學習曲線:習慣使用關係型資料倉庫的人可能會發現 Delta Lake 的系統更難使用,可能需要額外的培訓。
何時使用 Delta Lake?
在以下情況下使用 Delta Lake:
- 查詢對時間不敏感:如果你不需要即時結果,Delta Lake可以以較低的成本提供良好的效能。
- 不需要高階功能:如果你不需要複雜查詢最佳化、快速連線或特殊索引等功能,Delta Lake是一個更簡單、更經濟的選擇。
- 資料集較小:對於較小的資料,Delta Lake執行良好,避免了完整的關係型資料倉庫設定的複雜性。
- 成本優先:如果降低成本至關重要,Delta Lake可以幫助你節省儲存和計算成本,尤其是在使用無伺服器選項的情況下。
簡而言之,當您優先考慮簡單性、成本節約和良好效能而不是高效能或高階分析時,Delta Lake是一個不錯的選擇。
關係型服務層
Delta Lake不像傳統的關係型資料倉庫那樣具有預定義的元資料或關係。相反,它使用讀取時模式 (schema-on-read) 方法,在讀取資料時應用模式,而不是在儲存資料時。
為了使資料更容易理解,你需要建立一個關係型服務層。此層將資料與其元資料鏈接起來,並定義不同資料片段之間的關係。你可以使用以下方法構建它:
- SQL檢視
- 報表工具
- Apache Hive 表
- 臨時 SQL 查詢
設定完成後,你可以像在關係型資料倉庫中一樣使用資料,而無需知道它儲存在Delta Lake中。
然而,也有一些挑戰:
- 元資料可能並不總是與資料完全匹配。
- 不同的層可能指向相同的資料,但元資料不一致,這可能會導致錯誤或混淆。
資料湖倉的用例
資料湖倉在許多場景中都很有用,包括:
- 商業分析:公司使用資料湖倉來跟蹤銷售趨勢,瞭解客戶偏好,並就關注哪些產品或補充庫存做出更明智的決策。
- 科學研究:研究人員將他們的資料儲存和共享在資料湖倉中,幫助他們與他人合作,並在他們的研究中發現關鍵模式或趨勢。
- 醫療保健管理:醫院使用資料湖倉來整理病人記錄,監測治療效果,並管理醫院資源,例如醫療用品。