一種基于統(tǒng)一視圖的行列混合數(shù)據(jù)存儲模型的建立方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及一種數(shù)據(jù)存儲模型的建立方法,屬于關(guān)系型數(shù)據(jù)庫、在線分析處理技 術(shù)領(lǐng)域。
【背景技術(shù)】
[0002] 隨著信息化的不斷發(fā)展,越來越多的企業(yè)在在生產(chǎn)信息化過程中積累了大量的結(jié) 構(gòu)化數(shù)據(jù)。以電力系統(tǒng)為例,一方面是所需要管理的測點規(guī)模越來越大,預(yù)計將達(dá)到千萬級 甚至億級以上;另一方面是測點產(chǎn)生數(shù)據(jù)的頻率越來越高。隨著時間的積累,數(shù)據(jù)規(guī)模越來 越大,預(yù)計將達(dá)到PB字節(jié)以上。再以運營商為例,隨著越來越多的省份用戶規(guī)模均接近上 億規(guī)模,每天將產(chǎn)生數(shù)十億的信令數(shù)據(jù)與計費數(shù)據(jù)。數(shù)據(jù)量的飛速增長,將對數(shù)據(jù)倉庫的處 理規(guī)模、處理速度提出了更高的要求。
[0003] 由于傳統(tǒng)數(shù)據(jù)倉庫受制于其傳統(tǒng)的軟件體系架構(gòu),其在數(shù)據(jù)規(guī)模、處理能力、并行 計算、負(fù)載均衡、動態(tài)自治等方面均已無法滿足實際應(yīng)用需求。當(dāng)前數(shù)據(jù)存儲模型主要有行 存儲與列存儲兩類,行存儲主要面向"多列少行"的查詢類應(yīng)用,而列存儲主要應(yīng)對"多行少 列"的分析統(tǒng)計類應(yīng)用。目前許多企業(yè)針對不同的應(yīng)用建立不同的數(shù)據(jù)倉庫,具備如下局限 性:1)數(shù)據(jù)在邏輯上存儲多份,難于維護管理;2)數(shù)據(jù)重復(fù)存儲,造成巨大的成本壓力;3) 應(yīng)用需要做針對性的開發(fā),不同的應(yīng)用訪問不同的數(shù)據(jù)存儲。
[0004] 在數(shù)據(jù)倉庫領(lǐng)域,引入新的數(shù)據(jù)存儲模型來解決上述問題是當(dāng)前研宄的熱點之 一。經(jīng)初步檢索,暫未發(fā)現(xiàn)有相關(guān)的專利文獻。
【發(fā)明內(nèi)容】
[0005] 為了解決上述問題,能夠同時滿足行列敏感應(yīng)用的不同需求,使得數(shù)據(jù)訪問對應(yīng) 用透明,本發(fā)明提供了一種基于統(tǒng)一視圖的行列混合數(shù)據(jù)存儲模型的建立方法,該方法在 邏輯上基于星型模型進行數(shù)據(jù)抽象,維護一份數(shù)據(jù);在存儲上將I/O敏感的列進行列式存 儲,并基于列值域進行邏輯壓縮,極大的降低I/O開銷與存儲空間;在應(yīng)用上,基于統(tǒng)一視 圖/表,屏蔽數(shù)據(jù)存儲的異構(gòu)性,極大的減輕應(yīng)用開發(fā)的復(fù)雜性。
[0006] 本發(fā)明采用的技術(shù)方案具體為:
[0007] 1)基于原始數(shù)據(jù)結(jié)構(gòu)進行數(shù)據(jù)抽象,從原始記錄中,標(biāo)識出需要進行列式存儲的 列;
[0008] 數(shù)據(jù)抽象是構(gòu)建星型模型的基礎(chǔ)。本步驟決定哪些列按列存儲,以及相關(guān)列與原 始數(shù)據(jù)的對應(yīng)關(guān)系。
[0009] 2)對上述需要列式存儲的列進行維度分析,為每一列建立對應(yīng)的維度值索引表, 維度值索引表包含兩列:原始值以及對應(yīng)的值標(biāo)識,該值標(biāo)識記為VID。維度值索引表是數(shù) 據(jù)重組的參照。最終的列存數(shù)據(jù)將不存儲對應(yīng)列的原始值,而是存儲維度值索引表對應(yīng)的 值標(biāo)識(VID)。
[0010] 3)將原始數(shù)據(jù)表視為事實表,將需要列式存儲的列視為維度表,建立星型模型;
[0011] 4)對事實表進行加工,對每條原始記錄生成唯一的記錄標(biāo)識,記為RID ;
[0012] 5)對維表進行加工,依據(jù)維度值索引表將對應(yīng)的維表更改為兩列結(jié)構(gòu): <RID,VID>,并建立對應(yīng)的索引;
[0013] 星型模型的建立使得列存數(shù)據(jù)(維表)與行存數(shù)據(jù)(事實表)之間建立起了關(guān)聯(lián) 關(guān)系,維表與事實表的關(guān)聯(lián)鍵為對應(yīng)的RID。在實際的應(yīng)用過程中,數(shù)據(jù)庫系統(tǒng)將先訪問維 度值索引表,將對應(yīng)的維度值轉(zhuǎn)換成VID,利用VID對維表進行分析檢索,獲取滿足條件的 RID集合;根據(jù)需要,利用RID集合從對應(yīng)的事實表中獲取原始數(shù)據(jù)。
[0014] 6)進行數(shù)據(jù)重組,對已入庫數(shù)據(jù)進行數(shù)據(jù)重組,將原始數(shù)據(jù)表分成兩個部分:事 實表和維表,將該事實表按行存儲,將維表、維度值索引表按列存儲;對于新增數(shù)據(jù),將依據(jù) 星型模型進行處理后,再入庫。
[0015] 上述數(shù)據(jù)重組包括兩個部分:一部分為邏輯重組,根據(jù)需要將對應(yīng)的維表和事實 表進行分割,組織成期望的數(shù)據(jù)。對應(yīng)用而言,只看到一張統(tǒng)一的數(shù)據(jù)庫表,而無需感知行 列存儲規(guī)則;另一部分,為物理重組,即根據(jù)需要將對應(yīng)的維表和事實表存儲到不同的存儲 介質(zhì)中。
[0016] 進一步,上述數(shù)據(jù)抽象步驟需要對數(shù)據(jù)進行深入分析,得到相關(guān)列的具體含義與 應(yīng)用訪問模式,一般的原則為將在傳統(tǒng)實體關(guān)系模型中需要建立索引的列進行顯著標(biāo)記。
[0017] 進一步,在對上述需要列式存儲的列進行維度分析時,維度值索引表的兩列均需 建立對應(yīng)的 B-TREE 索弓丨,分別記為DVI (Dimension Value Index)和 VII (Value ID Index)。
[0018] 進一步,上述VII主要用于查詢分析結(jié)果往原始值的映射,DVI主要用于構(gòu)建維 表。維度值索引表在數(shù)據(jù)加載、更新過程中將對應(yīng)地發(fā)生變化。
[0019] 進一步,值標(biāo)識VID優(yōu)選為32位無符號數(shù)。
[0020] 進一步,在對所述維度表進行加工時,使用VID可節(jié)省存儲,降低查詢分析的I/O 開銷與內(nèi)存消耗。
[0021] 進一步,在進行數(shù)據(jù)重組時,將列存數(shù)據(jù)與行存數(shù)據(jù)分開存儲到不同的存儲介質(zhì) 中,這樣可將應(yīng)用間的相互影響降至最低,利于構(gòu)建統(tǒng)一數(shù)據(jù)中心。
[0022] 通過采用上述技術(shù)方案,能夠?qū)崿F(xiàn)在數(shù)據(jù)模型上統(tǒng)一行存模型與列存模型;在數(shù) 據(jù)組織過程中,對于經(jīng)常用于分析統(tǒng)計的列采用列式存儲,降低其在訪問過程中的I/O開 銷,提升訪問效率。同時,利用維度值索引表對其進行邏輯壓縮,一方面節(jié)省存儲,另一方 面,也可進一步降低查詢分析的I/O開銷與內(nèi)存消耗。關(guān)于邏輯壓縮,以"手機號碼"列為 例,常規(guī)存儲將采用11位長度的字符串,每個列值將占用11個字節(jié);采用維度值索引表映 射后,將利用32位無符號整數(shù)存儲對應(yīng)的手機號碼,只需要4個字節(jié)。這樣,轉(zhuǎn)換后的數(shù)據(jù) 所占用的存儲空間約為原始數(shù)據(jù)的40% (4/11)。
【附圖說明】
[0023] 圖1是本發(fā)明的行列混合數(shù)據(jù)存儲模型示意圖。
【具體實施方式】
[0024] 下面結(jié)合附圖和實施例對本發(fā)明作進一步詳細(xì)說明。
[0025] 本實施例以電網(wǎng)業(yè)務(wù)場景中某一應(yīng)用實例來描述本方法的【具體實施方式】。假設(shè)如 下原始數(shù)據(jù)表:
[0026] 數(shù)據(jù)采集表:
【主權(quán)項】
1. 一種基于統(tǒng)一視圖的行列混合數(shù)據(jù)存儲模型的建立方法,其特征在于,包括如下步 驟: 基于原始數(shù)據(jù)結(jié)構(gòu)進行數(shù)據(jù)抽象,從原始記錄中,標(biāo)識出需要進行列式存儲的列; 對所述需要列式存儲的列進行維度分析,為每一列建立對應(yīng)的維度值索引表,所述維 度值索引表包含兩列:原始值以及對應(yīng)的值標(biāo)識,所述值標(biāo)識記為VID ; 將原始數(shù)據(jù)表視為事實表,將需要列式存儲的列視為維度表,建立星型模型; 對所述事實表進行加工,對每條原始記錄生成唯一的記錄標(biāo)識,記為RID ; 對所述維度表進行加工,依據(jù)所述維度值索引表將對應(yīng)的維度表更改為兩列結(jié)構(gòu): <RID,VID>,并建立對應(yīng)的索引; 進行數(shù)據(jù)重組,對已入庫數(shù)據(jù)進行數(shù)據(jù)重組,將原始數(shù)據(jù)表分成兩個部分:事實表和維 表,該事實表不包含維表相關(guān)列,且該事實表按行存儲,將維表、維度值索引表按列存儲;對 于新增數(shù)據(jù),將依據(jù)星型模型進行處理后,再入庫。
2. 根據(jù)權(quán)利要求1所述的方法,其特征是在數(shù)據(jù)抽象時,將在傳統(tǒng)實體關(guān)系模型中需 要建立索引的列進行顯著標(biāo)識。
3. 根據(jù)權(quán)利要求1所述的方法,其特征是在對所述需要列式存儲的列進行維度分析 時,對所述維度值索引表的兩列建立對應(yīng)的B-TREE索引,分別記為DVI和VII。
4. 根據(jù)權(quán)利要求3所述的方法,其特征是所述DVI用于構(gòu)建維表,所述VII用于查詢分 析結(jié)果往原始值的映射。
5. 根據(jù)權(quán)利要求1或2或3所述的方法,其特征是所述值標(biāo)識VID為32位無符號數(shù)。
6. 根據(jù)權(quán)利要求5所述的方法,其特征是對所述維度表進行加工時,使用VID可節(jié)省存 儲,降低查詢分析的I/O開銷與內(nèi)存消耗。
7. 根據(jù)權(quán)利要求1到4中任意一項所述的方法,其特征是在進行數(shù)據(jù)重組時,將列存數(shù) 據(jù)與行存數(shù)據(jù)分開存儲到不同的存儲介質(zhì)中。
【專利摘要】本發(fā)明公開了一種基于統(tǒng)一視圖的行列混合數(shù)據(jù)存儲模型的建立方法,以同時滿足行列敏感應(yīng)用的不同需求。本發(fā)明方法具體為在原始數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ)上進行數(shù)據(jù)抽象,標(biāo)識出需要列式存儲的列,對這些列進行維度分析,為每列建立維度值索引表,以此構(gòu)建星型模型,最后進行數(shù)據(jù)重組,將原始數(shù)據(jù)表分成兩個部分:事實表和維表,該事實表不包含維表相關(guān)列,且該事實表按行存儲,將維表、維度值索引表按列存儲。本發(fā)明在邏輯上基于星型模型進行數(shù)據(jù)抽象;在存儲上將I/O敏感的列進行列式存儲,并基于列值域進行邏輯壓縮,降低I/O開銷與存儲空間;在應(yīng)用上,基于統(tǒng)一視圖/表,屏蔽數(shù)據(jù)存儲的異構(gòu)性,減輕應(yīng)用開發(fā)的復(fù)雜性。
【IPC分類】G06F17-30
【公開號】CN104657426
【申請?zhí)枴緾N201510033610
【發(fā)明人】王遠(yuǎn), 陳亮, 吳鵬, 王為民
【申請人】江蘇瑞中數(shù)據(jù)股份有限公司
【公開日】2015年5月27日
【申請日】2015年1月22日