“OLAP”這個名詞最早誕生于1993年,,由關(guān)系型數(shù)據(jù)庫之父E.F.Codd博士提出,這也是世界范圍內(nèi)首次對多維數(shù)據(jù)庫與多維分析有一個蓋棺定論的概念定義,。但可能連考特博士本人也沒有預(yù)料到,,在短短二十余年的時間里OLAP型數(shù)據(jù)庫迅速在千億數(shù)據(jù)庫市場中站穩(wěn)了腳跟,并在大數(shù)據(jù)浪潮的推動下不斷拓寬著屬于自己的市場版圖,。在當(dāng)下這個時代,,傳輸?shù)臄?shù)據(jù)即是流動的石油,而OLAP數(shù)據(jù)庫則是企業(yè)從數(shù)據(jù)中獲取價值最為直接的工具,。
不同于OLTP領(lǐng)域在漫長的時間積淀下所形成的穩(wěn)定技術(shù)格局,,OLAP領(lǐng)域的數(shù)據(jù)庫產(chǎn)品目前還處于百家爭鳴、群雄割據(jù)的狀態(tài),。正所謂“亂世出英豪”,,2016年由俄羅斯搜索巨頭Yandex開發(fā)并開源的一款OLAP型數(shù)據(jù)庫產(chǎn)品ClickHouse在短時間內(nèi)迅速躥紅。作為后起之秀,,ClickHouse憑借著先天的設(shè)計優(yōu)勢,、極致的速度性能與靈活可擴展性,受到了國內(nèi)外企業(yè)的廣泛關(guān)注與使用,。
當(dāng)然對于數(shù)據(jù)庫產(chǎn)品而言,,僅僅做到性能上的出眾是遠遠不夠的,無論是開發(fā)者看重的上手難度,、學(xué)習(xí)成本,,還是企業(yè)看重的產(chǎn)品穩(wěn)定性與業(yè)務(wù)兼容性,現(xiàn)階段ClickHouse都難以滿足企業(yè)級用戶的使用需求,。2021年8月,,火山引擎正式對外發(fā)布了「ByteHouse」企業(yè)級數(shù)據(jù)庫產(chǎn)品。作為ClickHouse的企業(yè)版,,ByteHouse在解決上手與試錯難題的同時,,還能夠為企業(yè)用戶提供完善的產(chǎn)品技術(shù)支持服務(wù)。
極限業(yè)務(wù)場景下的千錘百煉,,國內(nèi)最大ClickHouse“玩家”打造的ByteHouse
如果我們想為ClickHouse尋找一個完美的“壓力測試場景”,,那么坐擁抖音、頭條、西瓜視頻等一系列頭部產(chǎn)品的字節(jié)跳動一定會榜上有名,?!肮?jié)點總數(shù)超過15000個、管理總數(shù)據(jù)超過600PB,、最大集群規(guī)模在2400余個節(jié)點”,,從數(shù)字上我們不難看出ClickHouse在字節(jié)跳動內(nèi)部業(yè)務(wù)場景中的深度應(yīng)用。
火山引擎是字節(jié)跳動旗下企業(yè)級技術(shù)服務(wù)平臺,,其基于開源的ClickHouse進行深度優(yōu)化和改造后,,推出了企業(yè)版產(chǎn)品ByteHouse。除自研表引擎,、擴展數(shù)據(jù)類型、冷熱數(shù)據(jù)分離等諸多自研優(yōu)勢以外,,ByteHouse的數(shù)據(jù)實時寫入能力也相較原生ClickHouse提升了兩倍以上,。在極限業(yè)務(wù)場景的打磨下,ByteHouse完成了由一個優(yōu)秀的開源OLAP引擎向完善的商業(yè)化企業(yè)級產(chǎn)品的蛻變,,能夠為企業(yè)級用戶海量數(shù)據(jù)的生產(chǎn)環(huán)境,,提供更強的數(shù)據(jù)查詢和寫入服務(wù)。
這里我們?yōu)榇蠹曳窒鞢lickHouse在字節(jié)跳動代表性業(yè)務(wù)場景的應(yīng)用案例與ByteHouse的優(yōu)化方案:
A/B測試下的推薦系統(tǒng)實時指標(biāo)
2016年,,字節(jié)跳動搭建了支持大規(guī)模產(chǎn)品實驗的A/B測試平臺,。在完成對抖音、西瓜視頻等全線業(yè)務(wù)的接入后,,字節(jié)跳動每天同時進行的A/B測試達到上萬場,,單日新增實驗數(shù)量超過1500個,覆蓋400多個大大小小的業(yè)務(wù),,累計A/B測試次數(shù)已經(jīng)突破70萬(截至2021年4月),。隨著推薦系統(tǒng)產(chǎn)生的數(shù)據(jù)量越來越大,單個節(jié)點消費能力的要求自然也水漲船高,。在使用ClickHouse支持A/B測試推薦系統(tǒng)的實時數(shù)據(jù)時,,火山引擎研發(fā)團隊也遇到了諸如單次數(shù)據(jù)吞吐量大、數(shù)據(jù)落盤時延低,,以及數(shù)據(jù)傳輸過程中不丟失且不重復(fù)等技術(shù)需求,。
ByteHouse通過異步構(gòu)建輔助索引的方式,及基于自研的Kafka Engine,,保證寫入性能在OLAP數(shù)據(jù)庫中具有領(lǐng)先優(yōu)勢,。同時,ByteHouse也支持exactly once語義,,確保數(shù)據(jù)傳輸中的原子性,,有效保障和滿足了字節(jié)業(yè)務(wù)部門在熱門活動實時數(shù)據(jù)分析上的訴求。
頭部APP端的大數(shù)據(jù)分析
上線短短四年時間,字節(jié)跳動的短視頻APP產(chǎn)品抖音的日活用戶便已突破6億,。除了抖音,,字節(jié)跳動也還有其他日活過億的頭部App產(chǎn)品,在龐大日活用戶的背后產(chǎn)生了海量的產(chǎn)品使用數(shù)據(jù)分析需求,。從業(yè)務(wù)的角度分析,,APP端產(chǎn)品的數(shù)據(jù)分析具有指標(biāo)計算相對復(fù)雜、數(shù)據(jù)總量較大且查詢模式多變的業(yè)務(wù)特點,,為此也需要具備高可用保障,,以及能夠應(yīng)對超大數(shù)據(jù)規(guī)模下交互式實時響應(yīng)的能力。
ByteHouse 提供了 PB 級數(shù)據(jù)秒級響應(yīng),,通過增強的自研引擎,,確保95%以上的查詢均可在秒級返回,針對APP端的業(yè)務(wù)多變性,,引入了新的數(shù)據(jù)類型支持動態(tài)schema,。同時通過自研的HAEngine和元數(shù)據(jù)持久化等優(yōu)化,ByteHouse提供了新的生產(chǎn)級高可用方案,,能夠保障其在大數(shù)據(jù)量場景下依然不會影響到查詢分析體驗,。
“運維工具+技術(shù)支持”,齊頭并進的ToB服務(wù)雙頭馬車
“使用難度,、運維成本”相信這是每一個企業(yè)級用戶在選型數(shù)據(jù)庫產(chǎn)品時,,會去關(guān)注的兩大衡量指標(biāo)。同時,,這兩項指標(biāo)也成為了橫跨在ClickHouse“關(guān)注者”與“使用者”之間巨大的鴻溝,。無論是國內(nèi)還是國外的開發(fā)論壇上,ClickHouse“上手容易,,用好很難”已經(jīng)成為開發(fā)者共同的認(rèn)知,。正所謂“九層之臺,起于累土”,,對于企業(yè)級用戶的實際應(yīng)用場景而言,,配套的運維能力與技術(shù)支持是企業(yè)級產(chǎn)品的基石,發(fā)揮的作用至關(guān)重要,。
ByteHouse 提供了一個自助服務(wù)平臺,,針對部署和運維提供了多種工具進行集群管理。對于常規(guī)的運維操作,,ByteHouse支持自動下發(fā)版本調(diào)整,、節(jié)點重啟和替換等運維任務(wù),并具有自動發(fā)現(xiàn)和替換故障節(jié)點的能力,。同時,,針對系統(tǒng)的運行情況,,ByteHouse也提供了全面的監(jiān)控、負(fù)載指標(biāo),,使其具備便捷,、清晰的管理能力。比如說,,在集群使用過程中,,ByteHouse可以隨時對CPU利用率與磁盤利用率的警戒水位線等關(guān)鍵指標(biāo)進行監(jiān)控,對健康度進行可視化展示,。ByteHouse系統(tǒng)內(nèi)部還可以根據(jù)企業(yè)自身需求,,配置故障、服務(wù)異常等報警功能的閾值,,方便企業(yè)級用戶進行預(yù)處理操作,。
針對數(shù)據(jù)庫產(chǎn)品不可避免存在的慢查詢問題,ByteHouse提供了強大的查詢診斷功能,,對負(fù)載過重的后臺合并任務(wù),,也可以進行自動診斷。這些“事前”,、“事中”、“事后”的運維能力,,有效提升了可用性,,大大降低了運維復(fù)雜度。在ByteHouse的加持下,,大型企業(yè)用戶或許只需七名SRE工程師就能支持上萬節(jié)點的運維,。
此外,火山引擎圍繞ByteHouse提供了完善的產(chǎn)品技術(shù)支持,,從產(chǎn)品的安裝部署,、業(yè)務(wù)應(yīng)用與項目的0到1、端到端落地的多重維度,,為企業(yè)用戶提供包括架構(gòu)咨詢,、使用優(yōu)化、進階培訓(xùn)等服務(wù),。從完善的自動化運維工具,,到覆蓋產(chǎn)品與項目的專業(yè)技術(shù)支持,火山引擎ByteHouse的ToB拓展之路,,走的平穩(wěn)且堅實,。
先狹義后廣義,企業(yè)級數(shù)據(jù)庫產(chǎn)品的商業(yè)化范式
雖千行百業(yè)皆需賦能,,但需求痛點個個不同,。對于企業(yè)級交互式分析數(shù)據(jù)庫產(chǎn)品而言,既要儲備深度足夠的技術(shù)能力,同時還要具備靈活適應(yīng)不同業(yè)務(wù)場景的泛化能力,?!跋泉M義,后廣義”,,這也是火山引擎在開發(fā)ByteHouse產(chǎn)品中貫穿始終的心路歷程,。
作為企業(yè)級交互式數(shù)據(jù)庫產(chǎn)品,目前ByteHouse已經(jīng)成功在金融,、制造,、零售、互聯(lián)網(wǎng)等行業(yè)中逐漸落地生根,,并切實地幫助企業(yè)解決其在大數(shù)據(jù)分析領(lǐng)域中的痛點,。火山引擎向CSDN分享了ByteHouse在實際應(yīng)用場景中取得的進展:
在服務(wù)傳統(tǒng)工業(yè)制造應(yīng)用場景中,,客戶基于工業(yè)互聯(lián)網(wǎng)大數(shù)據(jù)平臺,,積累了數(shù)十萬臺大型設(shè)備,并以每天5億條的速度不間斷產(chǎn)生IoT數(shù)據(jù),,急需構(gòu)建一個具有高性能,、高可用、易擴展的大數(shù)據(jù)平臺,,以支撐千億級數(shù)據(jù)的性能指標(biāo)查詢和高效的數(shù)據(jù)計算分析,。ByteHouse在技術(shù)選型中脫穎而出,在實時數(shù)據(jù)寫入性能,、并發(fā)查詢,、高可用和集群穩(wěn)定性、監(jiān)控可視化等方面滿足其核心訴求,,并進一步支持了報警預(yù)測實時推送,、電子圍欄等場景。
作為泛互聯(lián)網(wǎng)場景下的代表性產(chǎn)業(yè),,“數(shù)據(jù)驅(qū)動”正逐漸成為游戲行業(yè)發(fā)展的核心源動力,。在游戲行業(yè)的實際應(yīng)用場景中,客戶需要根據(jù)人群包,,在豐富的維度標(biāo)簽下洞察人群特征分布,,實現(xiàn)快速理解用戶。而現(xiàn)有的技術(shù)棧面臨著高基維,、標(biāo)簽數(shù)據(jù)良多,,以及復(fù)雜的業(yè)務(wù)邏輯等眾多難題。ByteHouse憑借高基維優(yōu)化,、BitmapEngine等核心優(yōu)化,,有效支持了用戶包的運算和亞秒級查詢響應(yīng),,極大提升了人群畫像洞察、差異分析,、個體畫像分析等場景下的查詢體驗,。
在OLAP場景需求快速增長的當(dāng)下,企業(yè)對于交互式分析數(shù)據(jù)庫產(chǎn)品的需求,,仍將會進一步增加,。火山引擎ByteHouse利用自身場景的沉淀推出企業(yè)級“ClickHouse”服務(wù),,在CSDN看來可謂是恰逢其時,。它的出現(xiàn),為處在大數(shù)據(jù)浪潮中的企業(yè)級用戶提供了OLAP場景下的一站式服務(wù),,有助于其打通大數(shù)據(jù)分析場景化落地的“最后一公里”,。