數(shù)據(jù)開(kāi)發(fā)的技術(shù)提升之道

|0x00 數(shù)據(jù)開(kāi)發(fā)

數(shù)據(jù)開(kāi)發(fā)在大型互聯(lián)網(wǎng)公司中,通常是貼近業(yè)務(wù)的角色,因?yàn)閿?shù)據(jù)相關(guān)的工具,比如開(kāi)發(fā)工具、監(jiān)控工具、血緣工具、質(zhì)量工具,都做的非常完善了,甚至能夠?qū)ν馓峁┥虡I(yè)化產(chǎn)品。在這種情況下,數(shù)據(jù)開(kāi)發(fā)的工作,從偏底層的大數(shù)據(jù)引擎建設(shè),提升到了面向業(yè)務(wù)的數(shù)據(jù)倉(cāng)庫(kù) + 數(shù)據(jù)分析角色,也就是從幕后逐步的走向前臺(tái),最終目標(biāo)是以數(shù)據(jù)科學(xué)家為導(dǎo)向。

在這種情況下,如果論常規(guī)的技術(shù)提升,那么除了精進(jìn)SQL技巧之外,恐怕很難有其他突破的方式,本文就探討一些與數(shù)據(jù)開(kāi)發(fā)相關(guān)的技術(shù),從這些方向可以嘗試進(jìn)行突破,一樣能夠做的非常出彩。

|0x01 數(shù)據(jù)建模

“建?!辈⒎鞘且怀刹蛔兊姆椒?,而是可以進(jìn)行精巧設(shè)計(jì)的“工具”。

數(shù)據(jù)建模本身是一種組織、分析、存儲(chǔ)、應(yīng)用數(shù)據(jù)的方法論。既然是方法論,那么就有衡量好壞的標(biāo)準(zhǔn):性能、成本、效率、質(zhì)量。因此,數(shù)據(jù)建模的工作,就是圍繞這四個(gè)指標(biāo)做出最優(yōu)解而進(jìn)行的努力。

數(shù)據(jù)建模的日常工作,就是通過(guò)宏觀(guān)模型 + 分層模型,做好標(biāo)準(zhǔn)化的模型建設(shè),并通過(guò)報(bào)表、接口、OLAP引擎等產(chǎn)品服務(wù),對(duì)外輸出數(shù)據(jù)價(jià)值。

數(shù)據(jù)建模通常是以“維度建?!睘樗{(lán)本進(jìn)行設(shè)計(jì),部分情況下也會(huì)用E-R、DataValut等模型,但總體情況比較少。值得注意的是,維度建模并不僅僅指數(shù)據(jù)分層,也包括了諸如退化維度、橋接、累計(jì)快照事實(shí)等各種設(shè)計(jì)方法,但這些方法其實(shí)被思考和應(yīng)用的非常少。

建模提升的角度大體可以從兩個(gè)角度進(jìn)行,一個(gè)是解決業(yè)務(wù)問(wèn)題,一個(gè)是解決數(shù)據(jù)結(jié)構(gòu)問(wèn)題。

解決業(yè)務(wù)問(wèn)題,需要考慮質(zhì)量與效率的平衡點(diǎn)。在平時(shí)業(yè)務(wù)的建設(shè)中,業(yè)務(wù)會(huì)吐槽數(shù)據(jù)技術(shù)的一點(diǎn),是遇到類(lèi)似業(yè)務(wù)場(chǎng)景時(shí),總需要技術(shù)自底向上的重新建設(shè)一遍,非常的低效。那么通過(guò)抽象來(lái)實(shí)現(xiàn)多場(chǎng)景的復(fù)用,就是一種解決業(yè)務(wù)問(wèn)題的方式。但還有很多場(chǎng)景,本身就是復(fù)雜、易變的,那么這個(gè)時(shí)候,不論是繞過(guò)公共層,直接上ADS先解決問(wèn)題,或者是設(shè)計(jì)能夠適應(yīng)變化、但反規(guī)范的一些模型結(jié)構(gòu),都是建模水平的體現(xiàn),只要能解決業(yè)務(wù)的痛點(diǎn)問(wèn)題,并在“性能、成本、效率、質(zhì)量”之間取得平衡。

解決數(shù)據(jù)結(jié)構(gòu)問(wèn)題,諸如面對(duì)樹(shù)結(jié)構(gòu)、圖結(jié)構(gòu)等實(shí)體關(guān)系時(shí),如果通過(guò)精巧的模型設(shè)計(jì),來(lái)使用SQL對(duì)數(shù)據(jù)進(jìn)行各種維度、層次的統(tǒng)計(jì),提升復(fù)雜關(guān)系下的開(kāi)發(fā)效率和數(shù)據(jù)準(zhǔn)確性?;蛘呤敲鎸?duì)各種數(shù)據(jù)傾斜、基準(zhǔn)變換、跨分區(qū)、多時(shí)區(qū)等場(chǎng)景下,提升數(shù)據(jù)技巧普適性的方法。這些通過(guò)表的方式來(lái)解決復(fù)雜關(guān)系的能力,也是建模水平的一種體現(xiàn)。

|0x02 數(shù)據(jù)治理

數(shù)據(jù)治理的精髓,是“數(shù)據(jù)資源的增長(zhǎng)不超過(guò)業(yè)務(wù)的增長(zhǎng)”。

盡管我們平時(shí)總把“數(shù)據(jù)治理”掛在嘴邊,但在這個(gè)理論被提出10多年后,依然是目前數(shù)據(jù)領(lǐng)域的熱門(mén)問(wèn)題。解決的方法也很簡(jiǎn)單,就是盡量限制存儲(chǔ)計(jì)算的增長(zhǎng),不論是通過(guò)技術(shù)手段,比如數(shù)據(jù)壓縮、列式存儲(chǔ),還是通過(guò)方法論,比如維度建模、存儲(chǔ)健康分,都能夠延緩數(shù)據(jù)增長(zhǎng)的困境。

但在市場(chǎng)上,專(zhuān)門(mén)研究這方面的理論,其實(shí)并不多。廣為熟知的DAMA給“數(shù)據(jù)治理”下的定義是:數(shù)據(jù)治理是對(duì)數(shù)據(jù)資產(chǎn)管理行使權(quán)力和控制的活動(dòng)集合。DGI則認(rèn)為:數(shù)據(jù)治理是一個(gè)通過(guò)一系列信息相關(guān)的過(guò)程來(lái)實(shí)現(xiàn)決策權(quán)和職責(zé)分工的系統(tǒng),這些過(guò)程按照達(dá)成共識(shí)的模型來(lái)執(zhí)行,該模型描述了誰(shuí)(Who)能根據(jù)什么信息,在什么時(shí)間(When)和情況(Where)下,用什么方法(How),采取什么行動(dòng)(What)。IBM提出的數(shù)據(jù)治理概念中,將“數(shù)據(jù)治理”相關(guān)的要素劃分為了四個(gè)層次,分別是:支持規(guī)程、核心規(guī)程、支持條件和成果。

但其實(shí)數(shù)據(jù)治理是一項(xiàng)比較大的工程,在實(shí)際工作中,我們需要縮小范圍,“把好鋼用在刀刃上”。因此,個(gè)人傾向于如下的概念,即:數(shù)據(jù)治理 = 數(shù)據(jù)質(zhì)量治理 + 數(shù)據(jù)資產(chǎn)治理。所謂的治理,是站在數(shù)據(jù)從生產(chǎn)到最終消費(fèi)的全鏈路視角上,利用平臺(tái)技術(shù)提升所帶來(lái)的紅利,以從研發(fā)視角出發(fā)所推動(dòng)的運(yùn)營(yíng)工作為錨點(diǎn),讓數(shù)據(jù)的治理變得“可持續(xù)”,并且提升研發(fā)同學(xué)的“幸福感”。

從這些角度出發(fā),不論是研究開(kāi)發(fā)的基礎(chǔ)技術(shù),如壓縮、列存,或者是偏應(yīng)用視角的規(guī)范、質(zhì)量,都是數(shù)據(jù)治理能夠提升的方向。將質(zhì)量的治理動(dòng)作應(yīng)用在平時(shí),減少“事故驅(qū)動(dòng)”、“報(bào)警驅(qū)動(dòng)”、“運(yùn)動(dòng)驅(qū)動(dòng)”等不合理方式,也是非常有成就感的。

|0x03 實(shí)時(shí)開(kāi)發(fā)

在數(shù)據(jù)倉(cāng)庫(kù)的建設(shè)過(guò)程里,我們一直秉承著“離線(xiàn)先行”的方針,因?yàn)殡x線(xiàn)的技術(shù)棧非常成熟,開(kāi)發(fā)起來(lái)很快,同時(shí)監(jiān)控工具也做的比較完善,出了問(wèn)題能及時(shí)發(fā)現(xiàn)、及時(shí)處理。但隨著Flink為代表的新一代框架的出現(xiàn),很多業(yè)務(wù)已經(jīng)不再滿(mǎn)足于做準(zhǔn)實(shí)時(shí)的開(kāi)發(fā)了,完全實(shí)時(shí)化的數(shù)據(jù)流、面向?qū)崟r(shí)做的數(shù)倉(cāng)設(shè)計(jì),就成為了數(shù)據(jù)和業(yè)務(wù)都關(guān)心的高價(jià)值項(xiàng)目。

但隨著Flink為代表的新一代框架的出現(xiàn),很多業(yè)務(wù)已經(jīng)不再滿(mǎn)足于做準(zhǔn)實(shí)時(shí)的開(kāi)發(fā)了,完全實(shí)時(shí)化的數(shù)據(jù)流、面向?qū)崟r(shí)做的數(shù)倉(cāng)設(shè)計(jì),就成為了數(shù)據(jù)和業(yè)務(wù)都關(guān)心的高價(jià)值項(xiàng)目。哪怕是沒(méi)有實(shí)時(shí)的訴求,很多公司也會(huì)盡量去搞一套體系出來(lái),不僅是為了趕時(shí)髦,也是為了給技術(shù)團(tuán)隊(duì)儲(chǔ)備有價(jià)值的知識(shí)。

在離線(xiàn)方案中,從數(shù)據(jù)完備性/準(zhǔn)確性上講,天級(jí)/小時(shí)級(jí)是能夠做到的最短時(shí)效,但從業(yè)務(wù)的價(jià)值上講,實(shí)時(shí)才是價(jià)值最大的場(chǎng)景,尤其是在大促等提升業(yè)績(jī)非常明顯的場(chǎng)景下,實(shí)時(shí)決策的威力不容小覷。

當(dāng)然,業(yè)務(wù)實(shí)時(shí)化只是一個(gè)起點(diǎn),如果從實(shí)時(shí)開(kāi)發(fā)的角度上看,還需要解決諸多的問(wèn)題。

如果采用Lambda結(jié)構(gòu),一套代碼,需要維護(hù)兩遍,實(shí)時(shí)一種,離線(xiàn)一種,這樣會(huì)導(dǎo)致數(shù)據(jù)處理出現(xiàn)一些不可控的問(wèn)題,處理數(shù)據(jù)的思路也不同,很容易出錯(cuò)。

如果采用純實(shí)時(shí)鏈路,那么一旦出現(xiàn)數(shù)據(jù)問(wèn)題,需要回滾或者重啟任務(wù)時(shí),造成的影響就非常大,而且純實(shí)時(shí)目前無(wú)法很好的支持復(fù)雜業(yè)務(wù)。

業(yè)界通常的架構(gòu)設(shè)計(jì),基本上可以統(tǒng)一在Kafka + Flink + ClickHouse這樣的類(lèi)似方案上。當(dāng)然,隨著未來(lái)技術(shù)不斷迭代,相信實(shí)時(shí)數(shù)倉(cāng)架構(gòu),會(huì)像離線(xiàn)那樣完善起來(lái),但這條路還需要走一段時(shí)間。實(shí)時(shí)化的難度,在于當(dāng)前的實(shí)時(shí)工具,恰似Hadoop興起的年代,需要花費(fèi)較多的時(shí)間在維護(hù)和調(diào)試上。

實(shí)時(shí)開(kāi)發(fā),確實(shí)是未來(lái)技術(shù)提升的重中之重。

|0x04 多維分析

多維分析通常和OLAP掛鉤在一起,核心特點(diǎn)是“多維”,OLAP技術(shù)也可以稱(chēng)之為“多維度數(shù)據(jù)分析工具”,是提供自助分析的重要工具。

OLAP委員會(huì)對(duì)聯(lián)機(jī)分析處理的定義為:從原始數(shù)據(jù)中轉(zhuǎn)化出來(lái)的、能夠真正為用戶(hù)所理解的、并真實(shí)反映企業(yè)多維特性的數(shù)據(jù)稱(chēng)為信息數(shù)據(jù),使分析人員、管理人員或執(zhí)行人員能夠從多種角度對(duì)信息數(shù)據(jù)進(jìn)行快速、一致、交互地存取,從而獲得對(duì)數(shù)據(jù)的更深入了解的一類(lèi)軟件技術(shù)。

盡管現(xiàn)在市面上有Kylin、TiDB、ES等多種數(shù)據(jù)庫(kù)層面的技術(shù)方案,但Cube層的搭建,也是數(shù)據(jù)開(kāi)發(fā)非常重要的一環(huán)。然而,如果對(duì)業(yè)務(wù)理解不那么充分、以及數(shù)據(jù)基礎(chǔ)搭建的不那么完善情況下,貿(mào)然建Cube,所消耗的人力與機(jī)器成本其實(shí)是不可接受的。

當(dāng)然,這種數(shù)據(jù)技術(shù)也要與前端結(jié)合在一起,防止前端渲染引擎搞不定如此多的數(shù)據(jù)。因此除了Tableau、FineBI、QuickBI等商業(yè)引擎外,也可以嘗試進(jìn)行自研。

如何在離線(xiàn)計(jì)算與數(shù)據(jù)庫(kù)能力之間,尋找到一種平衡,就是多維分析的價(jià)值所在了。

|0x05 數(shù)據(jù)分析

最貼近業(yè)務(wù)的核心環(huán)節(jié),也是數(shù)據(jù)倉(cāng)庫(kù)的進(jìn)階階段:數(shù)據(jù)分析。當(dāng)開(kāi)發(fā)能夠進(jìn)階到這個(gè)階段時(shí),跨向數(shù)據(jù)科學(xué)家的大門(mén)才算是打開(kāi)了。

我們可以用簡(jiǎn)潔的講法,來(lái)總結(jié)數(shù)據(jù)分析的價(jià)值:“將大數(shù)據(jù)轉(zhuǎn)化為業(yè)務(wù)知識(shí),幫助企業(yè)做經(jīng)營(yíng)決策”。

大部分的業(yè)務(wù)都集中在看匯總數(shù)據(jù)的階段,但我們引用管理學(xué)大師“彼得·格魯克”的名言:“You cannot impove it if you cannot measure it”,只有我們找到業(yè)務(wù)發(fā)展的關(guān)鍵衡量標(biāo)準(zhǔn),也就是“北極星指標(biāo)”之后,我們才能夠針對(duì)性的優(yōu)化業(yè)務(wù)?;ヂ?lián)網(wǎng)上有一句廣而流傳的話(huà),谷歌分析推廣人之一Avinash Kaushik的名句:“All data in aggregate is crap. Segment or die. ”,意思是“所有的總和數(shù)據(jù)都是垃圾,要么分組,要么去死”。匯總數(shù)據(jù)會(huì)掩蓋很多問(wèn)題,對(duì)數(shù)據(jù)的下鉆分析才能獲得趨勢(shì)發(fā)生的真正原因,才能夠了解如何優(yōu)化“北極星指標(biāo)”。當(dāng)今互聯(lián)網(wǎng)人口紅利逐步消失的前提下,對(duì)業(yè)務(wù)數(shù)據(jù)的深入理解和分析,才能夠讓業(yè)務(wù)維持高質(zhì)量的增長(zhǎng)。

那么數(shù)據(jù)分析的日常工作,主要在做什么呢?簡(jiǎn)而言之,在做三件事:業(yè)務(wù)的現(xiàn)狀是什么、為什么會(huì)發(fā)生、未來(lái)將要如何(或如何改進(jìn))。

現(xiàn)狀分析,就是告訴業(yè)務(wù)決策者,過(guò)去發(fā)生了什么事情,并且通常以報(bào)表的形式呈現(xiàn)出來(lái)。所以分析師不光要能夠做日?qǐng)?bào)、周報(bào),還需要自己來(lái)搭建報(bào)表平臺(tái),通過(guò)分析關(guān)鍵的指標(biāo),來(lái)掌握業(yè)務(wù)的運(yùn)營(yíng)情況。

原因分析,是在業(yè)務(wù)現(xiàn)狀的基礎(chǔ)上,分析為什么會(huì)發(fā)生這些事情。比如指標(biāo)上升或者下降了,是因?yàn)槭裁丛蛟斐傻?;或者是分析不同渠道?duì)于最終轉(zhuǎn)化的貢獻(xiàn)情況。分析的過(guò)程,通常會(huì)通過(guò)專(zhuān)題的形式展示出來(lái)。

預(yù)測(cè)分析,則是告訴業(yè)務(wù),未來(lái)會(huì)發(fā)生什么。預(yù)測(cè)其實(shí)是一件很重要的工作,不論是企業(yè)經(jīng)營(yíng)目標(biāo)的制定,或者是相關(guān)策略的落實(shí),都需要預(yù)測(cè)未來(lái)可能的情況,來(lái)保證業(yè)務(wù)的健康可持續(xù)發(fā)展。例如電商大促的到來(lái),銷(xiāo)量會(huì)得到很大的提升,那么對(duì)應(yīng)的預(yù)算、物流、商家要做怎樣的應(yīng)對(duì),都依賴(lài)于數(shù)據(jù)來(lái)提供預(yù)測(cè)。

數(shù)據(jù)分析,才是真正考驗(yàn)對(duì)于業(yè)務(wù)的理解能力,也是數(shù)據(jù)開(kāi)發(fā)組必備的能力。

|0xFF 總結(jié)

數(shù)據(jù)可以支持業(yè)務(wù)的方法有很多,做報(bào)表、搭平臺(tái)并不是唯一的解決思路,在深入理解業(yè)務(wù)的基礎(chǔ)上,能夠?qū)I(yè)務(wù)的痛點(diǎn)轉(zhuǎn)化為技術(shù)語(yǔ)言,并通過(guò)技術(shù)解決這些痛點(diǎn)、推廣這些方案,都稱(chēng)得上“數(shù)據(jù)賦能”。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容