溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

程序員筆記|3個(gè)問題帶你入門數(shù)據(jù)建模

發(fā)布時(shí)間:2020-08-05 10:57:48 來(lái)源:網(wǎng)絡(luò) 閱讀:297 作者:宜信技術(shù) 欄目:大數(shù)據(jù)

作者介紹:韓鋒:宜信數(shù)據(jù)庫(kù)開發(fā)與管理主任工程師
ACMUG主席團(tuán)成員,CCIA(中國(guó)計(jì)算機(jī)行業(yè)協(xié)會(huì))常務(wù)理事,Oracle ACE,DBAplus聯(lián)合創(chuàng)始人,ODF 顧問團(tuán)成員,ACOUG,ACMUG,DBGeek撰稿人,著有《SQL優(yōu)化最佳實(shí)踐》一書。早年從事軟件開發(fā)工作,后因個(gè)人興趣轉(zhuǎn)入數(shù)據(jù)庫(kù)領(lǐng)域。有著多年的一線數(shù)據(jù)庫(kù)架構(gòu)、設(shè)計(jì)、開發(fā)經(jīng)驗(yàn),曾擔(dān)任多家公司首席DBA、數(shù)據(jù)庫(kù)架構(gòu)師等職。

【技術(shù)沙龍002期】數(shù)據(jù)中臺(tái):宜信敏捷數(shù)據(jù)中臺(tái)建設(shè)實(shí)踐|宜信技術(shù)沙龍 將于5月23日晚8點(diǎn)線上直播,點(diǎn)擊報(bào)名

一、何為建模?

數(shù)據(jù)幾乎總是用于兩種目的:操作型記錄的保存分析型決策的制定。簡(jiǎn)單來(lái)說,操作型系統(tǒng)保存數(shù)據(jù),分型型系統(tǒng)使用數(shù)據(jù)。

  • 前者一般僅反映數(shù)據(jù)的最新狀態(tài),按單條記錄事務(wù)性來(lái)處理;其優(yōu)化的核心是更快地處理事務(wù)。
  • 后者往往是反映數(shù)據(jù)一段時(shí)間的狀態(tài)變化,按大批量方式處理數(shù)據(jù);其核心是高性能、多維度處理數(shù)據(jù)。

通常我們將操作型系統(tǒng)簡(jiǎn)稱為OLTP(On-Line Transaction Processing)— 聯(lián)機(jī)事務(wù)處理,將分析型系統(tǒng)簡(jiǎn)稱為OLAP(On-Line Analytical Processing)— 聯(lián)機(jī)分析處理。

針對(duì)這兩種不同的數(shù)據(jù)用途,如何組織數(shù)據(jù),更好地滿足數(shù)據(jù)使用需求。這里就涉及到數(shù)據(jù)建模問題。即設(shè)計(jì)一種數(shù)據(jù)組織方式(模型),來(lái)滿足不同場(chǎng)景。在OLTP場(chǎng)景中,常用的是使用實(shí)體關(guān)系模型(ER)來(lái)存儲(chǔ),從而在事務(wù)處理中解決數(shù)據(jù)的冗余和一致性問題。在OLAP場(chǎng)景中,有多種建模方式有:ER模型、星型模型和多維模型。下面分別說明下:

ER模型

OLAP中的ER模型,與OLTP中的有所區(qū)別。其本質(zhì)差異是站在企業(yè)角度面向主題的抽象,而不是針對(duì)某個(gè)具體業(yè)務(wù)流程的實(shí)體對(duì)象關(guān)系的抽象。

星型模型

星型模型,是維度模型在關(guān)系型數(shù)據(jù)庫(kù)上的一種實(shí)現(xiàn)。該模型表示每個(gè)業(yè)務(wù)過程包含事實(shí)表,事實(shí)表存儲(chǔ)事件的數(shù)值化度量,圍繞事實(shí)表的多個(gè)維度表,維度表包含事件發(fā)生時(shí)實(shí)際存在的文本環(huán)境。這種類似于星狀的結(jié)構(gòu)通常稱為"星型連接"。其重點(diǎn)關(guān)注用戶如何更快速地完成需求分析,同時(shí)具有較好的大規(guī)模復(fù)雜查詢的響應(yīng)性能。在星型模型基礎(chǔ)上,在復(fù)雜場(chǎng)景下還可以進(jìn)一步衍生出雪花模型。

多維模型

多維模型,是維度模型的另一種實(shí)現(xiàn)。當(dāng)數(shù)據(jù)被加載到OLAP多維數(shù)據(jù)庫(kù)時(shí),對(duì)這些數(shù)據(jù)的存儲(chǔ)的索引,采用了為維度數(shù)據(jù)涉及的格式和技術(shù)。性能聚集或預(yù)計(jì)算匯總表通常由多維數(shù)據(jù)庫(kù)引擎建立并管理。由于采用預(yù)計(jì)算、索引策略和其他優(yōu)化方法,多維數(shù)據(jù)庫(kù)可實(shí)現(xiàn)高性能查詢。

在這三種方式中,星型模型使用較多,下面也著重對(duì)這種方式進(jìn)行說明。

二、維度建模

1、基本概念

在建模過程中,涉及到很多概念。下面通過一個(gè)場(chǎng)景來(lái),來(lái)說明它們。例如:常見的電商下單環(huán)節(jié),每個(gè)用戶提交一筆訂單(僅限一個(gè)物品),就對(duì)應(yīng)于一條訂單記錄。

【業(yè)務(wù)過程】:下訂單

【粒度】:每筆訂單(拆分為單個(gè)物品)

【維度】:地域、年齡、渠道等(可供分析的角度)

【事實(shí)/度量】:訂單金額等(可用于分析的數(shù)據(jù))

2、建模步驟

收集業(yè)務(wù)需求與數(shù)據(jù)實(shí)現(xiàn)

在開始維度建模工作之前,需要理解業(yè)務(wù)需求,以及作為底層源數(shù)據(jù)的實(shí)際情況。通過與業(yè)務(wù)方溝通交流、查看現(xiàn)有報(bào)表等來(lái)發(fā)現(xiàn)需求,用于理解他們的基于關(guān)鍵性能指標(biāo)、競(jìng)爭(zhēng)性商業(yè)問題、決策制定過程、支持分析需求的目標(biāo)。同時(shí),數(shù)據(jù)實(shí)際情況可通過與數(shù)據(jù)庫(kù)系統(tǒng)專家交流,了解訪問數(shù)據(jù)可行性等。

選擇業(yè)務(wù)過程

業(yè)務(wù)過程是組織完成的操作型活動(dòng)。業(yè)務(wù)過程時(shí)間建立或獲取性能度量,并轉(zhuǎn)換為事實(shí)表中的事實(shí)。多數(shù)事實(shí)表關(guān)注某一業(yè)務(wù)過程的結(jié)果。過程的選擇非常重要的,因?yàn)檫^程定義了特定的設(shè)計(jì)目標(biāo)以及對(duì)粒度、維度、事實(shí)的定義。

聲明粒度

聲明粒度是維度設(shè)計(jì)的重要步驟。粒度用于確定某一事實(shí)表中的行表示什么。在選擇維度或事實(shí)前必須聲明粒度,因?yàn)槊總€(gè)候選維度或事實(shí)必須與定義的粒度保持一致。在從給定的業(yè)務(wù)過程獲取數(shù)據(jù)時(shí),原子粒度是最低級(jí)別的粒度。強(qiáng)烈建議從關(guān)注原子級(jí)別粒度數(shù)據(jù)開始設(shè)計(jì),因?yàn)樵恿6葦?shù)據(jù)能夠承受無(wú)法預(yù)期的用戶查詢。

確認(rèn)維度(描述環(huán)境)

維度提供圍繞某一業(yè)務(wù)過程事件所涉及的"誰(shuí)、什么、何處、何時(shí)、為什么、如何"等背景。維度表包含分析應(yīng)用所需要的用于過濾及分類事實(shí)的描述性屬性。牢牢掌握事實(shí)表的粒度,就能夠?qū)⑺锌赡艽嬖诘木S度區(qū)分開來(lái)。

確認(rèn)事實(shí)(用于度量)

事實(shí),涉及來(lái)自業(yè)務(wù)過程事件的度量,基本上都是以數(shù)據(jù)值表示。一個(gè)事實(shí)表行與按照事實(shí)表粒度描述的度量事件之間存在一對(duì)一關(guān)系,因此事實(shí)表對(duì)應(yīng)一個(gè)物理可觀察的事件。在事實(shí)表內(nèi),所有事實(shí)只允許與聲明的粒度保持一致。

部署方式 - 星型模型或多維模型

選擇一種維度模型的落地方式。既可以選擇星型模型,部署在關(guān)系數(shù)據(jù)庫(kù)上,通過事實(shí)表及通過主外鍵關(guān)聯(lián)的維度表;也可以選擇多維模型,落地于多維數(shù)據(jù)庫(kù)中。

3、建模規(guī)范

以維度建模為理論基礎(chǔ),定義一系列術(shù)語(yǔ)來(lái)描述建模對(duì)象。下圖摘自于《阿里巴巴大數(shù)據(jù)實(shí)踐之路》。

程序員筆記|3個(gè)問題帶你入門數(shù)據(jù)建模

數(shù)據(jù)域

指面向業(yè)務(wù)分析,將業(yè)務(wù)過程或者維度進(jìn)行抽象的集合。在劃分?jǐn)?shù)據(jù)域時(shí),既能涵蓋當(dāng)前所有的業(yè)務(wù)需求,又能在新業(yè)務(wù)進(jìn)入時(shí)無(wú)影響地被包含進(jìn)已有的數(shù)據(jù)域中和擴(kuò)展新的數(shù)據(jù)域。

業(yè)務(wù)過程

指企業(yè)的業(yè)務(wù)活動(dòng)事件,如下單、支付、退款都是業(yè)務(wù)過程。請(qǐng)注意,業(yè)務(wù)過程是一個(gè)不可拆分的行為事件,通俗地講,業(yè)務(wù)過程就是企業(yè)活動(dòng)中的事件。

時(shí)間周期

用來(lái)明確數(shù)據(jù)統(tǒng)計(jì)的時(shí)間范圍或者時(shí)間點(diǎn),如最近30天、自然周、截至當(dāng)日等。

修飾類型

是對(duì)修飾詞的一種抽象劃分,是從屬于某個(gè)業(yè)務(wù)域的。

修飾詞

指除了統(tǒng)計(jì)維度以外指標(biāo)的業(yè)務(wù)場(chǎng)景限定抽象。修飾詞隸屬于一種修飾類型。

度量/原子指標(biāo)

原子指標(biāo)和度量含義相同,基于某一業(yè)務(wù)事件行為下的度量,是業(yè)務(wù)定義中不可再拆分的指標(biāo),具有明確業(yè)務(wù)含義的名詞,如支付金額。

維度

維度是度量的環(huán)境,用來(lái)反映業(yè)務(wù)的一類屬性,這類屬性的集合構(gòu)成一個(gè)維度,也可以稱為實(shí)體對(duì)象。維度屬于一個(gè)數(shù)據(jù)域,如地理維度(其中包擠國(guó)家、地區(qū)、省以及城市等級(jí)別的內(nèi)容)、時(shí)間維度(其中包括年、季、月、周、日等級(jí)別的內(nèi)容)。

維度屬性

維度屬性隸屬于一個(gè)維度,如地理維度里面的國(guó)家名稱、國(guó)家ID、省份名稱等都屬于維度屬性。

派生指標(biāo)

派生指標(biāo)=一個(gè)原子指標(biāo)+多個(gè)修飾詞(可選)+時(shí)間周期??梢岳斫鉃閷?duì)原子指標(biāo)業(yè)務(wù)統(tǒng)計(jì)范圍的圈定。

三、設(shè)計(jì)要點(diǎn)

1、維度表設(shè)計(jì)

維度是維度建模的基礎(chǔ)和靈魂。在維度建模中,將度量稱為"事實(shí)",將環(huán)境描述為"維度",維度是用于分析事實(shí)所需要的多樣環(huán)境。維度所包含的表示維度的列,稱為維度屬性。維度屬性是查詢約束條件、分組和報(bào)表標(biāo)簽生成的基本來(lái)源,是數(shù)據(jù)易用性的關(guān)鍵。維度的作用一般是查詢約束、分類匯總以及排序等。維度的設(shè)計(jì)過程就是確定維度屬性的過程,如何生成維度屬性,以及所生成的維度屬性的優(yōu)劣,決定了維度使用的方便性,成為數(shù)據(jù)倉(cāng)庫(kù)易用性的關(guān)鍵。正如Kimball所說的,數(shù)據(jù)倉(cāng)庫(kù)的能力直接與維度屬性的質(zhì)量和深度成正比。

在整個(gè)設(shè)計(jì)過程中,應(yīng)當(dāng)遵循下面一些原則:

  • 維度屬性盡量豐富,為數(shù)據(jù)使用打下基礎(chǔ)。
  • 給出詳實(shí)的、富有意義的文字描述。
  • 沉淀通用維度屬性,為建立一致性維度做好鋪墊。
  • 嚴(yán)格區(qū)分事實(shí)與維度,通過使用場(chǎng)景進(jìn)行區(qū)分。

2、事實(shí)表設(shè)計(jì)

事實(shí)表作為數(shù)據(jù)倉(cāng)庫(kù)維度建模的核心,緊緊圍繞著業(yè)務(wù)過程來(lái)設(shè)計(jì),通過獲取描述業(yè)務(wù)過程的度量來(lái)表達(dá)業(yè)務(wù)過程,包含了引用的維度和與業(yè)務(wù)過程有關(guān)的度量。在設(shè)計(jì)過程中,可以選擇不同類型的事實(shí)表,它們有各自的適用場(chǎng)景。

在整個(gè)設(shè)計(jì)過程中,應(yīng)當(dāng)遵循下面一些原則:

程序員筆記|3個(gè)問題帶你入門數(shù)據(jù)建模

  • 選擇一種適合的事實(shí)表類型。
  • 事實(shí)盡可能完整,包含整個(gè)業(yè)務(wù)過程的全部事實(shí)。
  • 確保每一個(gè)事實(shí)度量都是一致性,反復(fù)計(jì)算都會(huì)得到相同的結(jié)果。盡量記錄一些“原子”事實(shí),而不是加工后的結(jié)果。
  • 可適當(dāng)做些”維度退化屬性”,提高事實(shí)表的查詢性能。
  • 為提高聚合性能,可適度做些上卷匯聚事實(shí)表。

來(lái)源:公眾號(hào)-韓鋒頻道,歡迎關(guān)注。

宜信技術(shù)學(xué)院

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI