一種Data Vault模型數(shù)據(jù)倉(cāng)庫(kù)自動(dòng)構(gòu)建的方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明設(shè)及一種數(shù)據(jù)倉(cāng)庫(kù)的構(gòu)建領(lǐng)域,具體設(shè)及一種化ta Vault模型數(shù)據(jù)倉(cāng)庫(kù)自 動(dòng)構(gòu)建的方法及裝置。
【背景技術(shù)】
[0002] Data Vault是一種構(gòu)建數(shù)據(jù)倉(cāng)庫(kù)的建模方法,無(wú)論數(shù)據(jù)在當(dāng)時(shí)業(yè)務(wù)層面的對(duì)與 錯(cuò),該種建模方法保留所有的歷史數(shù)據(jù)。用該種建模方法構(gòu)建的數(shù)據(jù)倉(cāng)庫(kù)稱為企業(yè)級(jí)的數(shù) 據(jù)倉(cāng)庫(kù),它包括了從企業(yè)各個(gè)數(shù)據(jù)庫(kù)集成過(guò)來(lái)的所有的歷史數(shù)據(jù),它位于業(yè)務(wù)系統(tǒng)和數(shù)據(jù) 集市之間,也是數(shù)據(jù)集市的唯一數(shù)據(jù)來(lái)源。Data Vault是面向細(xì)節(jié),可追蹤歷史的,它是一 組有連接關(guān)系的規(guī)范化的表的集合,該些表可W支持一個(gè)或多個(gè)業(yè)務(wù)功能。Data Vault只 按照業(yè)務(wù)數(shù)據(jù)的原樣保存數(shù)據(jù),不做任何解釋、過(guò)濾、清洗、轉(zhuǎn)換。Data Vault模型的主要組 成部分包括了中屯、表、鏈接表和附屬表。中屯、表相當(dāng)于業(yè)務(wù)實(shí)體表,包含業(yè)務(wù)實(shí)體的主鍵即 業(yè)務(wù)主鍵,鏈接表是鏈接業(yè)務(wù)實(shí)體的表,其中包含了中屯、表中的業(yè)務(wù)主鍵,用于將中屯、表鏈 接起來(lái),代表了業(yè)務(wù)主鍵的業(yè)務(wù)關(guān)系。中屯、表和鏈接表是用于呈現(xiàn)業(yè)務(wù)實(shí)體和業(yè)務(wù)實(shí)體之 間邏輯關(guān)系的表,其包含的字段只有代理鍵和時(shí)間戳等信息,附屬表則是依附于中屯、表或 者鏈接表,用于完成對(duì)業(yè)務(wù)實(shí)體或業(yè)務(wù)實(shí)體之間關(guān)系的信息的補(bǔ)充。企業(yè)數(shù)據(jù)倉(cāng)庫(kù)構(gòu)建人 員需要在源數(shù)據(jù)庫(kù)中尋找業(yè)務(wù)實(shí)體并將業(yè)務(wù)主鍵和業(yè)務(wù)主鍵之間的關(guān)系按照化ta Vault 的建模規(guī)范集合到中屯、表、鏈接表和附屬表當(dāng)中。
[0003] Data Vault模型所建立的數(shù)據(jù)倉(cāng)庫(kù)與構(gòu)建普通的數(shù)據(jù)倉(cāng)庫(kù)最大的不同在于構(gòu)建 的過(guò)程。原有的數(shù)據(jù)倉(cāng)庫(kù)直接構(gòu)成數(shù)據(jù)集市,是面向主題的,需要在該個(gè)層面上給業(yè)務(wù)決 策人展現(xiàn)業(yè)務(wù)報(bào)表,于是它的數(shù)據(jù)倉(cāng)庫(kù)構(gòu)建過(guò)程需要按照每一次不同的主題來(lái)進(jìn)行數(shù)據(jù)抽 取、抓換和加載,數(shù)據(jù)抽取、轉(zhuǎn)換和加載=項(xiàng)過(guò)程都會(huì)因主題的不同而有所變化。而企業(yè)數(shù) 據(jù)倉(cāng)庫(kù)是面向歷史的,它構(gòu)建的數(shù)據(jù)倉(cāng)庫(kù)是一種包含了所有歷史信息,包括錯(cuò)誤的和重復(fù) 的信息的數(shù)據(jù)倉(cāng)庫(kù),它可W再經(jīng)過(guò)數(shù)據(jù)處理來(lái)獲得各個(gè)方面各個(gè)層面的報(bào)表,它不是直接 面向業(yè)務(wù)決策人員的,而它的內(nèi)容非常靈活,而且不再依賴于源數(shù)據(jù)庫(kù)。
[0004] 但是現(xiàn)如今的技術(shù)人員仍按照構(gòu)建普通數(shù)據(jù)倉(cāng)庫(kù)的方式構(gòu)建企業(yè)級(jí)數(shù)據(jù)倉(cāng)庫(kù),即 目前的構(gòu)建普通數(shù)據(jù)倉(cāng)庫(kù)的技術(shù)包括了先構(gòu)建邏輯上的中屯、表、鏈接表和附屬表,再根據(jù) 邏輯構(gòu)建的表與表之間的關(guān)系,從源數(shù)據(jù)庫(kù)中逐個(gè)抽取表的內(nèi)容并建表。無(wú)法批量式構(gòu)建 企業(yè)數(shù)據(jù)倉(cāng)庫(kù),費(fèi)時(shí)費(fèi)力。
[0005] 鑒于上述缺陷,本發(fā)明創(chuàng)作者經(jīng)過(guò)長(zhǎng)時(shí)間的研究和試驗(yàn),最終獲得了本發(fā)明。
【發(fā)明內(nèi)容】
[0006] 本發(fā)明的目的在于提供一種化ta Vault模型數(shù)據(jù)倉(cāng)庫(kù)自動(dòng)構(gòu)建的方法及裝置,用 W克服上述技術(shù)缺陷。
[0007] 為實(shí)現(xiàn)上述目的,本發(fā)明采用的技術(shù)方案在于:
[0008] -方面提供一種化ta Vault模型數(shù)據(jù)倉(cāng)庫(kù)自動(dòng)構(gòu)建裝置,該構(gòu)建裝置包括表查詢 裝置和建表裝置,
[0009] 所述表查詢裝置,用于接收用戶輸入的中屯、字段組,所述中屯、字段組包括多個(gè)中 屯、字段,并對(duì)所述中屯、字段組進(jìn)行處理后,輸出總體信息表和中屯、字段關(guān)聯(lián)信息表;所述總 體信息表記錄有所述中屯、字段組中每一個(gè)中屯、字段W及該中屯、字段的主表和附表在源數(shù) 據(jù)庫(kù)表中的表號(hào)信息,所述中屯、字段關(guān)聯(lián)信息表記錄有所述中屯、字段組中所有的中屯、字段 相互之間的邏輯關(guān)系;
[0010] 所述建表裝置,用于接收所述總體信息表和中屯、字段關(guān)聯(lián)信息表,通過(guò)分析處理 所述中屯、字段關(guān)聯(lián)信息表得到中間表,再根據(jù)所述中間表得到中屯、字段組合信息表后,再 根據(jù)所述總體信息表自動(dòng)創(chuàng)建中屯、表,根據(jù)所述中屯、字段組合信息表自動(dòng)創(chuàng)建鏈接表,根 據(jù)源數(shù)據(jù)庫(kù)表和所述中屯、表自動(dòng)創(chuàng)建附屬表,完成企業(yè)級(jí)數(shù)據(jù)倉(cāng)庫(kù)的構(gòu)建。
[0011] 進(jìn)一步,所述表查詢裝置包括第一初始化單元、捜索單元、判斷單元、寫(xiě)入單元、匹 配單元和記錄單元;
[0012] 所述第一初始化單元,用于對(duì)所述中屯、字段組進(jìn)行初始化,并形成初始化中屯、字 段關(guān)聯(lián)信息表;
[0013] 所述捜索單元,用于在源數(shù)據(jù)庫(kù)表中尋找具有被捜索中屯、字段的表;
[0014] 所述判斷單元,用于判斷所述被捜索中屯、字段在具有所述被捜索中屯、字段的表 中是否為主鍵,如果是主鍵,則將具有所述被捜索中屯、字段的表作為所述被捜索中屯、字段 的主表;如果不是主鍵,則將具有所述被捜索中屯、字段的表作為所述被捜索中屯、字段的附 表;
[0015] 所述寫(xiě)入單元,用于將所述被捜索中屯、字段和具有所述被捜索中屯、字段的主表和 附表的信息寫(xiě)入所述總體信息表中;
[0016] 所述匹配單元,用于查詢所述被捜索中屯、字段的附表,將用戶輸入的中屯、字段組 中其他中屯、字段與所述被捜索中屯、字段的附表進(jìn)行匹配查詢,若所述被捜索中屯、字段的附 表中有其他中屯、字段,則將其他中屯、字段設(shè)為所述被捜索中屯、字段的主動(dòng)關(guān)聯(lián)中屯、字段;
[0017] 所述記錄單元,用于將所述初始化字段關(guān)聯(lián)信息表中的所述被捜索中屯、字段所對(duì) 應(yīng)的主動(dòng)關(guān)聯(lián)中屯、字段記錄行置為一位二進(jìn)制數(shù)1
[0018] 進(jìn)一步,所述建表裝置包括第一處理單元、第二初始化單元、第二處理單元和建表 單元;
[0019] 所述第一處理單元,用于讀取所述中屯、字段關(guān)聯(lián)信息表中的中屯、字段和中屯、字段 相互之間的邏輯關(guān)系后,經(jīng)過(guò)分析處理后得到中間表;
[0020] 所述第二初始化單元,用于對(duì)所述中間表中的中屯、字段進(jìn)行初始化,并形成初始 化中屯、字段組合信息表;
[0021] 所述第二處理單元,用于讀取所述中間表,經(jīng)過(guò)分析處理后得到中屯、字段組合信 息表;
[0022] 建表單元,用于根據(jù)所述中屯、字段組的中屯、字段的主表自動(dòng)創(chuàng)建中屯、表,根據(jù)所 述中屯、字段組合信息表自動(dòng)創(chuàng)建鏈接表,根據(jù)源數(shù)據(jù)庫(kù)表和中屯、表自動(dòng)創(chuàng)建附屬表。
[0023] 進(jìn)一步,所述第一處理單元分析處理過(guò)程具體為:設(shè)所述中屯、字段關(guān)聯(lián)信息表中 的中屯、字段有n個(gè)中屯、字段,對(duì)所述中屯、字段關(guān)聯(lián)信息表的元素a(i,j)和a(j,i)對(duì)應(yīng) 的二進(jìn)制數(shù)做與運(yùn)算,將得到的新的二進(jìn)制數(shù)代替所述中屯、字段關(guān)聯(lián)信息表的元素a(i,j) 和a(j,i)對(duì)應(yīng)的二進(jìn)制數(shù)后得到中間表,其中,i,j《n,元素a(i,j)代表中屯、字段關(guān) 聯(lián)信息表的第i行第j列,元素a(j,i)代表中屯、字段關(guān)聯(lián)信息表的第j行第i列。
[0024]進(jìn)一步,所述第二處理單元的分析處理過(guò)程具體為:
[00巧]設(shè)中間表中的中屯、字段為Ai,1《i《n,根據(jù)中間表判斷中屯、字段Ai行對(duì)應(yīng)Aj, 其中j>i,列的二進(jìn)制數(shù)是否為1,若是,則將中屯、字段Ai和Aj歸為一組即{Ai,Aj};在 所述初始化中屯、字段組合信息表中插入一行記錄,記錄中屯、字段Ai和Aj為1,其他字段為 0 ;
[002引當(dāng){AU已經(jīng)為歸為一組中屯、字段組后,其中,{AU中的i為1到n之間的若干個(gè) 數(shù),根據(jù)中間表判斷中屯、字段Ak化=!U行對(duì)應(yīng)Ai列的二進(jìn)制數(shù)是否全部都為1,若是, 則將中屯、字段Ak化=! ^和41歸為一組中屯、字段組,其中k= !i代表k聲i;在所述初 始化中心子段組合f目息表中插入一釘新記錄{Ai,Ak}化=!i),記錄中心子段Ai和Ak化 =!i)為1,其他字段為0,并將組合{Ai}對(duì)應(yīng)記錄刪除,最后得到中屯、字段組合信息表。
[0027] 又一方面提供一種化taVault模型數(shù)據(jù)倉(cāng)庫(kù)自動(dòng)構(gòu)建方法,該構(gòu)建方法包括:
[0028] 表查詢步驟;一表查詢裝置接收用戶輸入的中屯、字段組,所述中屯、字段組包括多 個(gè)中屯、字段,并對(duì)所述中屯、字段組進(jìn)行處理后,輸出總體信息表和中屯、字段關(guān)聯(lián)信息表。所 述總體信息表記錄有所述中屯、字段組中每一個(gè)中屯、字段W及該中屯、字段的主表和附表在 源數(shù)據(jù)庫(kù)表中的表號(hào)信息,所述中屯、字段關(guān)聯(lián)信息表記錄有所述中屯、字段組中所有的中屯、 字段相互之間的邏輯關(guān)系;
[0029] 建表步驟;一建表裝置接收所述總體信息表和中屯、字段關(guān)聯(lián)信息表,通過(guò)分析處 理所述中屯、字段關(guān)聯(lián)信息表得到中間表,再根據(jù)所述中間表得到中屯、字段組合信息表后, 再根據(jù)所述總體信息表自動(dòng)創(chuàng)建中屯、表,根據(jù)所述中屯、字段組合信息表自動(dòng)創(chuàng)建鏈接表, 根據(jù)源數(shù)據(jù)庫(kù)表和所述中屯、表自動(dòng)創(chuàng)建附屬表,完成企業(yè)級(jí)數(shù)據(jù)倉(cāng)庫(kù)的構(gòu)建。
[0030] 進(jìn)一步,所述表查詢步驟包括:
[0031] 初始化步驟;一第一初始化單元對(duì)所述中屯、字段組進(jìn)行初始化,并形成初始化中 屯、字段關(guān)聯(lián)信息表;
[0032] 捜索步驟;一捜索單元在源數(shù)據(jù)庫(kù)表中尋找具有被捜索中屯、字段的表;