聽聞Teradata退出中國,我想起了我經歷過的一個數倉專案

qing_yun發表於2023-02-17

昨天,Teradata撤出中國,我想起了我在20年前做的資料倉儲專案。想當年Teradata是資料倉儲的代名詞啊,就如同現在搜尋東西好多人說百度一下一樣。

可惜我沒有用過Teradata。2002年,我基於SQLServer的資料倉儲+商業智慧做了一套所謂的決策支援系統。決策支援系統DSS,這樣的名字在當年很流行。

(1)

20年前的資料來源和現在仍然差不多:

  • 不少來自Excel,那就ETL抽進來

  • 有些想要採集的資料沒有應用軟體,那就用OA-無程式碼表單做個簡單應用錄入進來,然後再ETL抽進來

  • 有些資料是專門的應用軟體沉澱下來的,ETL抽進來

所以第一個需要的就是ETL工具。我是2013年以前用SQLServer套件,記得SQLServer的ETL工具被命名為Integration Services。

(2)

多種資料來源的資料抽進來,因為他們都來自不同系統,所以有些公用的資料事實上是主資料,但是過去企業上應用都是一塊塊上的應用,財務部門上財務軟體供本部門的財務人員內部使用,銷售部門上銷售軟體供本部門的銷售人員內部使用,採購部門上採購部門供本部門的採購人員內部使用,所以事實上的主資料都是不統一的,事實上的同一個東西,在不同系統有不同名字、不同編碼、不同欄位。在日常應用軟體各自部門使用時沒啥問題,但是這次要做企業整體的決策支援系統,要給老闆看資料,這就必須要做統一。所以必須要有主資料管理系統,這就涉及到了MDM(Master Data Mgt.)。

(3)

主資料要人為地定義下來標準,然後做清洗-整合-統一,或者以誰為主做互相對映,這就涉及到主資料的複製分發或同步。我記得SQLServer有一個專門的Replication Services。現在在新一代大資料技術中,大家更經常使用Kafka。

(4)

除了主資料放在MDM裡,那些業務資料ETL來-清洗好,就放在事實表裡。這就涉及到ODS服務(Operational Data Store),以便下一步在資料倉儲裡建立模型-建立模型維度,然後把資料從ODS裡再抽取到資料倉儲裡,按照維度儲存取來,以後好做多維分析。

企業資料往往是文字型、結構性的,所以過去的ODS最擅長處理這類資料。網際網路公司的資料更加多樣化,部落格文章、郵件、IM訊息、文件、圖片、影片,所以才發明了Hadoop來充當資料湖。不過Hadoop資料湖擅長處理非結構化、多媒體資料,反而又不擅長處理文字型、結構性資料,所以現在人們又在探索湖上架倉、湖倉一體,如Delta、Hudi、Iceberg就是這麼探索著。

(5)

好,下一步這就涉及到了資料倉儲。我學習到的資料倉儲都是列式多維資料倉儲。但是現在很多人說資料倉儲就是個虛擬概念,不需要非得用多維資料倉儲,普通的行式關聯式資料庫就能搞資料倉儲。這就讓我比較懵啊,這和我的經歷不一樣啊。我想最起碼你也得用OLAP型資料庫啊,而不能用OLTP型資料庫啊。

所以對於中國客戶,目前的現狀主要是出複雜的二維報表,而不是做多維分析,我的建議是不要搞多維資料倉儲,不要用真正的資料倉儲產品,用OLAP型資料庫搞就行了。所以我更建議推薦類似Greenplum、ClickHouse、Apache Doris就可以。但是我堅決反對用OLTP關聯式資料庫搞資料倉儲。有的人是直接在OLTP SQLServer行式關聯式資料庫或者MySQL行式關聯式資料庫上搞所謂的資料倉儲,把所謂的資料倉儲、報表、商業智慧都混為一談,要麼都叫資料倉儲、要麼都叫商業智慧,真是偷樑換柱的可以啊。

(6)

按照領域-按照主題-按照模型-按照維度,把資料從ODS入倉。但是入倉過程中還有一個小插曲。因為有些複雜分析指標需要複雜計算出來,還得儲存起來,以便以後做歷史對比。

所以,需要專門的多維計算程式語言來做某些指標的複雜計算,計算出來結果再放進數倉裡。像SQLServer裡有DMX(多維擴充套件開發語言)就是幹這事用的。現在在開源新一代大資料技術中,其實Flink或Spark它們乾的就是這個事。

(7)

資料終於全都按維度條狀入了倉後,人們做的最常見的事情就是出複雜分析報表,需要很多關聯性的指標都配比出現在同一張報表裡。所以這裡就涉及到SQLServer的Rerport Service。

很多人不搞多維數倉,在OLTP關聯式資料庫上直接出複雜配比綜合分析報表,我見過有人寫了1000多行的儲存過程來出一張報表,根本很難閱讀看懂、修改、除錯跟蹤。

在90年代用Powerbuilder出複雜報表時有個工具叫Cross Table,我們叫交叉報表,我看在Excel裡叫Pivotal叫透視表。這都是做複雜配比綜合分析平面報表的常見工具。

(8)

還有一種根本不是報表,但被人們稱作報表,其實我把它稱為查詢Query,只不過用Grid顯示為Table格式。我想這類東西就不應該用多維資料倉儲搞,只需要從ODS事實表裡出就行。不過現在新一代大資料技術中,主要使用Presto這樣的大資料查詢引擎來搞。

SQLServer商業智慧套件裡還有一個服務叫Index Services,就是全文檢索服務。不過現在新一代大資料技術中,主要使用ElasticSearch這樣的大資料搜尋引擎來搞。

(9)

還有一種更復雜的視覺化分析,它既帶有視覺化的特點,又帶有分析的特點,我們把它叫做Cube。

我在SQLServer商業智慧套件裡、在IBM Cognos套件裡,都使用過Cube。它可以上鑽下鑽、旋轉、切片。我看在新一代大資料技術中,Kylin就在重點做這個。

(10)

除了Cube這種既帶有視覺化特點又有分析特點的工具之外,還有一種真正的分析,在SQLServer裡叫Analysis Services。也有人稱作是資料探勘。

我用Analysis Services做過分類演算法、聚類演算法、決策樹演算法、線性迴歸演算法、時序演算法。當時微軟還沒提供神經網路演算法。現在新一代大資料技術Spark套件中,也有MLLib,就是機器學習演算法庫,也是這些。不過現在人工智慧Tensorflow平臺和Pytorch平臺上的,都已經是深度學習的各種演算法和模型了,這和機器學習演算法庫是另外的路數了。

(11)

我幾乎把SQLServer商業智慧套件裡的產品都用了遍,不過事實結果是:

賣的不好,可以在宣傳和打單時展示實力,但實際上沒賣出幾套。

實施很複雜,要做很多SQL編寫工作。過去的實施顧問還會資料庫結構和SQL,現在的實施顧問只會功能介面配置了。雖然已經內建了不少業務分析模板,但是總要做一些從展示修改到資料計算修改到資料ETL抽取修改的東西。

客戶使用過程中,倒是出了很多內建的複雜的配比指標報表視覺化和圖表視覺化,但是很不幸,客戶業務專業能力水平比較低,看不懂這麼複雜的配比綜合報表。

真是有什麼樣水平的甲方,就需要匹配什麼樣水平的乙方。

(12)

你問我這十多年來產生了那麼多新一代大資料技術,到底解決了啥問題?

我想說的是:這些新一代大資料技術,主要適用於網際網路公司,他們主要是多模態的資料,而且是真正的海量資料。而中國企業內部應用,主要是文字型結構性資料,而且是假的海量資料(每天連十萬條重要的業務資料記錄都產生不了),所以我的觀點是:中國企業內部應用資料分析,建議還是用20多年前老的商業套件來搞,不要趕時髦。因為新一代大資料技術,又不適合,又更復雜,沒那麼必要。

不過,我也知道我這麼說也是白說。乙方總得要講新故事新產品,管你需不需要新一代大資料技術,搞就是了。掙錢嘛,不寒磣。

來自 “ 阿朱說 ”, 原文作者:呂建偉;原文連結:https://mp.weixin.qq.com/s/K64FeQolMhhgXosKMblDkQ,如有侵權,請聯絡管理員刪除。

相關文章