自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

從數(shù)據(jù)倉(cāng)庫(kù)到數(shù)據(jù)湖——淺談數(shù)據(jù)架構(gòu)演進(jìn)(加強(qiáng)版)

開發(fā) 開發(fā)工具 數(shù)據(jù)倉(cāng)庫(kù) 數(shù)據(jù)湖
我們嘗試過在數(shù)據(jù)加載過程中自學(xué)習(xí)的產(chǎn)生數(shù)據(jù)庫(kù)schema,證明這個(gè)思路是可行的。基于結(jié)構(gòu)化的數(shù)據(jù),這個(gè)過程非常容易。但對(duì)于非結(jié)構(gòu)化的數(shù)據(jù),還是存在很大的挑戰(zhàn)。使用機(jī)器學(xué)習(xí)的方式,模型訓(xùn)練成本恐怕和人工抽取schema的工作量是相當(dāng)?shù)?。這是開放的話題,可以討論。

 網(wǎng)管產(chǎn)品需要從數(shù)據(jù)倉(cāng)庫(kù)的角度來看,才能獲得完整的視圖。數(shù)據(jù)集成真正從大數(shù)據(jù)的角度來看,才能明白其中的挑戰(zhàn)。一個(gè)運(yùn)行了近20年的數(shù)據(jù)架構(gòu),必然有其合理性。也正是因?yàn)槟甏眠h(yuǎn),存量過多,才導(dǎo)致舉步維艱。在Cloud和5G時(shí)代,超密度網(wǎng)絡(luò)集成和大數(shù)據(jù)洞察需求給電信供應(yīng)商帶來新的挑戰(zhàn),從數(shù)據(jù)倉(cāng)庫(kù)到數(shù)據(jù)湖,不僅僅架構(gòu)的變革,更是思維方式的升級(jí)。本文淺談筆者在組織中看見的技術(shù)嬗變和演進(jìn)。

01

數(shù)據(jù)倉(cāng)庫(kù)歷史沿革

1970年,關(guān)系數(shù)據(jù)庫(kù)的研究原型System R 和INGRES開始出現(xiàn),這兩個(gè)系統(tǒng)的設(shè)計(jì)目標(biāo)都是面向on-line transaction processing (OLTP)的應(yīng)用。關(guān)系數(shù)據(jù)庫(kù)的真正可用產(chǎn)品直到1980年才出現(xiàn),分別是DB2 和INGRES。其他的數(shù)據(jù)庫(kù),包括Sybase, Oracle, 和Informix都遵從了相同的數(shù)據(jù)庫(kù)基本模型。關(guān)系數(shù)據(jù)庫(kù)的特點(diǎn)是按照行存儲(chǔ)關(guān)系表,使用B樹或衍生的樹結(jié)構(gòu)作為索引和基于代價(jià)的優(yōu)化器,提供ACID的屬性保證。

到1990年,一個(gè)新的趨勢(shì)開始出現(xiàn):企業(yè)為了商業(yè)智能的目的,需要把多個(gè)操作數(shù)據(jù)庫(kù)中數(shù)據(jù)收集到一個(gè)數(shù)據(jù)倉(cāng)庫(kù)中。盡管投資巨大且功能有限,投資數(shù)據(jù)倉(cāng)庫(kù)的企業(yè)還是獲得了不錯(cuò)的投資回報(bào)率。從此,數(shù)據(jù)倉(cāng)庫(kù)開始支撐各大企業(yè)的商業(yè)決策過程。數(shù)據(jù)倉(cāng)庫(kù)的關(guān)鍵技術(shù)包括數(shù)據(jù)建模,ETL技術(shù),OLAP技術(shù)和報(bào)表技術(shù)等。

目前主要的數(shù)據(jù)倉(cāng)庫(kù)產(chǎn)品供應(yīng)商包括Oracle、IBM、Microsoft、SAS、Teradata、Sybase、Business Objects(已被SAP收購(gòu))等。

電信行業(yè)是最早采用數(shù)據(jù)倉(cāng)庫(kù)技術(shù)的行業(yè)之一。由于電信公司運(yùn)行在一個(gè)快速變化和高速競(jìng)爭(zhēng)的環(huán)境,擁有大量的客戶基礎(chǔ),從而產(chǎn)生和存儲(chǔ)海量的高質(zhì)量數(shù)據(jù)。電信公司利用數(shù)據(jù)挖掘技術(shù)降低營(yíng)銷成本,識(shí)別欺詐,并更好地管理其電信網(wǎng)絡(luò)。

02

數(shù)據(jù)倉(cāng)庫(kù)概念

數(shù)據(jù)倉(cāng)庫(kù)之父Bill Inmon在1991年出版的“Building the Data Warehouse”一書中所提出的定義被廣泛接受——數(shù)據(jù)倉(cāng)庫(kù)(Data Warehouse)是一個(gè)面向主題的(Subject Oriented)、集成的(Integrated)、相對(duì)穩(wěn)定的(Non-Volatile)、反映歷史變化(Time Variant)的數(shù)據(jù)集合,用于支持管理決策(Decision Making Support)。這是一個(gè)偏向?qū)W術(shù)的定義,卻非常準(zhǔn)確的界定了數(shù)據(jù)倉(cāng)庫(kù)與其他數(shù)據(jù)庫(kù)系統(tǒng)的本質(zhì)區(qū)別。

“A data warehouseis a subject-oriented, integrated, time-variant, and nonvolatile collection ofdata in support of management’s decision-making process.”

—W. H. Inmon

要理解數(shù)據(jù)倉(cāng)庫(kù)的概念,需要從與數(shù)據(jù)庫(kù)的系統(tǒng)的對(duì)比來看。

數(shù)據(jù)庫(kù)是作為“所有處理的單一數(shù)據(jù)源”出現(xiàn)和定義的。數(shù)據(jù)庫(kù)的出現(xiàn)有兩個(gè)驅(qū)動(dòng)因素,第一是70年代以前大量應(yīng)用程序和主文件的分散存放導(dǎo)致一片混亂和大量冗余數(shù)據(jù)。第二是直接存取存儲(chǔ)設(shè)備的出現(xiàn)使得按記錄尋址成為可能?;贒BMS的在線事務(wù)處理為商業(yè)發(fā)展開辟全新的視野。

數(shù)據(jù)庫(kù)系統(tǒng)的設(shè)計(jì)目標(biāo)是事務(wù)處理。數(shù)據(jù)庫(kù)系統(tǒng)是為記錄更新和事務(wù)處理而設(shè)計(jì),數(shù)據(jù)的訪問的特點(diǎn)是基于主鍵,大量原子,隔離的小事務(wù),并發(fā)和可恢復(fù)是關(guān)鍵屬性,最大事務(wù)吞吐量是關(guān)鍵指標(biāo),因此數(shù)據(jù)庫(kù)的設(shè)計(jì)都反映了這些需求。

數(shù)據(jù)倉(cāng)庫(kù)的設(shè)計(jì)目標(biāo)是決策支持。歷史的,摘要的,聚合的數(shù)據(jù)比原始的記錄重要的多。查詢負(fù)載主要集中在即席查詢和包含連接,聚合等操作的復(fù)雜查詢。相對(duì)于數(shù)據(jù)庫(kù)系統(tǒng)來說,查詢吞吐量和響應(yīng)時(shí)間比事務(wù)處理吞吐量重要的多。

數(shù)據(jù)倉(cāng)庫(kù)和數(shù)據(jù)庫(kù)系統(tǒng)的區(qū)別,一言蔽之:OLAP和OLTP的區(qū)別。數(shù)據(jù)庫(kù)支持是OLTP,數(shù)據(jù)倉(cāng)庫(kù)支持的是OLAP。

對(duì) OLTP 和OLAP 的區(qū)別還可以有一個(gè)維度,就是及時(shí)性需求。OLTP對(duì)事務(wù)的及時(shí)性需求較高,而OLAP 則不然。

——曹洪偉

數(shù)據(jù)倉(cāng)庫(kù)一般基于數(shù)據(jù)庫(kù)實(shí)現(xiàn),但是為部署和維護(hù)上是分離的。數(shù)據(jù)倉(cāng)庫(kù)可以是基于關(guān)系數(shù)據(jù)庫(kù)實(shí)現(xiàn)的,這樣的數(shù)據(jù)倉(cāng)庫(kù)被稱為ROLAP。數(shù)據(jù)倉(cāng)庫(kù)也可以是基于多維數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)的,這樣的數(shù)據(jù)倉(cāng)庫(kù)被稱為MOLAP。

03

數(shù)據(jù)倉(cāng)庫(kù)架構(gòu)

數(shù)據(jù)倉(cāng)庫(kù)是一種體系結(jié)構(gòu),而不是一種技術(shù)。數(shù)據(jù)倉(cāng)庫(kù)最為核心的內(nèi)容分類兩部分:

基于關(guān)系數(shù)據(jù)庫(kù)的多維建模(RDBMS-based dimensional modeling)

基于數(shù)據(jù)立方體的OLAP查詢(cube-based OLAP)

數(shù)據(jù)倉(cāng)庫(kù)體系結(jié)構(gòu)包含了從外部數(shù)據(jù)源或者數(shù)據(jù)庫(kù)抽取數(shù)據(jù)的ETL工具。ETL還負(fù)責(zé)數(shù)據(jù)的轉(zhuǎn)換,清洗,然后加載到數(shù)據(jù)倉(cāng)庫(kù)的存儲(chǔ)中。一般來說,數(shù)據(jù)都會(huì)加載到存取速度較慢的存儲(chǔ)中,以原始數(shù)據(jù)的方式保存下來。為了提高查詢效率,原始數(shù)據(jù)會(huì)按主題分類,以聚合的方式存儲(chǔ)到數(shù)據(jù)集市中,稱之為聚合數(shù)據(jù)。參見下圖,原始數(shù)據(jù)往往有多條聚合路徑,時(shí)間維度是一個(gè)最基本的內(nèi)置聚合路徑,行政級(jí)別劃分也是一種常見的聚合路徑,產(chǎn)品屬性也是常見的聚合路徑。

數(shù)據(jù)倉(cāng)庫(kù)體系結(jié)構(gòu)中還包括前端的查詢工具,報(bào)表工具和數(shù)據(jù)挖掘工具,被稱為front-end。

最后也是最重要的是,數(shù)據(jù)倉(cāng)庫(kù)體系結(jié)構(gòu)中都會(huì)包含一個(gè)構(gòu)建數(shù)據(jù)倉(cāng)庫(kù)的元數(shù)據(jù)倉(cāng)庫(kù)。元數(shù)據(jù)倉(cāng)庫(kù)包括數(shù)據(jù)庫(kù)schema,view,用于ETL的metadata,用于數(shù)據(jù)聚合的metadata,用于報(bào)表呈現(xiàn)的metadata和SQL模板等。數(shù)據(jù)倉(cāng)庫(kù)往往采用meta data driven的架構(gòu)設(shè)計(jì),這個(gè)元數(shù)據(jù)倉(cāng)庫(kù)就至關(guān)重要。

下圖即是我所在的從事數(shù)據(jù)倉(cāng)庫(kù)集成工具開發(fā)的團(tuán)隊(duì)(負(fù)責(zé)生成ETL metadata,Database Schema,Pre-aggregation metadata,Reporter metadata,etc.)。名字是KOALA,slogon是讓生活更簡(jiǎn)單。

[[182380]]

上文中提到的維度的概念。維度(dimension)是觀察事物的角度,也是數(shù)據(jù)庫(kù)事實(shí)表中用來描述數(shù)據(jù)分類的層次結(jié)構(gòu)。維度在數(shù)據(jù)中就是表示為列,在SQL中用作過濾和分組。

像上圖這樣對(duì)數(shù)據(jù)進(jìn)行多個(gè)維度的抽象并借助于數(shù)據(jù)庫(kù)的select,group by等基本操作形成的OLAP多維數(shù)據(jù)操作(roll up,drill down,slice and dice,pivot)被稱為多維數(shù)據(jù)模型。為了方便復(fù)雜分析和可視化呈現(xiàn),數(shù)據(jù)倉(cāng)庫(kù)中數(shù)據(jù)往往以多維模型建模。每一個(gè)維度被稱為一個(gè)層級(jí),三個(gè)維度構(gòu)成一個(gè)數(shù)據(jù)立方體。維度也通常用來過濾和分組,所以數(shù)據(jù)立方體稱之為group by的并。OLAP也被稱為在基于數(shù)據(jù)倉(cāng)庫(kù)多維模型的基礎(chǔ)上實(shí)現(xiàn)的面向分析的各類操作的集合。

04

數(shù)據(jù)立方體

數(shù)據(jù)立方體只是多維模型的一個(gè)形象的說法。立方體其本身只有三維,但多維模型不僅限于三維模型,可以組合更多的維度,但一方面是出于更方便地解釋和描述,同時(shí)也是給思維成像和想象的空間;另一方面是為了與傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)的二維表區(qū)別開來,于是就有了數(shù)據(jù)立方體的稱呼(見下圖)。

 

OLAP的操作是以查詢——也就是數(shù)據(jù)庫(kù)的SELECT操作為主,但是查詢可以很復(fù)雜,比如基于關(guān)系數(shù)據(jù)庫(kù)的查詢可以多表關(guān)聯(lián),可以使用COUNT、SUM、AVG等聚合函數(shù)。OLAP的多維分析操作包括:鉆取(Drill-down)、上卷(Roll-up)、切片(Slice)、切塊(Dice)以及旋轉(zhuǎn)(Pivot),逐一解釋如下:

Roll up (drill-up): summarize data by climbing up hierarchy or by dimension reduction

Drill down (roll down): reverse of roll-up,from higher level summary to lower level summary or detailed data, or introducing new dimensions

Slice and dice: project and select

Pivot (rotate): reorient the cube, visualization, 3D to series of 2D planes

看了上圖中數(shù)據(jù)立方體的各種操作,有人覺得還是很抽象。下面給一個(gè)SQL的例子,說明數(shù)據(jù)立方體的具體操作。

select//公式必須配合group by使用

  1. tmp.time 
  2. tmp.id1, 
  3. tmp.id2, 
  4. SUM(counter1) counter1, 
  5. SUM(counter2) counter2 

from//雙層SQL,實(shí)現(xiàn)聚合路徑

(

select//trunc實(shí)現(xiàn)時(shí)間維度的變化

  1. trunc( p.time'min' ) time 
  2. "country".country_id id1,  
  3. "city".city_id id2,  
  4. SUM(p.counter1) counter1,  
  5. SUM(p.counter2) counter2  
  6. from  
  7. table "country",  
  8. table "city",  
  9. table p 

where//選擇計(jì)算的城市

  1. "city".city_id in ( '北京','上海','廣州' )  
  2. and time >= to_date('2016/01/01 00:00:00''yyyy/mm/dd hh24:mi:ss' 
  3. and time < to_date('2017/01/01 00:00:00''yyyy/mm/dd hh24:mi:ss'

group by//改變行政維度

  1. trunc( p.period_start_time, 'mi' ),  
  2. "country".country_id,  
  3. "city".city_id  
  4. ) tmp 

group by//行政維護(hù)可以不變

  1. tmp.time
  2. tmp.id1, 
  3. tmp.id2 

OLAP的優(yōu)勢(shì)是基于數(shù)據(jù)倉(cāng)庫(kù)面向主題、集成的、保留歷史及不可變更的數(shù)據(jù)存儲(chǔ),以及多維模型多視角多層次的數(shù)據(jù)組織形式,如果脫離的這兩點(diǎn),OLAP將不復(fù)存在,也就沒有優(yōu)勢(shì)可言?;诙嗑S模型的數(shù)據(jù)組織讓數(shù)據(jù)的展示更加直觀,它就像是我們平常看待各種事物的方式,可以從多個(gè)角度多個(gè)層面去發(fā)現(xiàn)事物的不同特性,而OLAP正是將這種尋常的思維模型應(yīng)用到了數(shù)據(jù)分析上。

05

數(shù)據(jù)庫(kù)建模

如果把多維數(shù)據(jù)模型映射到關(guān)系數(shù)據(jù)庫(kù)和SQL查詢上(ROLAP),數(shù)據(jù)庫(kù)該如何設(shè)計(jì)呢?

大多數(shù)數(shù)據(jù)倉(cāng)庫(kù)都采用“星型模型”來表示多維數(shù)據(jù)模型。在星型模型中,只有一個(gè)事實(shí)表,并且每一個(gè)維度有一個(gè)單獨(dú)的表。事實(shí)表中的每一個(gè)元組都是一個(gè)外鍵指向維度表的主鍵。每一個(gè)維度表的列是組成這個(gè)維度的所有屬性。如下圖所示。

另外一個(gè)常見的數(shù)據(jù)庫(kù)設(shè)計(jì)方法是“雪花模型”。雪花模型通過定義單獨(dú)的維度表,改進(jìn)了星型模型中沒有明確提供維度層級(jí)的問題。是謂維度表的正則化,如下圖。但星型模型更適合瀏覽維度層級(jí)。

除了事實(shí)表和維度表,數(shù)據(jù)倉(cāng)庫(kù)還需要?jiǎng)?chuàng)建pre-aggregation 表用于存儲(chǔ)挑選的摘要數(shù)據(jù)。

06

大數(shù)據(jù)架構(gòu)

1010data公司高級(jí)軟件工程師ADAM JACOBS博士在ACM通訊發(fā)表的《大數(shù)據(jù)病理學(xué)》指出大數(shù)據(jù)的病理在于分析而不在于存儲(chǔ)——我們期望從成年累月積累的數(shù)據(jù)中在幾分鐘或者幾秒內(nèi)獲得分析結(jié)果!其實(shí)作者指出了關(guān)系數(shù)據(jù)庫(kù)的在大數(shù)據(jù)時(shí)代的病理,如下圖所示一個(gè)數(shù)據(jù)倉(cāng)庫(kù)分析操作的SQL在數(shù)據(jù)量超過100萬條記錄時(shí)的性能表現(xiàn)。

The pathologies of big data are primarily those of analysis

因此,數(shù)據(jù)倉(cāng)庫(kù)被認(rèn)為是對(duì)數(shù)據(jù)庫(kù)查詢性能問題的一個(gè)解決方案。在90年代,人們已經(jīng)都面臨一個(gè)數(shù)據(jù)爆炸的挑戰(zhàn),為了解決那個(gè)時(shí)代的“大數(shù)據(jù)”問題,數(shù)據(jù)倉(cāng)庫(kù)應(yīng)運(yùn)而生。

在1980s早期,大數(shù)據(jù)是指數(shù)據(jù)集超出了磁帶機(jī)的處理能力。

在1990s,大數(shù)據(jù)是指數(shù)據(jù)集超出了Microsoft Excel或者桌面PC的處理能力。

今天,大數(shù)據(jù)是指數(shù)據(jù)集超出了關(guān)系數(shù)據(jù)庫(kù)的處理能力。

站在大數(shù)據(jù)時(shí)代回望數(shù)據(jù)架構(gòu)的發(fā)展歷史,然后思考大數(shù)據(jù)的定義:

當(dāng)前流行的技術(shù)處理不了的數(shù)據(jù),都是大數(shù)據(jù)。

數(shù)據(jù)倉(cāng)庫(kù)的本質(zhì)是把數(shù)據(jù)變小,一般有兩個(gè)方法:

第一是通過抽取,轉(zhuǎn)換,加載,清洗。

第二是通過pre-aggregation獲得數(shù)據(jù)的一份單獨(dú)拷貝。因此數(shù)據(jù)倉(cāng)庫(kù)被定義為:

為了方便查詢分析,把數(shù)據(jù)從關(guān)系數(shù)據(jù)庫(kù)中單獨(dú)拷貝一份出來,然后通過ETL或者ELT轉(zhuǎn)換。

對(duì)于大數(shù)據(jù),僅僅簡(jiǎn)單構(gòu)建一個(gè)數(shù)據(jù)倉(cāng)庫(kù)是不夠的。數(shù)據(jù)應(yīng)該如何結(jié)構(gòu)化才能更便于分析?數(shù)據(jù)庫(kù)和分析工具應(yīng)該如何設(shè)計(jì)才能更高效的處理大數(shù)據(jù)?

意識(shí)到大數(shù)據(jù)固有的時(shí)間屬性和空間屬性,是我們理解關(guān)系數(shù)據(jù)庫(kù)處理大數(shù)據(jù)時(shí)存在性能問題的重要前提。如果說數(shù)據(jù)是我對(duì)世界的觀察記錄的話,大數(shù)據(jù)是我們對(duì)世界在時(shí)間和/或空間維度的重復(fù)觀察。這就是大數(shù)據(jù)的時(shí)空特點(diǎn),也是數(shù)據(jù)倉(cāng)庫(kù)多維模型的構(gòu)建原理。當(dāng)今的主流數(shù)據(jù)庫(kù)模型是關(guān)系數(shù)據(jù)庫(kù),并且該模型顯式地忽略表中的行的順序。這將不可避免導(dǎo)致應(yīng)用以非順序的方式查詢數(shù)據(jù)。在這種情況下,傳統(tǒng)的數(shù)據(jù)架構(gòu)可以通過引入緩存的方式緩解性能問題,而大數(shù)據(jù)則會(huì)大大放大了次優(yōu)訪問模式對(duì)性能的影響。如下圖所示隨機(jī)訪問和順序訪問的差別。

 

因此我們要引入,也是我們要推導(dǎo)的結(jié)論:逆正則化(逆規(guī)范化)和順序存儲(chǔ),不可更改數(shù)據(jù)集(append only,immutable data set)。順著存儲(chǔ)棧往下走,直到數(shù)據(jù)存儲(chǔ)格式。

是時(shí)候放棄關(guān)系數(shù)據(jù)庫(kù)了。

簡(jiǎn)單解釋一下逆正則化(逆規(guī)范化)。經(jīng)典關(guān)系數(shù)據(jù)庫(kù)介紹的所有范式指導(dǎo)思想都是正則化,減少重復(fù)數(shù)據(jù),如果重復(fù),則單獨(dú)創(chuàng)建一個(gè)表,使用外鍵關(guān)聯(lián),目的是節(jié)省存儲(chǔ)空間(那個(gè)時(shí)候存儲(chǔ)很昂貴)。逆正則化則是允許列之間的重復(fù)。如下圖所示。

我有一個(gè)看法,NoSQL的鍵值存儲(chǔ)即是用極簡(jiǎn)的非結(jié)構(gòu)化來實(shí)現(xiàn)結(jié)構(gòu)化存儲(chǔ)的逆規(guī)范化。

鍵值是極簡(jiǎn)的結(jié)構(gòu)化,也是極簡(jiǎn)的非結(jié)構(gòu)化。

關(guān)于順序存儲(chǔ),不可更改數(shù)據(jù)集,可以參考Pat Helland《Immutability Changes Everything》,和我上面的介紹是一致的。

關(guān)于傳統(tǒng)關(guān)系數(shù)據(jù)庫(kù)的討論還有數(shù)據(jù)庫(kù)知名專家,2015年圖靈獎(jiǎng)得主Michael Stonebraker撰寫的《One Size Fits All》,分別從數(shù)據(jù)倉(cāng)庫(kù)和流處理兩個(gè)方面探討了數(shù)據(jù)庫(kù)25年來一招不變的靈丹妙藥已經(jīng)不再適合現(xiàn)在的業(yè)務(wù)發(fā)展。文章的中心思想和Pat Helland提出lambda架構(gòu)也有異曲同工之妙。

  1. speed layer 
  2. (i) compensates for the high latency of updates to the serving layer  
  3. (ii) deals with recent data only 
  4. serving layer 
  5. (i) indexes the batch views  
  6. (ii) Can be queried in low-latency, ad-hoc way 
  7. batch layer 
  8. (i) managing the master dataset (an immutable, append-only set of raw data), 
  9. (ii) pre-compute the batch views 

Lambda架構(gòu)統(tǒng)一了傳統(tǒng)數(shù)據(jù)倉(cāng)庫(kù)時(shí)代的半實(shí)時(shí)在線查詢,剛剛興起的實(shí)時(shí)流處理(Online ),和批處理數(shù)據(jù)分析(Offline),給數(shù)據(jù)架構(gòu)的設(shè)計(jì)人員提供了一個(gè)全面的參考。

再結(jié)合半結(jié)構(gòu)化,結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ),SQL and No-SQL混合,我們可以得到下面一個(gè)典型的數(shù)據(jù)架構(gòu):


 

上面的討論是架構(gòu)的微觀考慮,讓我們回到大數(shù)據(jù)架構(gòu)的宏觀指導(dǎo)上來。

目前業(yè)界對(duì)大數(shù)據(jù)的一個(gè)共識(shí)的定義是5個(gè)V。如下圖所示。

 

從技術(shù)的角度需要專注于其中的三個(gè)V,通過閱讀大量文獻(xiàn),我得到下面一個(gè)范型:

借力開源軟件處理數(shù)據(jù)多樣性挑戰(zhàn)

使用分布式技術(shù)解決數(shù)據(jù)容量問題

使用實(shí)時(shí)流處理技術(shù)解決數(shù)據(jù)速度問題

 

傳統(tǒng)的OLAP 而言,實(shí)時(shí)性需求不明顯,實(shí)時(shí)分析的強(qiáng)需求是導(dǎo)致大數(shù)據(jù)技術(shù)的一個(gè)原因。

——曹洪偉

基于此,我個(gè)人推薦的大數(shù)據(jù)架構(gòu)是BDAS, the Berkeley Data Analytics Stack。這個(gè)架構(gòu)中不僅包含上面提到的三個(gè)思考維度,還提供了整個(gè)大數(shù)據(jù)架構(gòu)blueprint。內(nèi)容很多,使用時(shí)各個(gè)擊破,在此不贅述。

 

談了那么多,總結(jié)一下大數(shù)據(jù)架構(gòu)的幾個(gè)要點(diǎn):

分布式計(jì)算

實(shí)時(shí)流處理

Online和Offline

SQL和No-SQL:混合架構(gòu)也是演進(jìn)路徑之一

逆正則化(逆規(guī)范化)和順序存儲(chǔ),不可更改數(shù)據(jù)集

07

數(shù)據(jù)湖架構(gòu)

Pentaho的CTO James Dixon 在2011年提出了“Data Lake”的概念。在面對(duì)大數(shù)據(jù)挑戰(zhàn)時(shí),他聲稱:不要想著數(shù)據(jù)的“倉(cāng)庫(kù)”概念,想想數(shù)據(jù) 的“湖”概念。數(shù)據(jù)“倉(cāng)庫(kù)”概念和數(shù)據(jù)湖概念的重大區(qū)別是:數(shù)據(jù)倉(cāng)庫(kù)中數(shù)據(jù)在進(jìn)入倉(cāng)庫(kù)之前需要是事先歸類,以便于未來的分析。這在OLAP時(shí)代很常見,但是對(duì)于離線分析卻沒有任何意義,不如把大量的原始數(shù)據(jù)線保存下來,而現(xiàn)在廉價(jià)的存儲(chǔ)提供了這個(gè)可能。

Nearly unlimited potential for operational insight and data discovery. As data volumes, data variety, and metadata richness grow, so does the benefit.

形象的來看,如下圖所示,數(shù)據(jù)湖架構(gòu)保證了多個(gè)數(shù)據(jù)源的集成,并且不限制schema,保證了數(shù)據(jù)的精確度。數(shù)據(jù)湖可以滿足實(shí)時(shí)分析的需要,同時(shí)也可以作為數(shù)據(jù)倉(cāng)庫(kù)滿足批處理數(shù)據(jù)挖掘的需要。數(shù)據(jù)湖還為數(shù)據(jù)科學(xué)家從數(shù)據(jù)中發(fā)現(xiàn)更多的靈感提供了可能。

和數(shù)據(jù)倉(cāng)庫(kù)對(duì)比來看,數(shù)據(jù)倉(cāng)庫(kù)是高度結(jié)構(gòu)化的架構(gòu),數(shù)據(jù)在轉(zhuǎn)換之前是無法加載到數(shù)據(jù)倉(cāng)庫(kù)的,用戶可以直接獲得分析數(shù)據(jù)。而在數(shù)據(jù)湖中,數(shù)據(jù)直接加載到數(shù)據(jù)湖中,然后根據(jù)分析的需要再轉(zhuǎn)換數(shù)據(jù)。

 

下面我整理了數(shù)據(jù)倉(cāng)庫(kù)和數(shù)據(jù)湖在多個(gè)維度的詳細(xì)對(duì)比。

總結(jié)起來,數(shù)據(jù)湖架構(gòu)有一下幾個(gè)顯著的特點(diǎn):

數(shù)據(jù)存儲(chǔ):大容量低成本

數(shù)據(jù)保真度:數(shù)據(jù)湖以原始的格式保存數(shù)據(jù)

數(shù)據(jù)使用:數(shù)據(jù)湖中的數(shù)據(jù)可以方便的被使用

延遲綁定:數(shù)據(jù)湖提供靈活的,面向任務(wù)的數(shù)據(jù)綁定,不需要提前定義數(shù)據(jù)模

 

當(dāng)然,對(duì)于數(shù)據(jù)湖架構(gòu)的批評(píng)也是不絕于耳。有人批評(píng)說,匯集各種雜亂的數(shù)據(jù),應(yīng)該就是數(shù)據(jù)沼澤。Martin Fowler也對(duì)數(shù)據(jù)湖中數(shù)據(jù)的安全性和私密性提出了質(zhì)疑。

08

電信運(yùn)營(yíng)大數(shù)據(jù)特點(diǎn)

電信運(yùn)營(yíng)大數(shù)據(jù)對(duì)應(yīng)于TMN/FCAPS模型中的電信設(shè)備管理數(shù)據(jù)。如下圖所示。

Fault Management

Configuration Management

Accounting Management

Performance Management

Security Management

電信運(yùn)營(yíng)數(shù)據(jù)的特點(diǎn)是數(shù)據(jù)多樣化要求不高,大多數(shù)數(shù)據(jù)是結(jié)構(gòu)化數(shù)據(jù),數(shù)據(jù)容量要求不是特別高,數(shù)據(jù)的實(shí)時(shí)處理要求最高。

 

電信運(yùn)行數(shù)據(jù)架構(gòu)強(qiáng)調(diào)演進(jìn)。步步為營(yíng),向前兼容,不是一蹴而就的。

09

演進(jìn)路徑實(shí)踐

現(xiàn)在的架構(gòu)是一個(gè)典型的數(shù)據(jù)倉(cāng)庫(kù)架構(gòu)。如下圖所示?,F(xiàn)在的架構(gòu)設(shè)計(jì)有以下幾個(gè)要點(diǎn):

ROLAP:基于Oracle數(shù)據(jù)庫(kù),但并沒有用Oracle的數(shù)據(jù)倉(cāng)庫(kù),單獨(dú)構(gòu)建數(shù)據(jù)倉(cāng)庫(kù)。

Meta Data Driven的架構(gòu)設(shè)計(jì):Meta Data覆蓋整個(gè)數(shù)據(jù)pipe。當(dāng)新的數(shù)據(jù)需要集成,只需要編輯新的Meta Data,系統(tǒng)不需要做任何改變。

Schema設(shè)計(jì):主要有兩類表:原始數(shù)據(jù)表和聚合表; 每類表都有三層結(jié)構(gòu):表,用作聚合的視圖,用作報(bào)表的視圖。不同的應(yīng)用使用不同的視圖來操作數(shù)據(jù)。當(dāng)原始的數(shù)據(jù)表結(jié)構(gòu)變化時(shí),可以根據(jù)需要更改不同層次的視圖。

Schema的演化。這是一個(gè)比較大的主題,關(guān)系數(shù)據(jù)是schema on write的,任何列的增加都需要alter表結(jié)構(gòu),這會(huì)帶來客戶系統(tǒng)很長(zhǎng)時(shí)間的downtime。因此原始表采用1000列的設(shè)計(jì)(Oracle支持的最大列數(shù)),并且列只增加,不減少,避免了數(shù)據(jù)庫(kù)schema的變化,降低不同release之間migration的成本。

數(shù)據(jù)存儲(chǔ):定期清除原始數(shù)據(jù),只保留聚合數(shù)據(jù)。

 

為什么現(xiàn)在的架構(gòu)需要演進(jìn)呢?

首先當(dāng)前架構(gòu)面臨擴(kuò)展性的挑戰(zhàn)。數(shù)據(jù)庫(kù)擴(kuò)展性主要依賴于Oracle RAC解決方案,Oracle RAC不是一個(gè)線性的擴(kuò)展方案,同時(shí)也增加了很多管理和維護(hù)成本。并且由于硬件的限制,垂直性擴(kuò)展不是一個(gè)長(zhǎng)期的解決方案。

其次,當(dāng)前的存儲(chǔ)成本太昂貴,因此去IOE成為目標(biāo)。

第三,實(shí)時(shí)處理需求也是驅(qū)動(dòng)架構(gòu)演進(jìn)的重要因素。

然后,架構(gòu)變成了這樣子:

 

傳統(tǒng) SQL 基于云平臺(tái)重新定義為 NewSQL,那么 Data Warehouse 也可以重新定義 New Data Warehouse。

——曹洪偉

這樣的架構(gòu)是不是New Data Warehouse,我不知道,可能是。在這樣的架構(gòu)下,最大的變化就是更換Oracle數(shù)據(jù)為HDFS,并使用SQL on Hadoop(比如Hive SQL,Spark SQL)等保持SQL接口,維持了前端分析引擎的不變。Meta Data部分依然保持了原來的數(shù)據(jù)建模,并沒有改變數(shù)據(jù)集成方式。這樣的架構(gòu)繼承了經(jīng)典的倉(cāng)庫(kù)架構(gòu),提高系統(tǒng)擴(kuò)展性,在滿足業(yè)務(wù)需求的同時(shí),最大化的保護(hù)已有投資。

在架構(gòu)演進(jìn)這個(gè)過程中,有一些lesson learned:

SQL on Hadoop是必須的??蛻粝M3諷QL接口的連續(xù)性。

混合數(shù)據(jù)倉(cāng)庫(kù)架構(gòu):針對(duì)不同的業(yè)務(wù)采用不同存儲(chǔ)方案(Oracle 和 HDFS),數(shù)據(jù)量大的采用HDFS存儲(chǔ),數(shù)據(jù)量不夠大的(不存在擴(kuò)展性挑戰(zhàn)的)可以依然使用關(guān)系型數(shù)據(jù)庫(kù)。

逆規(guī)范化對(duì)性能的影響重大。通過對(duì)逆規(guī)范設(shè)計(jì),可以達(dá)到關(guān)系數(shù)據(jù)庫(kù)的查詢性能。但是對(duì)于逆規(guī)范化是否存在其他影響,還需要研究。

相對(duì)于sequence files 和RC files,ORC文件格式的性能是最好的。

實(shí)時(shí)pipe使用storm和Kafka實(shí)現(xiàn)。

就像 NewSQL 那樣,可以有 New Data Warehouse 的。就是 Data Warehouse與云計(jì)算的融合,即數(shù)據(jù)倉(cāng)庫(kù)的存儲(chǔ)層在云平臺(tái),采用分布式系統(tǒng)。對(duì)應(yīng)用側(cè)而言, 原有的方式依舊有效,這樣就不會(huì)資產(chǎn)浪費(fèi),而是有效的繼承, 也是通往數(shù)據(jù)湖的一個(gè)較穩(wěn)妥的步驟。

——曹洪偉

老曹這么一說,豁然開朗。我們?cè)谡剶?shù)據(jù)倉(cāng)庫(kù)架構(gòu)向大數(shù)據(jù)架構(gòu)演進(jìn)的時(shí)候,其實(shí)我們?cè)谡凬ew Data Warehouse架構(gòu)。就像當(dāng)初數(shù)據(jù)倉(cāng)庫(kù)的出現(xiàn)是對(duì)數(shù)據(jù)庫(kù)系統(tǒng)存在的限制進(jìn)行補(bǔ)充一樣,目前的大數(shù)據(jù)平臺(tái)是對(duì)數(shù)據(jù)倉(cāng)庫(kù)系統(tǒng)存在的問題進(jìn)行補(bǔ)充。他們的技術(shù)思路,技術(shù)架構(gòu),用戶需求某種程度上是一致,或者說核心的思想是一致的。不一致的地方僅僅是為了滿足性能而做的技術(shù)方案的調(diào)整。

首先看數(shù)據(jù)集成架構(gòu)。如下圖,基于Hadoop的數(shù)據(jù)集成架構(gòu)和基于關(guān)系數(shù)據(jù)庫(kù)的傳統(tǒng)數(shù)據(jù)集成架構(gòu)是一致的。不同地方在于由于數(shù)據(jù)量的增大,左邊的架構(gòu)采用具有逆正則化(逆規(guī)范化)和順序存儲(chǔ),不可更改數(shù)據(jù)集等特點(diǎn)的Hadoop平臺(tái)存儲(chǔ)數(shù)據(jù)。

 

其次看數(shù)據(jù)分析方法。雖然說基于Hadoop的數(shù)據(jù)集成架構(gòu)采用了Hadoop數(shù)據(jù)存儲(chǔ)平臺(tái)(內(nèi)置MapRdecue數(shù)據(jù)處理引擎),其數(shù)據(jù)操作,數(shù)據(jù)分析方法在思想上是一致的——從大量的數(shù)據(jù)集中獲得由價(jià)值的信息——如下圖所示,數(shù)據(jù)倉(cāng)庫(kù)的操作語(yǔ)句(group-by-aggregation)與MapRdecue的操作函數(shù)對(duì)應(yīng)關(guān)系。所以MapRdecue的核心思想就是把數(shù)據(jù)倉(cāng)庫(kù)中的group-by-aggregation操作轉(zhuǎn)換成分布式執(zhí)行。所謂創(chuàng)新,大概如此吧。

 

The Map-Reduce programming model provides a good abstraction of group-by-aggregation operations over a cluster of machines.

The programmer provides a map function that performs grouping and a reduce function that performs aggregation.

The underlying run-time system achieves parallelism by partitioning the data and processing different partitions concurrently using multiple machines.

在New Data Warehouse架構(gòu)的基礎(chǔ)上,向Data Lake如何演進(jìn)?

對(duì)電信行業(yè)來說,NFV和SDN正在推動(dòng)電信網(wǎng)絡(luò)設(shè)備控制平面和數(shù)據(jù)平面的分離,電信設(shè)備數(shù)據(jù)會(huì)走向數(shù)據(jù)湖架構(gòu)。電信設(shè)備數(shù)據(jù)融合,運(yùn)營(yíng)數(shù)據(jù)融合,最終會(huì)走向一個(gè)大融合。

 

總結(jié)起來,電信大數(shù)據(jù)對(duì)于數(shù)據(jù)湖架構(gòu)的擁抱,來自于以下四個(gè)方面的驅(qū)動(dòng)。我用四個(gè)推導(dǎo)公式,如下:

5G->BigData (Semi-Structured and Unstructured) -> Modern Data Architecture for Enterprise -> Data Lake Storage Architecture -> Data Lake

Cloud -> Network Function Cloudification -> Network Function Virtualization -> stateless VNF -> Distributed Sharing Storage -> Data Lake

Distributed analytics -> Data Lake

Hierarchy architecture -> Flat operations architecture -> Data Lake

 

我們嘗試過在數(shù)據(jù)加載過程中自學(xué)習(xí)的產(chǎn)生數(shù)據(jù)庫(kù)schema,證明這個(gè)思路是可行的?;诮Y(jié)構(gòu)化的數(shù)據(jù),這個(gè)過程非常容易。但對(duì)于非結(jié)構(gòu)化的數(shù)據(jù),還是存在很大的挑戰(zhàn)。使用機(jī)器學(xué)習(xí)的方式,模型訓(xùn)練成本恐怕和人工抽取schema的工作量是相當(dāng)?shù)?。這是開放的話題,可以討論。

【本文是51CTO專欄作者石頭的原創(chuàng)文章,轉(zhuǎn)載請(qǐng)通過作者微信公眾號(hào)補(bǔ)天遺石(butianys)獲取授權(quán)】

 

戳這里,看該作者更多好文

責(zé)任編輯:武曉燕 來源: 補(bǔ)天遺石
相關(guān)推薦

2023-11-09 15:56:26

數(shù)據(jù)倉(cāng)庫(kù)數(shù)據(jù)湖

2024-09-23 21:48:57

2024-10-23 10:21:41

數(shù)據(jù)飛輪數(shù)據(jù)中臺(tái)

2024-09-23 19:41:17

數(shù)據(jù)技術(shù)數(shù)據(jù)中臺(tái)數(shù)據(jù)治理

2024-09-22 11:03:11

數(shù)據(jù)倉(cāng)庫(kù)數(shù)據(jù)飛輪

2024-09-25 13:08:03

數(shù)據(jù)倉(cāng)庫(kù)數(shù)據(jù)中臺(tái)數(shù)據(jù)飛輪

2024-09-19 16:11:07

2024-09-23 21:44:56

2024-09-29 21:24:17

數(shù)據(jù)倉(cāng)庫(kù)數(shù)據(jù)中臺(tái)數(shù)據(jù)飛輪

2022-11-29 17:16:57

2022-12-13 09:54:52

數(shù)據(jù)倉(cāng)庫(kù)

2024-09-05 16:08:52

2024-09-29 11:36:29

2023-08-09 08:00:00

數(shù)據(jù)倉(cāng)庫(kù)數(shù)據(jù)架構(gòu)

2024-03-19 13:45:27

數(shù)據(jù)倉(cāng)庫(kù)數(shù)據(jù)湖大數(shù)據(jù)

2024-09-20 13:11:06

數(shù)據(jù)倉(cāng)庫(kù)數(shù)據(jù)中臺(tái)數(shù)據(jù)飛輪

2024-09-24 18:52:20

數(shù)據(jù)倉(cāng)庫(kù)數(shù)據(jù)管理數(shù)據(jù)中臺(tái)

2024-09-24 10:56:58

2024-09-28 11:14:34

數(shù)據(jù)技術(shù)數(shù)據(jù)倉(cāng)庫(kù)數(shù)據(jù)中臺(tái)

2022-05-11 08:00:00

Lakehouse存儲(chǔ)數(shù)據(jù)湖
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)