據(jù)QuestMobile報告顯示,移動互聯(lián)網(wǎng)已經(jīng)進入了下半場,在使用人數(shù)和使用時長方面已經(jīng)沒有明顯增長,互聯(lián)網(wǎng)流量已經(jīng)趨于飽和。
互聯(lián)網(wǎng)平臺作為廣告投放主要陣地,其流量紅利逐漸消退,讓越來越多的廣告企業(yè)和從業(yè)者開始探索精細化營銷的新路徑,取代以往的全流量、粗放式的廣告轟炸。精細化營銷意味著要在數(shù)以億計的人群中優(yōu)選出那些最具潛力的目標受眾,這無疑對提供基礎(chǔ)引擎支持的數(shù)據(jù)倉庫能力,提出了極大的技術(shù)挑戰(zhàn)。
在人群圈選分析中, 分析師一般利用各種標簽組合,挑選出最合適的人群,進而完成廣告推送,達到精準投放的效果。但由于人群查詢在不同標簽組合下的結(jié)果集大小不同,在一次廣告投放中,分析師需要經(jīng)過多次的邏輯調(diào)整,以獲得”最好”的人群包。抖音集團擁有廣泛的廣告投放場景,在日常實踐中,我們發(fā)現(xiàn)以下痛點問題:
- 首先,數(shù)據(jù)預(yù)估。廣告主需要對選定的人群組合進行預(yù)估,以便判斷投放情況并確定投放預(yù)算。但廣告平臺用戶越來越多,有的平臺DAU達到上億,使得人群包數(shù)據(jù)量過大,技術(shù)上只能采用1/10抽樣存儲,將導(dǎo)致10%誤差。
- 其次,性能問題。為了保證人群圈選精準度,廣告主往往會設(shè)定多樣、復(fù)雜的人群圈選條件,導(dǎo)致底層計算邏輯復(fù)雜,比如單次計算可能包含幾百,甚至上千個人群包。Hive和Elasticsearch等方案在處理大數(shù)據(jù)量時,查詢速度慢。如果研發(fā)人員查詢某個廣告主的所有用戶,該方案需要掃描整個用戶庫,整個過程需要幾分鐘甚至幾個小時,無法滿足廣告主實時性要求。
- 最后,存儲問題。Hive和Elasticsearch等方案需要額外的索引結(jié)構(gòu),使得存儲空間變大,導(dǎo)致成本增加。
在以往,研發(fā)團隊通常使用兩種方案來解決以上問題:
方案一:將每個人群包存儲為一個Array類型的數(shù)據(jù)結(jié)構(gòu),每次查詢需要從Array中找到某一個特定ID。
方案二:使用一個表來存儲用戶ID,在查詢的時使用In/Join計算多個人群的交集。
結(jié)合內(nèi)部長期使用經(jīng)驗,火山引擎團隊發(fā)現(xiàn)無論是方案一或方案二,都存在當(dāng)數(shù)據(jù)量逐漸增大,查詢速度無法滿足實時分析需求的問題?;诟咝阅?、分布式特點,ClickHouse可以滿足大規(guī)模數(shù)據(jù)的分析和查詢需求,因此研發(fā)團隊以開源ClickHouse為基礎(chǔ),研發(fā)出火山引擎云原生數(shù)據(jù)倉庫ByteHouse,并在其中定制一套處理模型——BitEngine,用于解決集合的交并補計算在實時分析場景中的性能提升問題。
據(jù)介紹,BitEngine是一個高效集合數(shù)據(jù)處理模型,底層基于MergeTree Family存儲引擎,并在此基礎(chǔ)上引入了BitMap64類型,開發(fā)了系列相關(guān)運算函數(shù)。BitEngine提供的BitMap64類型適合表達具有特定關(guān)系的大量實體ID的集合,將集合的交并補運算轉(zhuǎn)化為bitmap之間的交并補運算,從而達到遠超普通查詢的性能指標。
那么,BitEngine如何應(yīng)用在人群圈選場景中?舉個例子,廣告主需求為圈選出“人群包A”和“人群包B”的交集人群,完成廣告精準投放。
人群包情況: ??人群包A = [10001, 20001,30001,40001,50001],人群包B = [10001, 20001,20002,20003,20004] 期望結(jié)果: ??通過BitEngine計算A&B = [10001, 20001] |
首先,人群包按照一定規(guī)則劃分為多個區(qū)間,任意兩個區(qū)間之間的人群包沒有交集,由BitEngine保障數(shù)據(jù)的讀取和計算是嚴格按照區(qū)間進行;其次,BitEngine在數(shù)據(jù)讀取時會為每一個文件構(gòu)建一個讀任務(wù),由一個線程調(diào)度模塊完成整個任務(wù)調(diào)度和讀??;最后,BitEngine完成所有中間結(jié)果計算后,按照結(jié)果的輸出要求做一次數(shù)據(jù)合并,由此完成交集計算。已上線業(yè)務(wù)的測試表明,相比普通和Array或者用戶表方式,BitEngine在查詢速度上有10-50倍提升。
BitEngine上線前后查詢耗時監(jiān)控
BitEngine不僅僅在抖音集團海量廣告投放場景中使用,目前更是集成在火山引擎云原生數(shù)據(jù)倉庫ByteHouse中對外輸出。火山引擎ByteHouse主要為用戶提供極速分析體驗,能夠支撐實時數(shù)據(jù)分析和海量數(shù)據(jù)離線分析,具備便捷的彈性擴縮容能力,極致分析性能和豐富的企業(yè)級特性,目前已經(jīng)與中國地震臺網(wǎng)中心、海王集團、莉莉絲游戲、極客邦科技等諸多行業(yè)企業(yè)達成合作,深度助力各個行業(yè)數(shù)字化轉(zhuǎn)型。
本文來自投稿,不代表增長黑客立場,如若轉(zhuǎn)載,請注明出處:http://gptmaths.com/cgo/market/110066.html