隨著資料量的爆炸性增長,傳統的集中式資料管理模式面臨越來越大的挑戰。資料網格(Data Mesh)作為一種新的分散式資料管理架構,應運而生。它將資料所有權和處理責任下放至各個領域團隊,提升資料的敏捷性和可用性。這種架構的轉變需要重新思考資料平台的定位,從集中式服務提供者轉變為自助服務平台的提供者,賦能領域團隊自主管理和使用資料。資料網格的實施需要關注資料產品化、領域驅動設計以及平台化的基礎設施建設,以確保資料的品質、一致性和安全性。
資料網格(Data Mesh)架構的未來趨勢
在資訊技術的演進過程中,我們曾經歷過從集中式系統轉向分散式系統的變革。早期的主機(Mainframes)代表著集中式 IT 系統,所有處理工作都由中央團隊負責。接著,在 1990 年代,企業開始採用部門級的伺服器和系統,決策權下放到部門層級,導致了孤立的系統和資料函式庫。為了整合這些資料,人們引入了資料倉儲(Data Warehouse)和資料湖(Data Lake)的概念,將資料重新集中管理。
在這種架構下,資料工程師通常隸屬於中央團隊,負責從各部門收集資料,將其匯入中央資料倉儲,並進行必要的處理。處理後的資料會被載入資料集市(Data Mart),供部門層級的資料分析師進行分析。
然而,目前又出現了一種新的趨勢,即將資料控制權從集中式管理轉向分散式管理,但這次的分散式管理帶有新的特點。2019 年 5 月,ThoughtWorks 的首席技術顧問 Zhamak Dehghani 在其部落格文章中提出了「資料網格」(Data Mesh)架構的概念,引起了業界對集中式資料工程團隊模式的重新思考。
網域導向的資料分解與所有權
Dehghani 在文章中主張,與其將來自業務網域的資料匯入中央管理的資料湖,不如讓各個業務網域自行託管和提供與其網域相關的分析資訊,供其他業務部門使用。這裡所謂的業務網域,是指擁有相關操作資料的業務團隊。例如,在房地產業務中,可能有一個團隊負責所有房源清單的管理,他們收集每處房源的詳細資訊,並透過 API(如 getListingPrice API 呼叫,傳回房源的掛牌價格)將這些操作資料提供給業務的其他部分。
傳統上,這些團隊可能會將包含所有房源清單的資料函式庫提供給中央資料工程團隊,用於資料擷取。然而,Dehghani 認為,擁有操作資料的團隊也應該是相關網域分析資料的所有者。這可能涉及,例如,每天為其他團隊提供所有房源清單的快照,或建立與房源相關的變更事件流(新掛牌、移除掛牌、修改掛牌等)。
資料與產品思維的融合
Dehghani 提出,為了使資料網格模型成功,網域資料團隊需要將產品思維應用於他們提供的資料集。即,他們應該將為其他業務部門建立的分析資料視為一種產品。他們需要了解消費者對這些資料的需求,就像產品經理向客戶徵求反饋和需求以制定產品路線圖一樣。
這些網域資料團隊還需要確保他們的資料能夠被其他資料消費者在業務中發現,並以符合組織標準的方式存取。網域資料團隊應該提供後設資料,如架構資訊,以最佳化地讓資料消費者使用所提供的資料資產。為了實作這一點,網域資料團隊需要新的角色,如資料產品負責人和資料工程師,而不是僅僅依賴沒有特定網域知識的集中式資料工程師。
資料與自助服務平台設計的融合
雖然這種方法採用了分散式設計來管理網域資料,但這並不意味著不能在資料網格架構中使用集中式的資料處理平台。你不會希望每個網域團隊都自行建立資料工程處理、資料儲存、協調等基礎設施。因此,你可能仍然會有一個集中式團隊來建立作為平台的資料基礎設施。然而,這個平台應該是與網域無關的,即不應包含任何特定於網域的邏輯。該平台還應該以自助服務的方式為網域團隊提供資料服務,這樣他們就不需要依賴資料平台團隊來建立新的資料工程管線。
資料網格實作解密:
- 分散式所有權:每個業務網域負責其自身的分析資料,有助於提高資料品質和相關性。
- 產品思維:將分析資料視為產品,能夠更好地滿足消費者的需求。
- 自助服務平台:集中式平台提供基礎設施和服務,使網域團隊能夠自助建立和管理他們所需的資料管線。
此圖示展示了業務網域如何透過網域資料團隊提供分析資料給其他部門,同時利用集中式自助服務平台來建立和管理所需的資料管線。
資料網格架構的未來趨勢與實務應用
在探討資料網格(Data Mesh)架構的未來趨勢時,我們需要關注其核心概念和實務應用。資料網格是一種去中心化的資料管理方法,旨在將資料所有權和處理責任從集中式團隊轉移到領域團隊(Domain Teams)。這種架構鼓勵資料的自治和自助服務,同時保持資料的治理和控制。
資料網格的核心功能
一個成功的資料網格架構需要具備以下核心功能:
- 提供大資料處理系統,例如受管理的 Spark 環境,讓領域資料團隊可以輕鬆存取。
- 建立中央目錄,讓領域資料團隊可以發布其可用資料集。
- 實施企業治理標準和控制,例如識別和管理個人識別資訊(PII)資料、代幣化資料等。
- 提供存取控制系統,讓其他領域團隊可以請求存取特定資料集,並在獲得資料所有者批准後授予存取許可權。
資料網格的實務應用
在實際應用中,組織可能會根據自己的需求和限制實施資料網格架構的不同版本。例如,一家公司可能會使用集中式團隊建立一個類別似於傳統資料湖的資料平台,但鼓勵每個業務部門僱用自己的資料工程師團隊。
程式碼範例:使用 AWS 服務建立資料網格
import boto3
# 建立 S3 使用者端
s3 = boto3.client('s3')
# 建立 DMS 使用者端
dms = boto3.client('dms')
# 建立 Glue 使用者端
glue = boto3.client('glue')
# 建立 Step Functions 使用者端
step_functions = boto3.client('stepfunctions')
# 定義資料處理流程
def process_data(bucket_name, object_key):
# 從 S3 下載資料
s3.download_file(bucket_name, object_key, 'data.csv')
# 使用 Glue 處理資料
glue.start_job_run(JobName='data-processing-job')
# 使用 Step Functions 協調資料處理流程
step_functions.start_execution(stateMachineArn='data-processing-state-machine')
#### 內容解密:
此程式碼範例展示瞭如何使用 AWS 服務建立資料網格架構。首先,我們建立了 S3、DMS、Glue 和 Step Functions 的使用者端。然後,我們定義了一個資料處理流程,使用 S3 下載資料,使用 Glue 處理資料,並使用 Step Functions 協調資料處理流程。
清理 AWS 帳戶
在完成本文的練習後,您可能需要清理您的 AWS 帳戶,以避免不必要的費用。您可以按照以下步驟清理您的 AWS 帳戶:
- 登入 AWS Billing 控制檯,檢視您的帳單詳情。
- 檢查您的帳單詳情,找出仍在產生費用的資源。
- 如果您不再需要這些資源,請刪除它們,以避免不必要的費用。
AWS 帳戶清理流程
@startuml
skinparam backgroundColor #FEFEFE
skinparam componentStyle rectangle
title 資料網格架構未來趨勢與實務應用
package "Rust 記憶體管理" {
package "所有權系統" {
component [Owner] as owner
component [Borrower &T] as borrow
component [Mutable &mut T] as mutborrow
}
package "生命週期" {
component [Lifetime 'a] as lifetime
component [Static 'static] as static_lt
}
package "智慧指標" {
component [Box<T>] as box
component [Rc<T>] as rc
component [Arc<T>] as arc
component [RefCell<T>] as refcell
}
}
package "記憶體區域" {
component [Stack] as stack
component [Heap] as heap
}
owner --> borrow : 不可變借用
owner --> mutborrow : 可變借用
owner --> lifetime : 生命週期標註
box --> heap : 堆積分配
rc --> heap : 引用計數
arc --> heap : 原子引用計數
stack --> owner : 棧上分配
note right of owner
每個值只有一個所有者
所有者離開作用域時值被釋放
end note
@enduml此圖示展示了清理 AWS 帳戶的流程。您需要登入 AWS Billing 控制檯,檢視您的帳單詳情,檢查仍在產生費用的資源,並刪除不再需要的資源。
結束您學習旅程的第一部分
關閉AWS帳戶的步驟
在右上角,選擇您帳戶號碼(或設定的帳戶別名)旁邊的下拉選單。從這個下拉選單中,選擇我的帳戶: 圖14.5 – 在AWS管理主控台中存取「我的帳戶」畫面
滾動到「我的帳戶」頁面的底部。閱讀並確保您理解每個核取方塊旁邊的文字,如果您理解並同意,請點選相關的核取方塊。然後,點選關閉帳戶: 圖14.6 – AWS關閉帳戶確認頁面
在彈出的對話方塊中,點選關閉帳戶以確認您要關閉您的帳戶。
資料工程的未來
資料工程是一個令人興奮的角色,承諾將繼續提供有趣的挑戰、持續的學習機會,以及在幫助組織從其資料資產中取得最大價值方面的重要性不斷增加。而雲端是一個構建資料工程管線的令人興奮的地方。
此外,AWS在傾聽客戶需求並根據客戶需求持續創新方面有著良好的記錄。AWS服務的發展非常迅速,因此請做好準備,迎接這場激動人心的旅程。
如果您是AWS上的資料工程新手,那麼這本文只是您漫長而有趣的旅程的開始。實際經驗和在工作中學習的內容遠遠超過任何一本文或一系列書籍所能涵蓋的範圍。其他資料工程師的經驗、同行交流以及諸如播客、YouTube影片和部落格等資源,都將成為您旅程中有用的工具。讓這本文的結尾成為您學習AWS資料工程旅程的第一章的結束。
探索更多資源
Packt.com
訂閱我們的線上數點陣圖書館,即可完全存取超過7,000本文籍和影片,以及業界領先的工具,幫助您規劃個人發展並推動您的職業生涯。有關更多資訊,請造訪我們的網站。
為什麼訂閱?
- 花費更少時間學習,更多時間編碼,擁有來自超過4,000位行業專業人士的實用電子書和影片
- 透過專為您開發的技能計劃改善您的學習
- 每月取得一本免費電子書或影片
- 完全可搜尋,輕鬆存取重要資訊
- 複製、貼上、列印和書籤內容
您可能喜歡的其他書籍
使用Amazon Athena進行無伺服器分析
作者:Anthony Virtuoso, Mert Turkay Hocanin, Aaron Wishnick ISBN: 9781800562349
- 保護和管理查詢資料的成本
- 使用Athena ML和使用者定義函式(UDF)為報告新增進階功能
- 編寫自己的Athena聯結器以整合自訂資料來源
- 使用AWS Glue Crawlers在S3上發現資料集
- 將Amazon Athena整合到您的應用程式中
- 設定身份和存取管理(IAM)策略,以限制對Glue資料目錄中表格和資料函式庫的存取
- 將Amazon SageMaker筆記本新增到您的Athena查詢中
- 掌握使用Athena進行ETL管線的方法
使用Amazon Kinesis進行可擴充套件的資料串流
作者:Tarik Makota, Brian Maguire, Danny Gagne, Rajeev Chakrabarti ISBN: 9781800565401
- 掌握資料串流、解耦設計和即時串流處理
- 瞭解KFH與其他Kinesis服務的不同之處
- 使用CloudWatch指標監控和擴充套件KDS
- 使用身份和存取管理(IAM)保護KDA
- 將KVS佈署為基礎設施即程式碼(IaC)
- 將Redshift、Dynamo Database和Splunk等服務整合到Kinesis中
分享您的想法
現在您已經完成了《使用AWS進行資料工程》,我們非常希望聽到您的想法!如果您在Amazon上購買了這本文,請點選此處直接進入這本文的Amazon評論頁面並分享您的反饋,或在您購買的網站上留下評論。
您的評論對我們和技術社群非常重要,將幫助我們確保我們提供卓越的內容品質。
索引
A
- ACID交易
- 原子性 212
- 一致性 212
- 永續性 212
- 隔離性 212
- 資料湖中的資料 429
- Airflow Connections 304
- Airflow Hooks 304
- Airflow Operators 305
- Airflow Sensors 305
- Airflow Tasks 305
- 飛機健康管理(AHM)171
- Amazon AppFlow
- 大約 406
- 從SaaS服務擷取資料 60, 61
- Amazon Athena
- 大約 48, 200, 236, 327, 329, 353
- 使用查詢資料 191
- 檔案格式最佳化 330
- 版面組態最佳化 330
- 資料湖中的SQL查詢概覽 77
- 最佳化查詢的技巧和訣竅 330
- AmazonAthenaFullAccess 328
- Amazon Athena查詢聯盟
- 外部資料來源查詢聯盟化 337
- Amazon Athena工作群組
- 管理成本 341
- 建立 344-346
- 資料使用控制,實施強制執行機制343 對群組使用者實施強制設定342 管理治理341
- Amazon Comprehend 大約208 從文字中提取見解402,403 評論審查407 試驗解決方案413-415
- Amazon Comprehend Medical403
- Amazon Database Migration Service(DMS)44、52-54、209
- Amazon DataSync 從本地儲存擷取資料總覽62,63
- Amazon DynamoDB78
- Amazon EC2238
- Amazon Elastic File System(EFS)395
AWS 雲端技術索引
AWS 提供了一系列豐富的雲端服務,涵蓋了大資料處理、機器學習、資料分析等多個領域。本將對 AWS 的主要服務進行索引和介紹,幫助讀者快速瞭解 AWS 的技術堆疊。
大資料處理服務
AWS 提供了多種大資料處理服務,包括 Amazon EMR、AWS Glue 等。
Amazon EMR
Amazon EMR(Elastic MapReduce)是一項根據雲端的服務,用於處理大規模資料集。它支援 Hadoop 生態系統,能夠處理 PB 級別的資料。
AWS Glue
AWS Glue 是一項無伺服器的 Spark 服務,用於資料整合、轉換和載入。它提供了自動化的資料目錄管理、ETL(Extract, Transform, Load)作業和資料品品檢查等功能。
機器學習和人工智慧服務
AWS 提供了多種機器學習和人工智慧服務,包括 Amazon SageMaker、Amazon Rekognition 等。
Amazon SageMaker
Amazon SageMaker 是一項完全託管的機器學習服務,提供了一站式的機器學習解決方案,包括資料準備、模型訓練、模型佈署等。
Amazon Rekognition
Amazon Rekognition 是一項根據深度學習的影像和影片分析服務,能夠識別影像和影片中的物件、人臉和文字等。
資料分析服務
AWS 提供了多種資料分析服務,包括 Amazon QuickSight、Amazon Athena 等。
Amazon QuickSight
Amazon QuickSight 是一項快速、雲端原生、無伺服器的商業智慧服務,能夠提供互動式的儀錶板和報表。
Amazon Athena
Amazon Athena 是一項無伺服器的查詢服務,能夠對儲存在 Amazon S3 中的資料進行 SQL 查詢。
安全和身份管理服務
AWS 提供了多種安全和身份管理服務,包括 AWS IAM、AWS KMS 等。
AWS IAM
AWS IAM(Identity and Access Management)是一項身份和存取管理服務,能夠幫助使用者管理 AWS 資源的存取許可權。
AWS KMS
AWS KMS(Key Management Service)是一項金鑰管理服務,能夠幫助使用者建立和管理加密金鑰。
其他服務
AWS 還提供了多種其他服務,包括 Amazon S3、Amazon Kinesis 等。
Amazon S3
Amazon S3(Simple Storage Service)是一項物件儲存服務,能夠儲存和管理大量的資料。
Amazon Kinesis
Amazon Kinesis 是一項即時資料處理服務,能夠捕捉、處理和分析即時資料流。
資料索引最佳化與大資料分析
大資料的崛起與技術挑戰
大資料(Big Data)作為企業的重要資產,其價值日益凸顯。大資料架構師(Big Data Architect)在處理和分析大資料方面扮演著關鍵角色。隨著資料量的爆炸性增長,如何有效地儲存、處理和分析這些資料成為了一項重大挑戰。
資料湖與資料倉儲的架構設計
資料湖(Data Lake)是一種儲存大量原始資料的系統,能夠處理結構化、半結構化和非結構化資料。資料湖的邏輯架構包括:
- 儲存層(Storage Layer):負責儲存原始資料。
- 目錄和搜尋層(Cataloging and Search Layer):提供資料的元資料管理。
- 擷取層(Ingestion Layer):負責將資料匯入資料湖。
- 處理層(Processing Layer):對資料進行轉換和處理。
- 消費層(Consumption Layer):提供資料給最終使用者使用。
資料治理與安全性
在處理大資料時,資料治理(Data Governance)和安全性至關重要。企業需要確保資料的完整性、可用性和保密性。常見的資料治理措施包括:
- 資料目錄化(Data Cataloging):建立資料目錄以便於管理和搜尋。
- 存取控制(Access Control):限制對敏感資料的存取許可權。
- 資料加密(Data Encryption):保護資料免受未授權的存取。
使用AWS Lake Formation進行資料治理
AWS Lake Formation 是一種完全託管的服務,能夠簡化資料湖的建立、保護和分享。透過 Lake Formation,可以輕鬆地對資料進行分類別、清理和轉換,並確保資料的安全性。
資料分析與視覺化
為了從大資料中提取有價值的洞察,企業需要進行資料分析。常見的分析工具包括 Amazon Athena、AWS Glue 和 Amazon Redshift。這些工具能夠幫助企業快速查詢和分析資料。
資料視覺化的重要性
有效的資料視覺化能夠幫助業務使用者更好地理解資料,從而做出更明智的決策。Amazon QuickSight 是一種快速、雲端原生、無伺服器的商業智慧服務,能夠輕鬆地建立和發布互動式儀錶板。
資料工程與DataOps
隨著大資料技術的發展,DataOps 成為了一種新的方法論,旨在改善資料工程團隊的工作效率和協作。DataOps 強調自動化、持續整合和持續交付,以加快資料產品的開發和佈署。
未來趨勢與挑戰
大資料領域不斷演進,新的技術和挑戰不斷出現。企業需要保持敏捷性和創新能力,以應對不斷變化的市場需求和技術挑戰。
程式碼範例:使用Amazon Athena查詢S3中的資料
SELECT * FROM "my_dataset"."my_table"
WHERE year = '2023' AND month = '01';
內容解密:
此查詢陳述式使用 Amazon Athena 查詢存放在 Amazon S3 中的資料表 my_table。透過指定 year 和 month 的條件,篩選出特定時間範圍內的資料。這展示瞭如何利用 Athena 進行即席查詢和分析。
資料工程與分析的進階技術
資料視覺化開發者的角色
資料視覺化開發者是資料工程團隊中的重要角色,負責將複雜的資料轉化為易於理解的視覺化圖表。他們需要具備資料分析、視覺化工具(如Tableau、Power BI)以及程式設計(例如Python、R)的技能。
資料倉儲的設計與最佳化
資料倉儲(Data Warehouse)是企業用於儲存和管理資料的重要基礎設施。設計一個高效能的資料倉儲需要考慮多個因素,包括資料模型、儲存架構、查詢最佳化等。
資料模型的選擇
資料模型是資料倉儲設計的基礎。常見的資料模型包括星型模型(Star Schema)和雪花模型(Snowflake Schema)。星型模型透過一個中心事實表(Fact Table)連線多個維度表(Dimension Table),適合大多數的分析查詢。雪花模型則進一步將維度表正規化,減少資料冗餘,但可能增加查詢的複雜度。
儲存架構的最佳化
儲存架構的選擇直接影響資料倉儲的效能和成本。Amazon Redshift是一種流行的雲端資料倉儲解決方案,支援多種節點型別和儲存選項。選擇合適的節點型別和組態對於最佳化查詢效能和成本至關重要。
資料湖與資料倉儲的整合
資料湖(Data Lake)是一種儲存原始資料的儲存函式庫,可以儲存結構化、半結構化和非結構化的資料。將資料湖與資料倉儲整合,可以實作資料的全面管理和分析。
資料湖的優勢
- 靈活性:可以儲存各種格式的資料。
- 可擴充套件性:支援大規模資料儲存和分析。
整合策略
- 使用AWS Glue進行資料整合:AWS Glue是一種全託管的ETL(Extract, Transform, Load)服務,可以輕鬆地將資料從資料湖轉移到資料倉儲。
- 利用Amazon Athena進行查詢:Amazon Athena是一種無伺服器的查詢服務,可以直接在Amazon S3上的資料湖中執行SQL查詢。
機器學習與AI在資料分析中的應用
機器學習(Machine Learning, ML)和人工智慧(Artificial Intelligence, AI)正在改變資料分析的方式。它們可以幫助企業從大量資料中發現隱藏的模式和趨勢。
常見應用場景
- 預測分析:利用歷史資料預測未來的趨勢。
- 異常檢測:識別資料中的異常模式。
- 自然語言處理(NLP):分析文字資料以提取有價值的資訊。
資料治理與安全管理
隨著資料量的增加,資料治理和安全管理變得越來越重要。企業需要確保其資料資產的安全性和合規性。
資料治理的最佳實踐
- 實施嚴格的存取控制:確保只有授權人員可以存取敏感資料。
- 使用加密技術:保護資料在傳輸和儲存過程中的安全。
- 定期進行安全稽核:發現並修復潛在的安全漏洞。
索引分析與技術深度探討
在現代資料處理和分析的領域中,資料的儲存、處理和最佳化是至關重要的環節。本篇文章將探討資料索引、最佳化檔案格式、資料查詢最佳化等技術主題,並結合真實案例進行分析。
資料索引的重要性
資料索引是提高資料查詢效率的關鍵技術。良好的索引設計可以顯著減少查詢所需的時間,特別是在處理大規模資料集時。索引可以根據不同的資料特性和查詢需求進行最佳化,從而提升整體系統的效能。
最佳化檔案格式
將原始資料檔案轉換為最佳化的檔案格式(如 Parquet)是資料處理中的常見做法。Parquet 檔案格式具有多項優點,包括高效的壓縮機制和最佳化的資料儲存結構,能夠顯著提升資料讀取效率。
Parquet 檔案的優勢
- 高效壓縮:Parquet 支援多種壓縮演算法,可以有效減少儲存空間。
- 列式儲存:Parquet 採用列式儲存結構,適合於分析型查詢,能夠減少不必要的資料讀取。
- 支援複雜資料型別:Parquet 支援巢狀資料結構,能夠有效地儲存和處理複雜資料。
最佳化 SQL 查詢
撰寫高效的 SQL 查詢陳述式對於提升資料處理效率至關重要。最佳化 SQL 查詢可以透過多種方式實作,包括合理使用索引、避免不必要的全表掃描、最佳化查詢邏輯等。
SQL 查詢最佳化的實踐
- 使用適當的索引:根據查詢條件建立合適的索引,可以顯著提升查詢效率。
- 避免使用
SELECT *:僅檢索需要的欄位,可以減少資料傳輸量和處理時間。 - 最佳化查詢邏輯:簡化查詢邏輯,避免複雜的子查詢和連線操作。
資料湖與資料倉儲的整合
現代資料架構中,資料湖和資料倉儲扮演著不同的角色。資料湖適合儲存原始資料,而資料倉儲則用於高效的資料分析和查詢。兩者的整合可以實作資料的最佳利用。
資料湖的優勢
- 儲存原始資料:資料湖能夠儲存大量的原始資料,支援多種資料格式。
- 靈活的資料處理:支援多種資料處理框架,能夠靈活地處理和分析資料。
資料倉儲的優勢
- 高效的查詢效能:資料倉儲經過最佳化,能夠提供高效的查詢效能。
- 支援複雜分析:支援複雜的分析和報告需求,能夠滿足業務決策的需求。
AWS Lake Formation 的應用
AWS Lake Formation 是一種完全託管的服務,能夠簡化資料湖的建立、保護和分享。透過 Lake Formation,可以輕鬆地收集、清理和轉換資料,並將其存入資料湖中。
Lake Formation 的主要功能
- 簡化資料整合:Lake Formation 能夠自動化資料整合過程,簡化資料處理流程。
- 增強資料安全性:提供細粒度的存取控制,確保資料的安全性和合規性。
- 支援多種資料來源:能夠連線多種資料來源,實作資料的全面整合。