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

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

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

一、何為建模

數(shù)據(jù)幾乎總是用于兩種目的:操作型記錄的保存和分析型決策的制定。簡(jiǎn)單來(lái)說(shuō),操作型系統(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ù)建模問(wèn)題。即設(shè)計(jì)一種數(shù)據(jù)組織方式(模型),來(lái)滿足不同場(chǎng)景。在OLTP場(chǎng)景中,常用的是使用實(shí)體關(guān)系模型(ER)來(lái)存儲(chǔ),從而在事務(wù)處理中解決數(shù)據(jù)的冗余和一致性問(wèn)題。在OLAP場(chǎng)景中,有多種建模方式有:ER模型、星型模型和多維模型。下面分別說(shuō)明下:

1. ER模型

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

2. 星型模型

星型模型,是維度模型在關(guān)系型數(shù)據(jù)庫(kù)上的一種實(shí)現(xiàn)。該模型表示每個(gè)業(yè)務(wù)過(guò)程包含事實(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)一步衍生出雪花模型。

3. 多維模型

多維模型,是維度模型的另一種實(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)行說(shuō)明。

二、維度建模

1. 基本概念

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

  • 【業(yè)務(wù)過(guò)程】:下訂單
  • 【粒度】:每筆訂單(拆分為單個(gè)物品)
  • 【維度】:地域、年齡、渠道等(可供分析的角度)
  • 【事實(shí)/度量】:訂單金額等(可用于分析的數(shù)據(jù))

2. 建模步驟

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

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

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

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

(3) 聲明粒度

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

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

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

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

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

(6) 部署方式 - 星型模型或多維模型

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

3. 建模規(guī)范

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

(1) 數(shù)據(jù)域

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

(2) 業(yè)務(wù)過(guò)程

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

(3) 時(shí)間周期

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

(4) 修飾類型

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

(5) 修飾詞

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

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

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

(7) 維度

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

(8) 維度屬性

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

(9) 派生指標(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ì)過(guò)程就是確定維度屬性的過(guò)程,如何生成維度屬性,以及所生成的維度屬性的優(yōu)劣,決定了維度使用的方便性,成為數(shù)據(jù)倉(cāng)庫(kù)易用性的關(guān)鍵。正如Kimball所說(shuō)的,數(shù)據(jù)倉(cāng)庫(kù)的能力直接與維度屬性的質(zhì)量和深度成正比。

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

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

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

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

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

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

【本文是51CTO專欄機(jī)構(gòu)宜信技術(shù)學(xué)院的原創(chuàng)文章,微信公眾號(hào)“宜信技術(shù)學(xué)院( id: CE_TECH)”】

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

責(zé)任編輯:趙寧寧 來(lái)源: 宜信技術(shù)學(xué)院
相關(guān)推薦

2021-09-14 11:10:20

程序員技能開(kāi)發(fā)者

2015-08-12 14:39:47

程序員問(wèn)題

2021-07-05 07:28:14

程序員菜鳥(niǎo)技術(shù)

2011-09-15 09:12:00

程序員蘋(píng)果

2020-10-05 21:13:37

程序員技能開(kāi)發(fā)者

2015-02-02 10:13:43

程序員

2017-02-05 10:21:10

程序員好問(wèn)題

2018-03-06 10:32:51

程序員代碼開(kāi)發(fā)

2015-02-05 13:51:25

程序員

2009-07-28 08:28:15

2013-04-28 11:03:41

編程語(yǔ)言程序員私有云

2009-01-16 19:49:49

程序員考試數(shù)組指針

2015-09-09 08:38:20

程序員問(wèn)題

2015-09-09 09:19:42

程序員自問(wèn)

2018-05-25 19:13:01

程序員技能溝通

2013-08-20 09:33:59

程序員

2012-03-06 09:22:46

程序員

2019-05-16 08:36:53

Eureka緩存網(wǎng)關(guān)

2021-07-01 07:43:41

項(xiàng)目程序員代碼

2021-07-26 08:21:36

程序員高并發(fā)中間件
點(diǎn)贊
收藏

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