關(guān)注微信公眾號(hào)
創(chuàng)頭條企服版APP
在數(shù)據(jù)分析領(lǐng)域下,總會(huì)被提及諸如SQL、Hive,甚至Hardoop、Druid、Spark等這些技術(shù)上的詞匯。那么作為一名數(shù)據(jù)領(lǐng)域的產(chǎn)品經(jīng)理,聽著這些不是很常見的產(chǎn)品知識(shí),又應(yīng)該具備怎樣的技術(shù)知識(shí)呢?本文主要從“用戶行為數(shù)據(jù)“角度介紹一整套的技術(shù)架構(gòu)以及相關(guān)的技術(shù)要點(diǎn)。
本文將從數(shù)據(jù)采集、數(shù)據(jù)接入、數(shù)據(jù)分析、數(shù)據(jù)展示等4個(gè)重要地方,分別介紹相關(guān)涉及的技術(shù)知識(shí)。這一節(jié)主要介紹整體概念。
用戶行為分析系統(tǒng)其實(shí)是指用戶使用產(chǎn)品過程中,把產(chǎn)生的行為數(shù)據(jù)通過分析而成的報(bào)表工具。此類數(shù)據(jù)區(qū)別于業(yè)務(wù)數(shù)據(jù),大多為公開、有權(quán)限獲取的,比如一些設(shè)備信息、埋點(diǎn)信息等。
目前行業(yè)較為人熟知的有百度統(tǒng)計(jì)、友盟、神策等,而使用此類產(chǎn)品的主要是數(shù)據(jù)分析師、數(shù)據(jù)運(yùn)營(yíng)和產(chǎn)品經(jīng)理等。目的是為了統(tǒng)計(jì)埋點(diǎn)、基礎(chǔ)指標(biāo)分析(如PV、UV)等,從而對(duì)產(chǎn)品進(jìn)行體驗(yàn)優(yōu)化或運(yùn)營(yíng)推廣。
(樣例:數(shù)據(jù)分析系統(tǒng)圖)
1.2.1 數(shù)據(jù)采集
一般用戶使用產(chǎn)品的時(shí)候,所填寫的信息會(huì)經(jīng)由業(yè)務(wù)系統(tǒng)加密儲(chǔ)存。而行為數(shù)據(jù)是不會(huì)經(jīng)由這些系統(tǒng)收集,而由專門的采集工具進(jìn)行采集,這就是SDK。
1.2.2 數(shù)據(jù)接入
因?yàn)镾DK采集的數(shù)據(jù)是非結(jié)構(gòu)化的,所以數(shù)據(jù)都是以原始數(shù)據(jù)的方式按批次定期或?qū)崟r(shí)上傳。服務(wù)端通過接口對(duì)這些數(shù)據(jù)進(jìn)行解析、加工處理,初步形成結(jié)構(gòu)化的日志數(shù)據(jù),并在數(shù)據(jù)庫(kù)按表進(jìn)行存儲(chǔ)。
1.2.3 數(shù)據(jù)分析
當(dāng)數(shù)據(jù)解析并存儲(chǔ)之后,即可通過離線和實(shí)時(shí)兩大方式進(jìn)行分析。部分指標(biāo)計(jì)算量大且實(shí)時(shí)要求不高,則會(huì)采取T+1、T+2(即第二天、第三天出結(jié)果)等離線計(jì)算方式。
有些指標(biāo)時(shí)效性要求高,如關(guān)鍵指標(biāo)、日常運(yùn)營(yíng)活動(dòng)(如雙十一)等,就需要較高的實(shí)時(shí)計(jì)算方式,以便監(jiān)測(cè)表現(xiàn)。兩大方式采用的系統(tǒng)框架會(huì)有所差別,后面詳解。
1.2.4 數(shù)據(jù)應(yīng)用
當(dāng)使用結(jié)構(gòu)化數(shù)據(jù)進(jìn)行分析時(shí),就需要可視化的圖表進(jìn)行展示,不管哪種方式,基本就是通過報(bào)表網(wǎng)站平臺(tái)進(jìn)行展示。比如折線圖、表格、柱狀圖等,甚至還需要提供更多維的分析指標(biāo)支持用戶自主查詢。
2.1.1 定義
SDK是指一種軟件開發(fā)工具包,是數(shù)據(jù)采集的必備工具,英文為“Software Development Kit”。
本質(zhì)上它其實(shí)是一些接口API的文件,為某個(gè)應(yīng)用程序提供服務(wù)。也可以理解為應(yīng)用開發(fā)者通過接入這些文件,并調(diào)用里面的相關(guān)接口,即可采集相應(yīng)數(shù)據(jù)。
因?yàn)镾DK的大小一定程度上會(huì)影響應(yīng)用程序性能,所以盡量輕量處理,占內(nèi)存大多在幾百K和幾兆之間。
2.1.2 作用
不同業(yè)務(wù)下,SDK的應(yīng)用性質(zhì)是不同的。常見的就有數(shù)據(jù)行為類SDK、功能服務(wù)類SDK以及廣告營(yíng)銷類SDK等。
其中功能服務(wù)類就是指應(yīng)用通過接入SDK增加一些特殊的產(chǎn)品功能服務(wù),而廣告營(yíng)銷類則指專門做消息推送、營(yíng)銷推廣等業(yè)務(wù)的SDK。而本文僅介紹數(shù)據(jù)行為類SDK。
主要分為客戶端SDK和服務(wù)端SDK,客戶端SDK是指這類SDK接入在應(yīng)用的前端,比如iOS、安卓等。而服務(wù)端SDK是指接入在后端,更多的在后臺(tái)底層。
2.2.1 客戶端SDK
2.2.2 服務(wù)端SDK
2.2.3 小結(jié)
不同的用戶有不同的業(yè)務(wù)訴求,客戶端和服務(wù)端各有優(yōu)缺點(diǎn),主要取決于業(yè)務(wù)訴求。整體而言,大多數(shù)產(chǎn)品應(yīng)用使用客戶端SDK居多。
SDK大的任務(wù)就在于采集數(shù)據(jù)、識(shí)別數(shù)據(jù)和上報(bào)數(shù)據(jù)。
2.3.1 采集數(shù)據(jù)
由于SDK采集的數(shù)據(jù)較廣,涉及種類較多,主要分幾類:
2.3.2 識(shí)別數(shù)據(jù)
由于采集的數(shù)據(jù)屬于原始數(shù)據(jù),且SDK層基于原始數(shù)據(jù)的真實(shí)性和翹楚性,基本是不會(huì)做結(jié)構(gòu)化的邏輯處理,即不會(huì)做數(shù)據(jù)加工。所以SDK在這里多會(huì)進(jìn)行識(shí)別數(shù)據(jù)的處理。
2.3.3 上報(bào)數(shù)據(jù)
由于SDK在嵌入應(yīng)用程序前,就已經(jīng)打通與服務(wù)端的接口并進(jìn)行上報(bào)。所以此時(shí)SDK是已經(jīng)界定了一系列的上報(bào)邏輯,以及需要傳什么數(shù)據(jù)。
從這一環(huán)節(jié)開始,就進(jìn)入服務(wù)端運(yùn)作的流程。這個(gè)環(huán)境涉及數(shù)據(jù)接入、解析和存儲(chǔ)等3方面。
前面提到,SDK只會(huì)采集原始數(shù)據(jù)(就好比綠色無污染的食品),而這些非結(jié)構(gòu)化數(shù)據(jù)其實(shí)不利于管理和使用的。這時(shí)候就需要在接入后進(jìn)行數(shù)據(jù)解析、清洗加工再扔進(jìn)數(shù)據(jù)庫(kù)。
這一層是服務(wù)端與SDK端之間聯(lián)系的一層,所有的日志數(shù)據(jù)就是通過這個(gè)接入層進(jìn)行獲取,但獲取成功后是需要返回“成功”的信號(hào)給到SDK,證明是暢通的沒有報(bào)錯(cuò)。
但大多數(shù)情況下,由于上報(bào)的數(shù)據(jù)較多,盡管是按批次上報(bào),也是會(huì)出現(xiàn)類似“排隊(duì)”的情況,一個(gè)一個(gè)去等完成再返回?cái)?shù)據(jù)效率十分之低。所以這時(shí)候就會(huì)借用“redis”手段。
redis:Remote Dictionary Server 遠(yuǎn)程字典服務(wù),實(shí)質(zhì)是一個(gè)key-value存儲(chǔ)系統(tǒng),一門開源的數(shù)據(jù)庫(kù)技術(shù)。簡(jiǎn)單來說它就好像一個(gè)副服務(wù)器,當(dāng)主服務(wù)器接收到諸多數(shù)據(jù)后,都可以扔到這里來,讓它慢慢接收,并且無需等待返回“結(jié)果”信息,主服務(wù)就可以告知SDK我這邊“ok”了,請(qǐng)放心。
這一層的作用實(shí)際是指對(duì)數(shù)據(jù)進(jìn)行解析、清洗加工處理,即日志數(shù)據(jù),因?yàn)閿?shù)據(jù)的存儲(chǔ)是要按照明確的數(shù)據(jù)庫(kù)和表的結(jié)構(gòu)來存儲(chǔ)。
日志數(shù)據(jù)例子:{“userid”:”3213213hdhdhasjoiewq3321″,”productid”:”dadsadsad2321321″,”mobile”:”samsung:SM-G9008V”,”country”:”CN”}
提到數(shù)據(jù)存儲(chǔ),就必須接觸到數(shù)據(jù)庫(kù),那么對(duì)于這樣的用戶行為數(shù)據(jù),又會(huì)使用什么樣的數(shù)據(jù)庫(kù)呢?目前關(guān)于數(shù)據(jù)庫(kù),主要分為關(guān)系型和非關(guān)系型數(shù)據(jù)庫(kù)。
3.3.1 關(guān)系型數(shù)據(jù)庫(kù)
平常所接觸到諸如Oracle、Hive、PG等,其實(shí)這些都屬于關(guān)系型數(shù)據(jù)庫(kù),本質(zhì)上都是建立在SQL(結(jié)構(gòu)化查詢語言)的基礎(chǔ)上,所以大的特征就是結(jié)構(gòu)化。這些適合大量的數(shù)據(jù)查詢,統(tǒng)一提供增、刪、改、查、排序等多種查詢。
數(shù)據(jù)庫(kù)類型有很多,以下僅列舉常遇見的3種:
3.3.2 非關(guān)系型數(shù)據(jù)庫(kù)(NoSQL)
此類數(shù)據(jù)庫(kù)的存在是出于性能、速度等方面考慮,主要是因?yàn)殛P(guān)系型數(shù)據(jù)庫(kù)涉及數(shù)據(jù)較大、結(jié)構(gòu)復(fù)雜,一些簡(jiǎn)單、體量小的存儲(chǔ)和查詢不適合在這樣的數(shù)據(jù)庫(kù)進(jìn)行運(yùn)作,所以才有這樣的數(shù)據(jù)庫(kù)。
上面也提到,其中redis就是這么一種,以及MongoD、Memcache。
3.3.3 數(shù)據(jù)庫(kù)表
在使用SQL查詢的時(shí)候,一個(gè)關(guān)鍵地方就是需要知道表結(jié)構(gòu)。所謂的表結(jié)構(gòu)就是數(shù)據(jù)表與表之間的關(guān)系,以及具體表字段的含義。所以數(shù)據(jù)庫(kù)表的設(shè)計(jì)十分重要,對(duì)后續(xù)SQL查詢計(jì)算、機(jī)器運(yùn)行性能、任務(wù)執(zhí)行等方面有很大的影響。
(樣例:usertable_01)
存在在數(shù)據(jù)庫(kù)中的就是一張張這樣的表,通過SQL語句查詢可以快速獲取所要的數(shù)據(jù)結(jié)果。所有原始數(shù)據(jù)經(jīng)過解析清洗之后,就會(huì)像這樣以結(jié)構(gòu)化的形式進(jìn)行存儲(chǔ),以便于管理和使用。
表設(shè)計(jì):系統(tǒng)有諸多數(shù)據(jù)指標(biāo),而對(duì)于產(chǎn)品或運(yùn)營(yíng)而言,就是定義各個(gè)指標(biāo)的統(tǒng)計(jì)邏輯和場(chǎng)景。那么對(duì)于技術(shù)者來說,除了輸出固定的查詢語句之外,還需要進(jìn)行合理的表設(shè)計(jì)。
所謂的表設(shè)計(jì),就是根據(jù)指標(biāo)體系把結(jié)構(gòu)化的數(shù)據(jù)分拆成多張數(shù)據(jù)表,并進(jìn)行有機(jī)關(guān)聯(lián),從而提供合理的統(tǒng)計(jì)輸出。
比喻需要固定了解每天使用程序的用戶的某些設(shè)備信息(手機(jī)型號(hào)、品牌、網(wǎng)絡(luò)環(huán)境等),就可以放在同一張表,而無需跨表關(guān)聯(lián)影響效率,同時(shí)這樣的設(shè)計(jì)有利于性能。但具體如何設(shè)計(jì),主要是基于業(yè)務(wù)的指標(biāo)體系考慮。
在大數(shù)據(jù)分析開發(fā)當(dāng)中,有諸如Spark、Hive、Hbase這些數(shù)據(jù)庫(kù)或計(jì)算引擎,但這些都基于一套核心的系統(tǒng),就是Hadoop。要開發(fā)一套完整的大數(shù)據(jù)開發(fā)系統(tǒng),大多數(shù)技術(shù)都是從Hadoop中獲取能力。
4.1.1 定義
Hadoop是大數(shù)據(jù)開發(fā)所使用的一個(gè)核心框架,是一個(gè)允許使用簡(jiǎn)單編程模型跨計(jì)算機(jī)集群分布式處理大型數(shù)據(jù)集的系統(tǒng)。很多關(guān)于大數(shù)據(jù)開發(fā)的技術(shù)模塊都基于此基礎(chǔ)上,覆蓋了數(shù)據(jù)傳輸、數(shù)據(jù)存儲(chǔ)管理、數(shù)據(jù)計(jì)算等諸多方面。
4.1.2 作用
使用Hadoop可以方便地管理分布式集群,將海量數(shù)據(jù)分布式地存儲(chǔ)在集群中,并使用分布式并行程序來處理這些數(shù)據(jù)。
4.1.3 架構(gòu)
一套完整的Hadoop框架涉及數(shù)據(jù)傳輸、存儲(chǔ)到計(jì)算等環(huán)節(jié),并在這些基礎(chǔ)上提供種類較多的組件,為快速搭建大數(shù)據(jù)分析平臺(tái)提供成熟的基礎(chǔ)能力。
4.2.1 離線計(jì)算
離線計(jì)算就是在計(jì)算開始前已知所有輸入數(shù)據(jù),輸入數(shù)據(jù)不會(huì)產(chǎn)生變化,且在解決一個(gè)問題后就要立即得出結(jié)果的前提下進(jìn)行的計(jì)算。時(shí)間上按天來算,就是T+1、T+2甚至T+7等,主要看指標(biāo)的時(shí)效性優(yōu)先級(jí)要求。
4.2.2 實(shí)時(shí)計(jì)算
實(shí)時(shí)計(jì)算是相對(duì)離線而言,就是指查詢條件不固定、目標(biāo)不明確,但又對(duì)數(shù)據(jù)需求的時(shí)效有較大要求,所以需要實(shí)時(shí)查詢進(jìn)行分析。
優(yōu)點(diǎn)是自定義條件多,能滿足多維分析的數(shù)據(jù)需求,缺點(diǎn)是考驗(yàn)查詢引擎,由于處理數(shù)據(jù)量大短時(shí)間輸出結(jié)果會(huì)有所偏差,且等待時(shí)間長(zhǎng)。
按照目前行業(yè)的發(fā)展,關(guān)于計(jì)算引擎已經(jīng)發(fā)展到了第4代,第1代是MapReduce,而在這里重點(diǎn)介紹5種。
整體來說,不同的業(yè)務(wù)場(chǎng)景采用不同的計(jì)算架構(gòu),沒有優(yōu)劣之分,只有合不合適。
很多時(shí)候,大家常接觸的都是數(shù)據(jù)可視化平臺(tái),比如常見的BI報(bào)表平臺(tái)、數(shù)據(jù)大屏等,都是充分使用了數(shù)據(jù)可視化技術(shù)進(jìn)行呈現(xiàn)。
那么實(shí)現(xiàn)這些效果,又用到了哪些技術(shù)手段?
在介紹可視化技術(shù)前,不得不先說數(shù)據(jù)報(bào)表平臺(tái),因?yàn)檫@是大多人常接觸的,如那些圖表、網(wǎng)絡(luò)圖譜、3D城市模型等。拋開單個(gè)而言,它是一個(gè)平臺(tái)化的產(chǎn)品。
目前第三方應(yīng)用較多的就有百度統(tǒng)計(jì)、阿里、友盟、神策等。
(樣例:報(bào)表平臺(tái))
(樣例:可視化屏)
實(shí)現(xiàn)數(shù)據(jù)可視化,除采用前端的基本技術(shù)外,還包括相關(guān)的圖形技術(shù)組件
5.2.1 web前端基礎(chǔ)技術(shù)
大多數(shù)情況下,前端使用的技術(shù)框架離不開這關(guān)鍵的3種語言,即CSS、HTML、JavaScript。
5.2.2 可視化技術(shù)應(yīng)用
可視化技術(shù)主要是針對(duì)數(shù)據(jù)層面而言的一些技術(shù)手段。因?yàn)檫@方面的技術(shù)已經(jīng)十分成熟,且大部分場(chǎng)景下的需求樣式是比較固定的,所以這樣的技術(shù)大多開發(fā)成為組件,并普遍開源。而這里則主要介紹前端常見的3種。
組件:英文名Component。所謂組件其實(shí)就是指一種可用“復(fù)用”的功能模塊。因?yàn)楫a(chǎn)品開發(fā)到了一定程度,很多時(shí)候設(shè)計(jì)較為接近的,那么開發(fā)往往會(huì)基于效率開發(fā)成一套可復(fù)用的組件,這樣每次遇到同類型的需求,即可快速調(diào)用。
比如一個(gè)柱狀圖,可以定義相關(guān)的位置、圖形形狀及布局。通過復(fù)用組件化之后,就可以任意改變里面的參數(shù),比如色值、大小、字號(hào)等,比較靈活,也省事。
推薦閱讀:《大數(shù)據(jù)平臺(tái)演進(jìn)之路 | 淘寶 & 滴滴 & 美團(tuán)》https://cloud.tencent.com/developer/article/1506317
注:本期的文章涉及較多技術(shù)術(shù)語,建議反復(fù)閱讀。以上的系統(tǒng)框架圖僅幫助閱讀理解,并不是完整的架構(gòu)圖。
?
作者:A.D,世界TOP50強(qiáng)公司產(chǎn)品一枚;公眾號(hào):吾某
本文由 @A.D. 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)作者許可,禁止轉(zhuǎn)載。
題圖來自Unsplash,基于CC0協(xié)議。
文章信息僅為作者觀點(diǎn),不代表愛盈利官方立場(chǎng),內(nèi)容僅供網(wǎng)友參考學(xué)習(xí)。。
【轉(zhuǎn)載說明】???若上述素材出現(xiàn)侵權(quán),請(qǐng)及時(shí)聯(lián)系我們付費(fèi)及進(jìn)行處理:shanliqiang@aiyingli.com