很重要的一點,“數(shù)據(jù)工程”正在發(fā)展出新一代,與互聯(lián)網(wǎng)革命一樣,要發(fā)展出新的工具、新的方法,新的套路。也正是這種不斷推陳出新的“新技術(shù)”的出現(xiàn)才使互聯(lián)網(wǎng)以及計算機(jī)技術(shù)推動社會的進(jìn)步和發(fā)展。
當(dāng)商業(yè)智能工程師的工作逐漸超越了“經(jīng)典”的商業(yè)智能,就開始創(chuàng)造出了新的的學(xué)科——數(shù)據(jù)工程師。
而新學(xué)科的出現(xiàn),則意味著要開發(fā)新技能、新的工作方式、新的工具,而這些往往要背棄傳統(tǒng)方法。
數(shù)據(jù)科學(xué)與數(shù)據(jù)工程
數(shù)據(jù)科學(xué)(Data Science)當(dāng)下在經(jīng)歷“青春期”,自我肯定和定義自身的階段。
數(shù)據(jù)工程(Data Engineering)比數(shù)據(jù)科學(xué)更為年輕些,也正在經(jīng)歷類似的事情。(下統(tǒng)稱DE)
DS 與 DE 相同的部分:codeing, 深入分析,數(shù)據(jù)可視化
但是DE比DS更接近軟件工程(有爭議),DE還需要進(jìn)行工程建模、基礎(chǔ)設(shè)施、框架和服務(wù)。
DE還不成熟的理解:可以被視作是商業(yè)智能、數(shù)據(jù)倉庫以及部分軟件工程的超集,同時集成了“大數(shù)據(jù)”分布式系統(tǒng)、擴(kuò)展Hadoop生態(tài)系統(tǒng)、流處理和大規(guī)模計算的概念。
對于較小的公司,沒有數(shù)據(jù)基礎(chǔ)架構(gòu)團(tuán)隊,僅是設(shè)置和運營公司的數(shù)據(jù),常用的平臺有Hadoop,Hive,HBase,Spark等。
對于大公司而言,對數(shù)據(jù)基礎(chǔ)架構(gòu)團(tuán)隊的需求增長,則開始創(chuàng)建正式的角色來管理此類工作,自動化數(shù)據(jù)工程流程,解決更高級別的問題。同時,也出現(xiàn)了更好的自助服務(wù)工具,不再僅僅是制作和維護(hù)報告、儀表板等簡單的任務(wù)。
數(shù)據(jù)倉庫技術(shù)(ETL)的變化
代碼允許任意級別的抽象,允許以熟悉的方式的進(jìn)行所有邏輯操作,與源代碼一起進(jìn)行良好的集成,易于版本和寫作。
在過往,ETL工具演變?yōu)閳D形界面,這是數(shù)據(jù)處理歷史上的一個彎路。抽象“數(shù)據(jù)處理”,在計算和存儲上都有一定的復(fù)雜性,但解決方案不是將ETL的原語(如聚合、過濾等)變成以“拖放方式”展現(xiàn),而是更加抽象的級別。
比如,在現(xiàn)代數(shù)據(jù)環(huán)境中所需抽象的一個例子是A/B測試框架中的實驗配置:什么是實驗?什么是相關(guān)的治療方法?應(yīng)該暴露多少百分比的用戶?每項實驗預(yù)計會影響哪些指標(biāo)?實驗什么時候生效?
我們現(xiàn)在有一個框架,可以接受高級的、精確的,然后執(zhí)行復(fù)雜的統(tǒng)計計算,并提供計算結(jié)果。顯然,這個抽象的輸入參數(shù)不是ETL提供的。
所以,對于現(xiàn)代數(shù)據(jù)工程師來說,傳統(tǒng)的ETL工具在很大程度上已經(jīng)過時,因為邏輯無法用代碼表示,這導(dǎo)致工具不能直觀的表達(dá)所需的抽象。這迫使數(shù)據(jù)工程師的角色要來重新定義“ETL”,并且建立一套全新的工具、方法和約束等,以及新一代的“數(shù)據(jù)工程師”。
數(shù)據(jù)建模發(fā)生的變化
經(jīng)典、傳統(tǒng)的建模技術(shù),定義了我們數(shù)據(jù)建模方法,進(jìn)行數(shù)據(jù)倉庫相關(guān)的分析工作。現(xiàn)在,存儲和計算比以往任何時候都便宜,隨著分布式數(shù)據(jù)庫的出現(xiàn),線性擴(kuò)展等,稀缺資源就是“工程時間”。
數(shù)據(jù)建模技術(shù)發(fā)生的變化:
1、“非規(guī)范化”的進(jìn)一步發(fā)展:維護(hù)Surrogate keys(主鍵)可能會很困難,而且會降低事務(wù)表(fact tables)的可讀性。使用自然的、人類可讀的鍵和緯度屬性變得越來越普遍,這減少了分布式數(shù)據(jù)庫鏈接的需求,這個需求是很高昂的。
像ORC,Parquet等序列格式化,或是Vertica等數(shù)據(jù)庫引擎,支持編碼和壓縮,可以解決“非規(guī)范”的大部分性能損失,這些系統(tǒng)已經(jīng)被教導(dǎo)自行規(guī)范數(shù)據(jù)存儲。
2、blob:現(xiàn)在數(shù)據(jù)庫通過本機(jī)和函數(shù)對blob的支持越來越多,這將融入到數(shù)據(jù)建模中,開啟新的動作,允許事務(wù)表在需要時一次存儲多個。
3、動態(tài)模式:map的出現(xiàn)減少、文檔存儲日益普及,對數(shù)據(jù)庫中blob的支持,于是,在不執(zhí)行DML的情況下,發(fā)展數(shù)據(jù)庫模式變得更容易,采用迭代方法進(jìn)行存儲更容易,并且無需在開發(fā)之前獲得完全的共識和支持。
4、 系統(tǒng)化快照維度:存儲每個ETL調(diào)度周期的維度的完整副本,通常在不同的表分區(qū)當(dāng)中。用一種簡單的方法,作為處理緩慢變化的維度(SCD),在編寫ETL和查詢時都很容易掌握。
將維度的屬性反規(guī)范化到事實表中,這方便在事務(wù)處理時跟蹤其值,也很容易,且相對便宜。
反觀,復(fù)雜的SCD建模技術(shù)并不直觀,降低了可訪問性。
5、一致性:在數(shù)據(jù)環(huán)境中,一致性一直都是非常重要的,但是數(shù)據(jù)倉庫需要快速移動,且有更多的團(tuán)隊被邀請作這項工作,所以不是很必要,更多情況下是進(jìn)行權(quán)衡。
可以說,隨著計算周期的商品化,以及更多的人精通數(shù)據(jù),不需要在倉庫中預(yù)先計算和存儲結(jié)果。比如,我們可以有復(fù)雜的Spark,該任務(wù)只能按需計算復(fù)雜分析,而不能安排成為倉庫的一部分。
角色與責(zé)任
數(shù)據(jù)倉庫是專門用于查詢和分析的事物數(shù)據(jù)的副本
數(shù)據(jù)倉庫是面向主題的、集成的、時變的和非易失性的數(shù)據(jù)集合,以支持管理層的決策過程
數(shù)據(jù)倉庫與以往一樣重要,數(shù)據(jù)工程師的焦點是數(shù)據(jù)倉庫,負(fù)責(zé)其構(gòu)建、運營等方方面面,同時還與數(shù)據(jù)科學(xué)家、分析師和軟件工程師參與其建設(shè)和運營。
數(shù)據(jù)工程團(tuán)隊通常會在數(shù)據(jù)倉庫中擁有經(jīng)過認(rèn)證的高質(zhì)量區(qū)域。比如在Airbnb,有“核心”模式,明確定義和測量服務(wù)級別協(xié)議(SLA),嚴(yán)格遵循命名約定,業(yè)務(wù)員數(shù)據(jù)和文檔質(zhì)量最高,相關(guān)的管道代碼遵循一套明確的定義。
通過數(shù)據(jù)對象的標(biāo)準(zhǔn)、最佳實踐和認(rèn)證過程的定義,這些成為數(shù)據(jù)工程團(tuán)隊很重要的組成部分,成為“卓越中心”。團(tuán)隊可以發(fā)展為分享或領(lǐng)導(dǎo)教育計劃,分享核心競爭力,以幫助其他團(tuán)隊成為數(shù)據(jù)倉庫的更好公民。比如,F(xiàn)acebook有一個數(shù)據(jù)陣營的教育計劃,airbnb在開發(fā)一個類似的數(shù)據(jù)大學(xué)的計劃,數(shù)據(jù)工程師領(lǐng)導(dǎo)會議,教會人們?nèi)绾问炀氄莆諗?shù)據(jù)。
數(shù)據(jù)工程師也是數(shù)據(jù)倉庫的“圖書館員”,編目和組織元數(shù)據(jù),定義一個文件或從倉庫中提取數(shù)據(jù)。在快速發(fā)展、略微混亂的數(shù)據(jù)生態(tài)系統(tǒng)中,元數(shù)據(jù)管理和工具成為現(xiàn)代數(shù)據(jù)平臺的重要組成部分。
性能調(diào)優(yōu)和優(yōu)化
數(shù)據(jù),在當(dāng)下比以往任何時候都更具有挑戰(zhàn)性,公司的數(shù)據(jù)基礎(chǔ)設(shè)施預(yù)算正在不斷增加。這使得數(shù)據(jù)工程師在性能調(diào)優(yōu)和數(shù)據(jù)處理、存儲有劃傷,花費周期越來越合理。在這一領(lǐng)域的預(yù)算很少收縮,因此優(yōu)化通常是實現(xiàn)更多的資源,或嘗試線性化資源利用率和成本的指數(shù)增長。
數(shù)據(jù)工程堆棧的復(fù)雜性跨度很大,呈爆炸式增長,我們可以假設(shè)優(yōu)化這種堆棧和流程的復(fù)雜性,具有同樣變化的挑戰(zhàn)程度。我們只需要很少的努力,就可以輕松獲得巨額的成功,所以這適用遞減收益法。
建議:基礎(chǔ)設(shè)施與公司一起擴(kuò)展,并始終保持資源意識。
數(shù)據(jù)集成
數(shù)據(jù)集成是通過數(shù)據(jù)交換整合業(yè)務(wù)和系統(tǒng)的實踐,與以往一樣重要,且具有挑戰(zhàn)性。在新的標(biāo)準(zhǔn)方式下,我們希望將服務(wù)軟件(如SaaS)生成的數(shù)據(jù),也帶入到我們的倉庫,以便可以根據(jù)其余數(shù)據(jù)進(jìn)行分析。Saas通常擁有自己的分析產(chǎn)品,但缺乏公司其他的數(shù)據(jù),因此需要將其產(chǎn)生的分析數(shù)據(jù),提取回來。
在這樣的情況,Saas產(chǎn)品重新定義參考數(shù)據(jù),而沒有集成和共享。沒有人想在兩個不同的系統(tǒng)中,手動維護(hù)兩個員工或客戶列表,而且在提取數(shù)據(jù)導(dǎo)進(jìn)倉庫時,必須進(jìn)行模糊匹配。
但即使這樣,公司高管沒有真正考慮數(shù)據(jù)集成的挑戰(zhàn),與Saas提供商簽訂協(xié)議,提供商也低估了集成工作量,以促進(jìn)他們的銷售,使數(shù)據(jù)工程師陷入大量且混亂的工作中。Saas api通常設(shè)計不當(dāng),文檔不清晰,而且“敏捷”,也就是說,您可以在不事先通知的情況下,進(jìn)行更改。
服務(wù)
數(shù)據(jù)工程師在更高的抽象層次上運行,在一些情況下,要提供服務(wù)和工具來自動化底層的工作類型,底層的含義是可以手動完成的。
1、數(shù)據(jù)提取:抓取數(shù)據(jù)庫,加載日志,從外部存儲或API獲取數(shù)據(jù)的服務(wù)和工具
2、度量計算:用于計算和匯總參與度,增長或細(xì)分相關(guān)度量的框架
3、異常檢測:自動化數(shù)據(jù)消耗,提醒人們發(fā)生異常事件或趨勢發(fā)生顯著變化。
4、元數(shù)據(jù)管理:允許生成和使用元數(shù)據(jù)的工具,可以輕松地在數(shù)據(jù)倉庫內(nèi)和周圍查找信息。
5、實驗:具有重要的數(shù)據(jù)工程組件,A/B測試和實驗框架
6、儀表:分析記錄事件和與這些事件相關(guān)的屬性,確保上游捕獲高質(zhì)量數(shù)據(jù)有既得利益。
7、會話:專門用于及時了解一系列操作的管道,允許分析人員了解用戶行為
就像軟件工程師一樣,數(shù)據(jù)工程師應(yīng)該不斷尋求自動化他們的工作,構(gòu)建抽象參數(shù),然后做更為復(fù)雜的內(nèi)容。雖然自動化的工作流程的性質(zhì)因環(huán)境而異,但自動化他們的需求基本上都是通用的。
技能
1、SQL
2、數(shù)據(jù)建模技術(shù)
3、ETL設(shè)計:編寫高效、有彈性、可演化的ETL
4、架構(gòu)預(yù)測
-
數(shù)據(jù)工程師
+關(guān)注
關(guān)注
0文章
8瀏覽量
1195
發(fā)布評論請先 登錄
相關(guān)推薦
評論