Kylin,讓決策的速度配得上你的激情

Kylin,讓決策的速度配得上你的激情

前陣子,朋友送了我一本多維資料分析的工具書。今天打算當個偽資料分析師跟大家分享一下學習心得。

提到資料分析和應用的行家,就不得不提阿里巴巴。它從電子商務起家,逐漸發展成為資訊科技(IT)公司,到現在演進成為資料技術(DT)公司。無疑,阿里是成功的。

資料是新能源,有了阿里的前車之鑑,無數的企業都認知到資料的重要性。大家紛紛加快推進數字化轉型,同時資料中臺專案也藉助中臺戰略遍地開花,真是無中臺,不企業。

資料庫的應用型別

先交代一些基礎概念,資料庫的主要應用型別分為兩類,OLTP和OLAP。隨著大資料技術的發展,混合場景(HTAP)也成了一種主流特徵。

OLTP:聯機交易處理(Online Transaction Processing)

交易,就是做業務。比如一家汽車4S店,客戶買車就是交易,資料庫會記錄交易的客戶買了哪款車型,還包括交易的時間、金額,以及車的顏色和配置。OLTP的主要特徵是,資料增、刪、改比較頻繁,資料以行的格式儲存。

OLAP:聯機分析處理(Online Analytical Processing)

一家汽車4S連鎖企業,或汽車生產廠商,在全國各地有很多家4S店,如果想進行經營決策,就需要結合歷史交易資料進行整體資料分析,比如,某季度,不同車型在不同城市的銷售情況,哪款車型賣的最好,什麼顏色的車最受歡迎等。OLAP的主要特徵是,通常有配套的資料模型,以統計分析為主,資料以列的格式儲存。

HTAP:混合模式處理(Hybrid Transaction Analytical Processing)

隨著技術的發展,在之前學習SequoiaDB的時候,看到了HTAP這個概念,就是一個產品和架構可以同時支撐OLTP和OLAP場景。傳統的商業資料庫Oracle和DB2在當前版本中,也都提供了行列混存的模式,需要建立資料表的時候宣告以列的形式儲存。但我感覺他們這種玩法,前景已然黯淡。

把剛才的這套理論,搬到產品數量更多,交易頻次更高的環境中,就會發現傳統的架構支撐乏力。所以,在網際網路系統架構演進過程中,交易層面需要基於分庫分表和讀寫分離化解,分析領域就只能是分散式和MPP的大資料架構進行支撐了。

Kylin,讓決策的速度配得上你的激情

多維立方體,屬於你的資料魔方

今天不是要討論行式和列式資料庫的技術,而是分享OLAP資料應用中的一個細分領域,多維資料分析。

說到多維資料分析,就會提到立方體,專業術語叫Cube,就是把多個維度資料和度量指標存放在一個數據立方體中。比如時間,機構,產品是維度,銷售數量和金額是度量。

我對Cube最初的認知,源於工作早期使用Cognos的經驗。Cognos給我最好的體驗就是,可以透過滑鼠拖拽自由組合自己想要的維度進行分析,還能下鑽。

Cognos後來被IBM收購,想想那個時候廠商的競爭,就是你有的,我也要有。在這之前,Oracle收購了Hyperion ESSBASE,這兩個都是曾經的企業級多維資料儲存分析產品,一切為了對標。

隨著技術的發展,產品更新迭代,如今大資料時代,對於OLAP又有了有兩個細分概念。

MOLAP:Multidimesional OLAP,基於多維資料的立方體,以Kylin為代表

ROLAP:Relational OLAP ,基於關係型的寬表,以Druid為代表

Kylin,讓決策的速度配得上你的激情

Kylin的是什麼?

Kylin,全稱Apache Kylin,一種MOLAP的資料分析引擎。特別值得一提的是,這是由中國人主導開發的Apache基金會頂級開源專案,最早脫胎於eBay中國研發中心。

去年,跟Kyligence(Kylin的商業支援公司)做過一次技術交流,當時收穫並不是很大。後來,無意間看了他們出的一本書,才對Kylin有了比較深入的瞭解。

時代就是這樣,網際網路公司是科技浪潮中的弄潮兒,遇到的問題有可能是現有產品無法解決的,又或者是現有方案成本高昂。不過,網際網路企業往往都有很強的技術研發能力,自研也就順理成章。

當年,eBay使用的傳統資料倉庫和商業智慧平臺出現“瓶頸”,而當時Hadoop平臺雖然可以批次處理大規模資料,但無法提供高效的資料互動分析。

於是,Kylin被eBay孵化了!

Kylin的定位

Kylin就是一個BI on Hadoop大資料解決方案,提供多維資料分析(MOLAP)的秒級響應。目前國內美團和小米等網際網路公司都在使用Kylin。

總結一些我對Kylin體系和模組的理解:

資料來源和模型:

主要支援Hive,RDBMS和Kafka,但只支援星型模型。

構建引擎:

早期支援MapReduce計算引擎,新版本支援Spark計算引擎。除了全量構建外,對基於時間的分割槽特性,支援增量構建。簡單說就是,支援批流一體化的Lambda架構。

儲存引擎:

構建好的Cube以Key-Value的形式儲存在HBase中,透過最佳化Rowkey加速查詢。每一種維度的排列組合計算結果被儲存為一個物化檢視,叫Cuboid。

最佳化演算法:

Cube本身就是用空間換時間,但也會根據演算法,剪枝最佳化掉一些多餘的Cuboid,尋求平衡。

訪問介面:

支援標準SQL介面,可以對接Tableau和Zeppelin等BI工具。SQL透過查詢引擎,可以被路由到對應的Cuboid上。

當下,也聽到了業界的另一種聲音,因為列式資料庫的優勢,可以承載更多的分析查詢,會降低了對於Cube的需求,我個人對這個看法持保留意見。

雖然MPP和列式儲存提高了計算和儲存的速度,但並沒有改變查詢本身的複雜度,也沒有改變查詢時間隨資料量增長而增長的事實。

還好,Kylin可以無縫整合Cognos BI,而僅僅替換掉Cognos Power Cube,這樣可以在保留使用者使用習慣的同時,提升多維分析的效能和使用者體驗。

Kylin,讓決策的速度配得上你的激情

讓決策的速度配得上你的激情

在資料分析世界裡,套路就是常規報表,按既定的維度展開,彙總。

已知的叫套路,未知的才叫挖掘。有些銷售線索,不同維度間的關聯性分析,可能需要業務運營人員和資料分析師的一些創意。找到一些隱性相關性,說不定就是一個被忽視掉的利潤增長點。

如果可以提供足夠快速的資料分析能力,支援業務分析,也是對業務的一種賦能。這樣,分析人員可以花更多的時間和精力在模型構建上,而不是等待查詢結果。

今天,希望你看完這篇文章後,知道當下這個多維的資料世界中,你能遇見的最好的樣子。也希望能給正在從事資料分析的你,一個選擇的權利,而不是每一次無奈的等待,消耗掉你的激情。

請記住,大資料時代,你期待的多維分析依然是秒級響應!