作者:奇點(diǎn)云高級(jí)數(shù)據(jù)架構(gòu)專(zhuān)家 天啟早在1980年,未來(lái)學(xué)家阿爾文·托夫勒就在《第三次浪潮》中,,將大數(shù)據(jù)比喻為“第三次浪潮的華彩樂(lè)章”,。 21世紀(jì)以來(lái),數(shù)據(jù)量進(jìn)入每?jī)赡攴环脑鲩L(zhǎng)期,,越來(lái)越多人意識(shí)到了數(shù)據(jù)的價(jià)值,,數(shù)據(jù)架構(gòu)師閃亮登場(chǎng)。數(shù)據(jù)成為企業(yè)不可忽視的重要資產(chǎn),。而數(shù)據(jù)架構(gòu)師則是企業(yè)數(shù)據(jù)資產(chǎn)最重要的“奠基者”,。最早,數(shù)據(jù)架構(gòu)師在IOE上工作,;2009年,,阿里云最早提出“去IOE”的口號(hào),初代數(shù)據(jù)架構(gòu)師革了自己的命,;2015年,,這一年產(chǎn)生的數(shù)據(jù)量是人類(lèi)過(guò)去歷史上所產(chǎn)生數(shù)據(jù)量的總和,,從此進(jìn)入了指數(shù)級(jí)增長(zhǎng)階段。數(shù)據(jù)架構(gòu)師也演化出了2個(gè)大方向(平臺(tái)型數(shù)據(jù)架構(gòu)師,、數(shù)倉(cāng)型數(shù)據(jù)架構(gòu)師),。本文以作者親歷視角,主要分享數(shù)倉(cāng)型數(shù)據(jù)架構(gòu)師的“修煉大法”,。歡迎辯證看待,、留言交流~天啟,奇點(diǎn)云高級(jí)數(shù)據(jù)架構(gòu)專(zhuān)家,,原海爾集團(tuán)數(shù)據(jù)架構(gòu)師,、原阿里巴巴政務(wù)團(tuán)隊(duì)數(shù)據(jù)架構(gòu)師。精通數(shù)據(jù)倉(cāng)庫(kù)建模理論及數(shù)據(jù)開(kāi)發(fā)技術(shù),,具備零售,、政務(wù)、醫(yī)藥,、制造等多個(gè)領(lǐng)域數(shù)倉(cāng)和數(shù)據(jù)中臺(tái)建設(shè)經(jīng)驗(yàn),。目前數(shù)據(jù)架構(gòu)師有兩個(gè)大的方向:一,偏平臺(tái)的架構(gòu)師,,對(duì)開(kāi)源技術(shù)要求較高,,企業(yè)一般會(huì)要求讀過(guò)開(kāi)源技術(shù)源碼,或者參與過(guò)開(kāi)源項(xiàng)目,,偏平臺(tái)的構(gòu)建,;二,偏數(shù)倉(cāng)的架構(gòu)師,,對(duì)SQL能力要求較高,,企業(yè)一般會(huì)要求掌握數(shù)倉(cāng)理論,有數(shù)倉(cāng)項(xiàng)目經(jīng)驗(yàn),。(1)平臺(tái)型數(shù)據(jù)架構(gòu)師這個(gè)方向也會(huì)分類(lèi):一,,開(kāi)源派,互聯(lián)網(wǎng)公司一般喜歡這個(gè)流派,,二,,商用軟件派,如Oracle,、IBM等流派,,通常解決傳統(tǒng)企業(yè)的數(shù)據(jù)問(wèn)題。這個(gè)流派目前受到了來(lái)自阿里,、騰訊和華為較大的沖擊,。個(gè)人認(rèn)為目前開(kāi)源派是比較符合近年潮流趨勢(shì)的。平臺(tái)型數(shù)據(jù)架構(gòu)師,,是為數(shù)倉(cāng)型數(shù)據(jù)架構(gòu)師服務(wù)的,,直白地說(shuō),,你開(kāi)發(fā)能力要很牛逼,你要懂應(yīng)用,。(2)數(shù)倉(cāng)型數(shù)據(jù)架構(gòu)師這個(gè)方向要求精通數(shù)據(jù)倉(cāng)庫(kù)原理,,通過(guò)實(shí)時(shí)、離線等技術(shù)解決企業(yè)的數(shù)據(jù)問(wèn)題,。需要掌握ELT的流程,,掌握各種數(shù)據(jù)源的特點(diǎn),掌握大數(shù)據(jù)工具的使用,。數(shù)倉(cāng)型數(shù)據(jù)架構(gòu)師,,剛好是平臺(tái)型數(shù)據(jù)架構(gòu)師的用戶。直白地說(shuō),,你寫(xiě)SQL的能力要牛逼,,你要懂業(yè)務(wù)。 敲門(mén)磚:掌握一門(mén)開(kāi)發(fā)語(yǔ)言 如果你是一位計(jì)算機(jī)專(zhuān)業(yè)的學(xué)生,,我推薦使用C語(yǔ)言,,強(qiáng)烈建議通過(guò)面向?qū)ο蟮木幊趟枷肴ハ瘮?shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)架構(gòu)中,,很多邏輯和原理都來(lái)自于數(shù)據(jù)結(jié)構(gòu)這門(mén)課程,如鏈表,、隊(duì)列,、堆棧、樹(shù),、圖等,,掌握數(shù)據(jù)結(jié)構(gòu)對(duì)后續(xù)進(jìn)一步學(xué)習(xí)非常的重要。如果你是想從其他崗位轉(zhuǎn)數(shù)據(jù)架構(gòu)師,,那么更建議學(xué)習(xí)Java,,Java的入門(mén)會(huì)相對(duì)簡(jiǎn)單。當(dāng)然最好的方式是通過(guò)Java的編程思想領(lǐng)會(huì)數(shù)據(jù)結(jié)構(gòu)這本書(shū)的知識(shí)點(diǎn),。一定要模擬B/C的整個(gè)過(guò)程,,不要立馬就用Java的高級(jí)框架,而是要用Java原生的servlet模擬下前端和后端的交互,,后端和數(shù)據(jù)庫(kù)的交互,。初學(xué)者看文章,常會(huì)遇到很多新概念,,覺(jué)得看不懂,,記不住。最好的學(xué)習(xí)方法是讓自己有興趣,、有成就感,。所以理論的內(nèi)容我建議慢慢消化,,反而實(shí)際操作很重要——實(shí)際操作能給自己帶來(lái)成就感。比如你初學(xué)java,,你第一個(gè)目標(biāo)是要在屏幕上打出“Hello, world! ”,。網(wǎng)上會(huì)有很多的資料,會(huì)教你安裝JDK,、IDE工具等等,,你可以先不管那么多,找個(gè)偏基礎(chǔ)的資料,,按部就班的實(shí)現(xiàn)一次,。在整個(gè)過(guò)程中你會(huì)遇到很多的問(wèn)題,JDK在哪里下載,,版本選哪一個(gè),,環(huán)境變量如何配置等等。最好的方式是邊查邊做,,通過(guò)親手實(shí)踐來(lái)驗(yàn)證整個(gè)過(guò)程,,再去理解。最終成功地打印出“Hello, world! ”,,你會(huì)有前所未有的成就感,!數(shù)據(jù)結(jié)構(gòu)這門(mén)課程確實(shí)有些難度,同樣建議采用邊學(xué)理論邊實(shí)踐的方法,,甚至我們可以更“暴力”,,直接在網(wǎng)上找?guī)锥蝿e人寫(xiě)好的代碼,跑一遍,,看看效果,,讀懂代碼,再回過(guò)來(lái)理解概念,。這時(shí)候你會(huì)感覺(jué)就像近視眼戴上了眼鏡,,突然發(fā)現(xiàn)很清晰。你還需要了解開(kāi)發(fā)語(yǔ)言的分類(lèi):什么是低級(jí)語(yǔ)言,,什么是高級(jí)語(yǔ)言,?什么是面向過(guò)程的編程,什么是面向?qū)ο蟮木幊??什么是編譯型語(yǔ)言,,什么是解釋型語(yǔ)言?可以不深入,,但是作為一個(gè)架構(gòu)師,,你要了解這些東西。最好也要了解設(shè)計(jì)模型,如單例模式,、工廠模式,、生產(chǎn)者模式等常用設(shè)計(jì)模型,對(duì)思維方式有很好的提升,。開(kāi)發(fā)語(yǔ)言是成為一名合格數(shù)據(jù)架構(gòu)師的敲門(mén)磚,。你可以選一本不錯(cuò)的書(shū),結(jié)合書(shū)籍一步一步走,。自學(xué)時(shí),,知識(shí)檢索能力很重要,你要慢慢學(xué)會(huì)在浩瀚的互聯(lián)網(wǎng)學(xué)海中查找自己想要的知識(shí),。有條件的同學(xué)也可以報(bào)個(gè)靠譜的培訓(xùn)班,,這是個(gè)不錯(cuò)的選擇,會(huì)少走很多彎路,。但是速成后很多人只能做個(gè)碼農(nóng),,最終要成為架構(gòu)師級(jí)別的高手,還是需要扎實(shí)的基本功是必須的,。需要很長(zhǎng)的路才能成為架構(gòu)師級(jí)別的編程高手,。所以如果想有更高的成就,必須對(duì)概念,、原理,、技術(shù)。對(duì)于數(shù)據(jù)架構(gòu)師,,必須要掌握一種數(shù)據(jù)庫(kù),,同時(shí)要了解常見(jiàn)的數(shù)據(jù)庫(kù)。建議通過(guò)Oracle來(lái)學(xué)習(xí)數(shù)據(jù)庫(kù),,安裝系統(tǒng)時(shí)選擇Linux,,也可以選CentOS,。第一步你要模擬操作系統(tǒng),,也就會(huì)接觸到虛擬機(jī)的概念。簡(jiǎn)單來(lái)說(shuō),,也就是第一步模擬Linux系統(tǒng),,第二步再安裝數(shù)據(jù)庫(kù)。為什么推薦Oracle數(shù)據(jù)庫(kù),?因?yàn)镺racle的安裝過(guò)程相對(duì)比較復(fù)雜,,在過(guò)程中你會(huì)遇到各種各樣的問(wèn)題,遇到的問(wèn)題越多,,學(xué)習(xí)的就越多,。整個(gè)過(guò)程中你要學(xué)習(xí)Linux系統(tǒng)的各種命令、網(wǎng)絡(luò),、補(bǔ)丁包,、防火墻等一系列問(wèn)題,,最后通過(guò)客戶端可以訪問(wèn)數(shù)據(jù)庫(kù)了,可以查看數(shù)據(jù)了,,就會(huì)很有成就感,。如果領(lǐng)悟能力和動(dòng)手能力很好,這個(gè)步驟一般需要一周左右的時(shí)間去消化,。但這只是第一步,,記得一定要多裝幾次來(lái)加深理解。后面就要開(kāi)始學(xué)習(xí)SQL語(yǔ)句了,,建表,、插入、更改,、查詢(xún),,操作起來(lái)吧!理論也要跟上,,“事務(wù)”的概念一定要看,,數(shù)據(jù)庫(kù)、實(shí)例名,、表空間,、段、塊等概念要理解,。當(dāng)然也要學(xué)習(xí)如何優(yōu)化數(shù)據(jù)庫(kù),。數(shù)據(jù)庫(kù)底層無(wú)非是硬盤(pán)、內(nèi)存,、CPU在支撐,,所以這些資源怎么分配很重要,在測(cè)試時(shí)一定要留意這三個(gè)重要參數(shù)的變化,。操作系統(tǒng)層面的優(yōu)化就是為了讓操作系統(tǒng)和數(shù)據(jù)庫(kù)軟件更好地結(jié)合,,可以去調(diào)系統(tǒng)的參數(shù)。這是統(tǒng)一的優(yōu)化思想,,后面的應(yīng)用系統(tǒng),、大數(shù)據(jù)等技術(shù)也適用。數(shù)據(jù)庫(kù)層面的優(yōu)化,,也是一樣的道理,,留意、調(diào)整參數(shù),,原則就是“集中有限的資源做更多重要的事”,。基于數(shù)據(jù)的優(yōu)化,我建議盡可能少消耗計(jì)算機(jī)的性能:硬盤(pán)的讀寫(xiě)、網(wǎng)絡(luò)的傳輸,、數(shù)據(jù)的計(jì)算,。如分表分區(qū),索引等等都是為了用盡可能少的資源,,盡可能快地完成盡可能多的事:就是提高效率,。當(dāng)然有的時(shí)候我們會(huì)犧牲時(shí)間換空間,也會(huì)犧牲空間換時(shí)間,,所以對(duì)于優(yōu)化,,我們要綜合考慮成本和效率的問(wèn)題。SQL調(diào)優(yōu)中,,執(zhí)行計(jì)劃是必須要會(huì)看的,,每個(gè)數(shù)據(jù)庫(kù)或者引擎都有自己的規(guī)則,我們優(yōu)化過(guò)程中要了解SQL的執(zhí)行邏輯,,這樣我們才知道如何優(yōu)化,。要了解哪些數(shù)據(jù)庫(kù)呢?關(guān)系型數(shù)據(jù)庫(kù)中Oracle,、MySQL,、SQLServer、DB2,、PostgreSQL是要去了解的,,同時(shí)了解行存儲(chǔ)和列存儲(chǔ)的區(qū)別,當(dāng)然了解越多越好,。Nosql數(shù)據(jù)庫(kù)的話,,建議了解MongoDB、HBase,、Redis,。其他數(shù)據(jù)庫(kù)還很多,通過(guò)項(xiàng)目和ELT過(guò)程來(lái)熟悉更多的架構(gòu)吧,!大數(shù)據(jù)解決了什么問(wèn)題,?其實(shí)答案很簡(jiǎn)單:分布式存儲(chǔ)和分布式計(jì)算。所以,,學(xué)習(xí)大數(shù)據(jù)最好的方式就是搭建一套開(kāi)源的Hadoop集群,,在上面操作HDFS,、hive,、spark、HBase等各種組件,。搭建的過(guò)程和Oracle安裝過(guò)程非常類(lèi)似,,我們首先可以通過(guò)虛擬機(jī)模擬3-5個(gè)節(jié)點(diǎn)(服務(wù)器),在服務(wù)器上進(jìn)行安裝。安裝過(guò)程不再一一贅述,,給大家一個(gè)實(shí)踐場(chǎng)景:需求描述:從mysql數(shù)據(jù)庫(kù)把兩張表導(dǎo)入到hadoop,然后通過(guò)hive進(jìn)行計(jì)算,,結(jié)果數(shù)據(jù)同步回mysql數(shù)據(jù)庫(kù),。可能遇到的問(wèn)題:同步工具的選擇,數(shù)據(jù)加載方式,,轉(zhuǎn)化方式,,如何把整個(gè)流程串聯(lián)起來(lái),怎么啟動(dòng)這個(gè)流程,。待選的同步工具有Sqoop和DataX,,Sqoop還是Hadoop開(kāi)源的工具,DataX是阿里開(kāi)源的工具,,各有各的優(yōu)勢(shì),,建議都可以學(xué)習(xí)了解。hive的底層是HDFS,,簡(jiǎn)單說(shuō)就是個(gè)文件,,hive只是映射過(guò)去,通過(guò)類(lèi)SQL語(yǔ)言實(shí)現(xiàn)計(jì)算,。你可以直接通過(guò)hive接口(三種方式)建內(nèi)部表,。Sqoop和DataX都支持直接同步到hive中。這是模擬過(guò)程,,hive不支持存儲(chǔ),、不支持update,所以可以進(jìn)行兩張表數(shù)據(jù)聚合(left join,、group by等)后數(shù)據(jù)插入到另一張表中,,再把數(shù)據(jù)同步回mysql。建議可以通過(guò)Linux的shell腳本進(jìn)行串聯(lián),,數(shù)據(jù)同步-數(shù)據(jù)轉(zhuǎn)化-數(shù)據(jù)導(dǎo)出,。所有任務(wù)封裝到sh腳本里,可以利用Linux的crontab進(jìn)行定時(shí)調(diào)度,。為了更好應(yīng)對(duì)大數(shù)據(jù)面試,最好能系統(tǒng)地學(xué)習(xí)一下HDFS,、MapReduce,、Hive、Spark,、HBase,、Yarn,、Kafka、Zookeeper等一系列的大數(shù)據(jù)組件,。大數(shù)據(jù)面試中經(jīng)常會(huì)問(wèn)到的問(wèn)題有哪些,?問(wèn)題常常會(huì)包括HiveSQL技巧和調(diào)優(yōu):Hive技巧:內(nèi)部表和外部表、分區(qū),、分桶,、窗口函數(shù)、UDF(UDAF,、UDTF),、行轉(zhuǎn)列、列轉(zhuǎn)行等,。優(yōu)化問(wèn)題:數(shù)據(jù)熱點(diǎn)(數(shù)據(jù)傾斜問(wèn)題),、參數(shù)優(yōu)化、業(yè)務(wù)分表,、sql優(yōu)化,。因?yàn)镠ive底層是MapReduce操作HDFS,所以要了解Map和Reduce階段在做什么,?數(shù)據(jù)傾斜問(wèn)題是數(shù)據(jù)分布不均導(dǎo)致的,,和MapReduce原理息息相關(guān),了解了MapReduce,,你就會(huì)優(yōu)化Hive了,。Spark計(jì)算引擎和Hive底層不一樣,Spark學(xué)習(xí)你會(huì)遇到DAG圖,,RDD,、內(nèi)存、Scala語(yǔ)言等知識(shí),,一樣地學(xué)習(xí)優(yōu)化思路和技巧,。HBase是個(gè)列族數(shù)據(jù)庫(kù),通過(guò)Key-value方式進(jìn)行數(shù)據(jù)存儲(chǔ),,學(xué)習(xí)方式同上,。Yarn是資源管理器,CPU,、內(nèi)存資源都是它來(lái)管理的,,平臺(tái)架構(gòu)師要深入學(xué)習(xí),數(shù)倉(cāng)架構(gòu)師可以稍作了解,。Kafka是消息隊(duì)列,,主要用于數(shù)據(jù)通道,進(jìn)行數(shù)據(jù)緩沖和技術(shù)解耦使用,。Zookeeper是管理所有大數(shù)據(jù)組件的,,因?yàn)閔adoop生態(tài)圈組件都是動(dòng)物名字命名的,所以Zookeeper就是動(dòng)物管理員,,依此進(jìn)行命名的,。其實(shí)大數(shù)據(jù)技術(shù)主要解決分布式計(jì)算和分布式存儲(chǔ),,簡(jiǎn)單的說(shuō)就是可以進(jìn)行彈性擴(kuò)展,,存儲(chǔ)資源無(wú)限擴(kuò)展,計(jì)算資源無(wú)限擴(kuò)展,。這樣就可以解決小型機(jī)和一體機(jī)無(wú)法解決的計(jì)算和存儲(chǔ)問(wèn)題,。解決這兩個(gè)問(wèn)題,我們需要一個(gè)操作系統(tǒng)來(lái)支持,,這就是分布式操作系統(tǒng),。(這個(gè)核心思想最早是Google為了解決自己的問(wèn)題提出來(lái),后續(xù)apache 進(jìn)行開(kāi)源提出了HDFS,。)資源怎么協(xié)調(diào)引出了Yarn,,消息隊(duì)列提出Kafka,離線計(jì)算Hive,,內(nèi)存計(jì)算Spark(不完全靠?jī)?nèi)存),、交互式查詢(xún)impala、多維分析kylin等等,,因篇幅有限,,每個(gè)類(lèi)型只列舉一個(gè)。 必殺技2:數(shù)據(jù)倉(cāng)庫(kù) 初步接觸數(shù)據(jù)倉(cāng)庫(kù)時(shí),,建議先看維度模型,了解什么是事實(shí)表,,什么是維度表,。做一張事實(shí)表,定義哪些是維度,、哪些是度量,,然后通過(guò)SQL進(jìn)行查詢(xún)。有了基本概念后,,可以再學(xué)習(xí)深一些的內(nèi)容,,例如星型模型、雪花模型,。戳上圖看天啟關(guān)于數(shù)據(jù)模型的詳解再進(jìn)階,,則可以學(xué)習(xí)維度建模:選擇業(yè)務(wù)過(guò)程-聲明粒度-確定維度-確定事實(shí),如果能親身參與一個(gè)項(xiàng)目就更好了,。首先要了解數(shù)據(jù)倉(cāng)庫(kù)的分層,、每一層做什么,為什么要分層,?然后,,了解事實(shí)表的類(lèi)型(事務(wù)、周期快照,、累計(jì)快照),、維度表的類(lèi)型(普通維度、緩慢變化維度),、總線矩陣,、數(shù)據(jù)立方體(cube)等。維度建模實(shí)踐后,,發(fā)現(xiàn)維度建模的不足,那么是時(shí)候可以開(kāi)始研究其他建模了,。建議通讀并理解Inmon大師的范式建模(數(shù)據(jù)倉(cāng)庫(kù)之父Bill Inmon,, Building the Data Warehouse)和Kimball大師的維度建模,兩者的建模各有優(yōu)劣,,可以取長(zhǎng)補(bǔ)短,。數(shù)據(jù)模型最終解決的是業(yè)務(wù)問(wèn)題,,目前常見(jiàn)的建模以維度建模為主,,但是維度建模不停的在變化, Bill Inmon提出了datavault的建模思想,,數(shù)據(jù)倉(cāng)庫(kù),、數(shù)據(jù)平臺(tái)、數(shù)據(jù)中臺(tái),、數(shù)據(jù)湖等概念層出不窮,。本質(zhì)不變,目標(biāo)還是解決實(shí)際的業(yè)務(wù)問(wèn)題,。我個(gè)人建議,,我們數(shù)據(jù)倉(cāng)庫(kù)的規(guī)劃可以自頂向下,采用Inmon的思想,,開(kāi)發(fā)和建模規(guī)范也要考慮全局,,而在實(shí)施中可以采用維度建模,自底向上,,采用Kimbal思想,,落地快,迭代快,。實(shí)際解決問(wèn)題時(shí)不拘泥于一個(gè)模型,,什么模型合適就用什么模型,。阿里基于維度建模提出了公共模型層概念,,一定程度上能解決數(shù)據(jù)共享和重復(fù)建設(shè)的問(wèn)題,,OneData的理念非常有研究?jī)r(jià)值。但在應(yīng)用中我們需要注意,,不要一味的用相同的場(chǎng)景做法去套不同行業(yè),,在實(shí)踐中需要辯證看待,,按需去用,。數(shù)據(jù)模型沒(méi)有好壞,,只有用得對(duì)錯(cuò),。判斷的標(biāo)準(zhǔn)也很簡(jiǎn)單,有沒(méi)有解決業(yè)務(wù)問(wèn)題,?更高的要求是有沒(méi)有驅(qū)動(dòng)業(yè)務(wù)的變革或者創(chuàng)新,。大白話來(lái)說(shuō)就是兩個(gè)問(wèn)題:掙到錢(qián)了嗎?省下錢(qián)了嗎,?傳統(tǒng)的ETL (Extract-Transform-Load)是把T的部分放在中間的,在大數(shù)據(jù)環(huán)境下我們更愿意把T放在后面,,從ETL向ELT進(jìn)行演變,。原因也很簡(jiǎn)單,這樣我們可以充分利用大數(shù)據(jù)環(huán)境T的能力,。數(shù)據(jù)開(kāi)發(fā)也平臺(tái)化了,,例如阿里的DataWorks、Dataphin,,將數(shù)據(jù)同步,、清洗轉(zhuǎn)化、任務(wù)調(diào)度集成在一起,。 E(Extract,抽?。┖蚅(Load,,裝載)的優(yōu)化需要懂源頭和目標(biāo)數(shù)據(jù)庫(kù)(數(shù)據(jù)倉(cāng)庫(kù))的特點(diǎn),需要根據(jù)情況進(jìn)行優(yōu)化,。T(Transform,,轉(zhuǎn)化)部分要理解底層技術(shù)原理,進(jìn)行優(yōu)化,。必須在規(guī)定時(shí)間內(nèi)跑完數(shù)據(jù),,跑出結(jié)果,;數(shù)據(jù)計(jì)算結(jié)果必須準(zhǔn)確;ELT可以支持重跑,、補(bǔ)數(shù)等功能,;及時(shí)告警和預(yù)警功能,提前處理問(wèn)題,。 加分項(xiàng):應(yīng)用系統(tǒng) 一個(gè)應(yīng)用系統(tǒng)是怎么誕生的,?可以通過(guò)軟件工程這門(mén)課程學(xué)習(xí),需求分析,、概要設(shè)計(jì),、詳細(xì)設(shè)計(jì)、軟件開(kāi)發(fā),、軟件測(cè)試,、試運(yùn)行、上線,、運(yùn)維,、下線等整個(gè)過(guò)程。一個(gè)應(yīng)用系統(tǒng)一般會(huì)有前端,、后端和數(shù)據(jù)庫(kù),,對(duì)于我們數(shù)據(jù)架構(gòu)師,我們至少要知道,,怎么開(kāi)發(fā)一個(gè)系統(tǒng),,怎么保證一個(gè)系統(tǒng)的穩(wěn)定。特別是“穩(wěn)定”,,我們要對(duì)高可用,、負(fù)載均衡、安全有深刻的認(rèn)識(shí),,需要考慮到應(yīng)用(Tomat),、數(shù)據(jù)庫(kù)(MySQL)、其他中間件(緩存服務(wù),、文件服務(wù)等),。- 高可用:系統(tǒng)一個(gè)節(jié)點(diǎn)發(fā)生故障后能進(jìn)行無(wú)感切換,這個(gè)很重要,。
- 負(fù)載均衡:使壓力均衡進(jìn)行,,它決定了系統(tǒng)的擴(kuò)展性。
- 安全:磁盤(pán)陣列(raid0,、raid1,、raid5、raid10)、防火墻,、授權(quán),、認(rèn)證,及數(shù)據(jù)安全,,防泄防篡,、脫敏加密、防丟失等,。
在做架構(gòu)決策時(shí),,知道哪些操作可能會(huì)影響業(yè)務(wù)系統(tǒng),才能設(shè)計(jì)更好的數(shù)據(jù)架構(gòu),。DT時(shí)代已至,,未來(lái)一定是“數(shù)據(jù)+AI”的天下。所以作為數(shù)據(jù)架構(gòu)師,,我們可以不會(huì)寫(xiě)算法,,但我們要了解且會(huì)使用算法,。這里的算法主要指機(jī)器學(xué)習(xí)算法,,初學(xué)者可以理解下預(yù)測(cè)、分類(lèi)(聚類(lèi))的概念(其實(shí)很多圖像和語(yǔ)音識(shí)別的算法也可以歸為預(yù)測(cè)和聚類(lèi)算法中),。可以用Python模擬最簡(jiǎn)單的線性回歸,,進(jìn)階則研究邏輯回歸。- 監(jiān)督學(xué)習(xí)算法:支持向量機(jī)(Support Vector Machine,,SVM),、決策樹(shù)、樸素貝葉斯分類(lèi),、K-臨近算法(KNN),;
- 非監(jiān)督學(xué)習(xí)算法:K-均值聚類(lèi)(K-Means) 。優(yōu)點(diǎn)是算法簡(jiǎn)單容易實(shí)現(xiàn),,缺點(diǎn)則是可能收斂到局部最小值,,在大規(guī)模數(shù)據(jù)集上收斂較慢??稍趫D像處理,、數(shù)據(jù)分析以及市場(chǎng)研究等場(chǎng)景應(yīng)用;
- 強(qiáng)化學(xué)習(xí)(深度)算法:如果不想轉(zhuǎn)職算法工程師,,目前僅作了解即可,。
最后分享算法開(kāi)發(fā)的簡(jiǎn)化版步驟:- 數(shù)據(jù)準(zhǔn)備(數(shù)據(jù)同步);
- 問(wèn)題明確(明確分類(lèi)還是回歸問(wèn)題),;
- 數(shù)據(jù)處理(合并,、去重、異常剔除);
- 特征工程(訓(xùn)練集,,測(cè)試集,、驗(yàn)證集);
- 模型評(píng)估(若評(píng)估不合格,,則考慮:①換算法;②調(diào)參數(shù),;③特征工程再進(jìn)一步處理),。
其實(shí),無(wú)論是什么崗位,,自學(xué)能力都很重要,。我們可以為自己建立一個(gè)知識(shí)目錄或知識(shí)索引,按照知識(shí)索引去查漏補(bǔ)缺,,不斷豐富自己,。作為一名數(shù)據(jù)架構(gòu)師,我們要懂點(diǎn)硬件,、懂點(diǎn)網(wǎng)絡(luò),、懂點(diǎn)安全,了解應(yīng)用,,熟練掌握一門(mén)開(kāi)發(fā)語(yǔ)言,,深入理解一個(gè)數(shù)據(jù)庫(kù),實(shí)操過(guò)大數(shù)據(jù),,精通數(shù)據(jù)倉(cāng)庫(kù)技術(shù)(建模+ELT),,有深度,有廣度,。
|