聊聊數(shù)倉模型雜燴
本文轉(zhuǎn)載自微信公眾號「曾二爺」,作者曾二爺。轉(zhuǎn)載本文請聯(lián)系曾二爺公眾號。
一、什么是建模
人的大腦算力有限,世界又太過于復(fù)雜。需要將你的關(guān)注點(diǎn)抽象出簡單模型,用于問題的研究和解決。
比如數(shù)學(xué)建模,將關(guān)注的問題抽象成數(shù)學(xué)模型進(jìn)行解決;比如AAARR增長黑客模型,抽象出用戶的5個(gè)生命周期進(jìn)行研究和指導(dǎo)行動。
而數(shù)據(jù)建模便是將問題域用數(shù)據(jù)表示出。
二、業(yè)務(wù)模型
接下來我們以下面的公立校業(yè)務(wù)場景來進(jìn)行探討:
老師創(chuàng)建作業(yè)布置到多個(gè)班級
班級里的學(xué)生做完后提交作業(yè)(一個(gè)學(xué)生只有一個(gè)班級)
這里涉四種實(shí)體(老師、作業(yè)、班級、學(xué)生)及四個(gè)業(yè)務(wù)流程(創(chuàng)建作業(yè)、布置作業(yè)、做作業(yè)、交作業(yè))。
三、關(guān)系型三范式模型
服務(wù)端的同學(xué)為了在關(guān)系型數(shù)據(jù)庫中滿足業(yè)務(wù)快速增刪改查,盡量減少數(shù)據(jù)冗余,常常采用三范式進(jìn)行數(shù)據(jù)建模。
針對上述業(yè)務(wù)一般會有(老師、作業(yè)、班級、學(xué)生)四種實(shí)體表和(班級-作業(yè)、學(xué)生-作業(yè))兩個(gè)關(guān)系表。
創(chuàng)建作業(yè)這個(gè)業(yè)務(wù)弱化到了作業(yè)表中
布置作業(yè)體現(xiàn)在班級-作業(yè)關(guān)系表中
做作業(yè)和交作業(yè)融合到學(xué)生-作業(yè)關(guān)系表中
這樣我們6個(gè)表的增刪改查就可以實(shí)現(xiàn)這個(gè)業(yè)務(wù)。
四、數(shù)倉模型
4.1 維度建模
到了數(shù)倉我們主要將數(shù)據(jù)用于分析,一般采用維度建模將三范式模型進(jìn)行重構(gòu)。劃分維度和事實(shí),建立不同層級的數(shù)據(jù),滿足多種分析場景。
當(dāng)我們需要分析的是老師布置作業(yè)到班級這個(gè)業(yè)務(wù)過程時(shí),作業(yè)-班級就相當(dāng)于事實(shí)表,維度表有班級、作業(yè)。
4.2 粒度
業(yè)務(wù)過程會有不同的粒度,比如學(xué)生-作業(yè)的粒度就比班級-作業(yè)更細(xì)。粗粒度的班級-作業(yè)能匯總學(xué)生-作業(yè)的一些信息,比如某份作業(yè)某個(gè)班級有多少人提交。
一般我們會重點(diǎn)建設(shè)各個(gè)業(yè)務(wù)過程的最細(xì)粒度的事實(shí)表,方便后面的多級粒度的匯總。
4.3 歷史與現(xiàn)在
通常來說數(shù)倉從業(yè)務(wù)庫同步過來的數(shù)據(jù)都是當(dāng)前數(shù)據(jù)的一個(gè)鏡像,業(yè)務(wù)庫的模型都是針對于當(dāng)前業(yè)務(wù)的,不會保存歷史的信息。比如新的學(xué)期班級表中的年級屬性會變更,業(yè)務(wù)庫就直接進(jìn)行更改。
到了數(shù)倉如果我們要計(jì)算歷史作業(yè)的提交信息,那就得保存學(xué)生提交作業(yè)的當(dāng)時(shí)他所在的年級。像年級慢慢變化的維度我們稱之為緩慢變化維。
處理方式既可以建立一個(gè)班級歷史信息表,關(guān)聯(lián)的時(shí)候帶上時(shí)間,也可以將年級信息‘退化’到學(xué)生-作業(yè)的事實(shí)表中不再放維度表。
4.4 多事實(shí)融合
所謂寬表既可能是多個(gè)維度退化到事實(shí)表形成的,也可能是多個(gè)有關(guān)聯(lián)的事實(shí)融合而來。
比如 文中的例子我們可以通過信息的冗余和置空實(shí)現(xiàn)一個(gè)最極端的寬表:老師-作業(yè)-班級-學(xué)生
該表記錄了所以老師的信息,如果沒有創(chuàng)建過作業(yè)那其他的信息都為空
如果老師有創(chuàng)建過多個(gè)作業(yè)那老師的信息冗余存儲到每條作業(yè)信息
班級和學(xué)生信息也全都記錄到這個(gè)表上,如果沒有作業(yè)信息,那老師、作業(yè)信息都為空,如果有多條作業(yè)信息也進(jìn)行冗余存儲
使用的時(shí)候就需要按需去重或者過濾空值
這樣融合了多個(gè)業(yè)務(wù)流程的明細(xì),可以支撐各種業(yè)務(wù)的分析,但維護(hù)成本、存儲成本等都是很高的。