一種減少數據倉庫數據冗餘的方法和裝置製造方法
2023-09-22 14:08:20
一種減少數據倉庫數據冗餘的方法和裝置製造方法
【專利摘要】本發明公開了一種減少數據倉庫數據冗餘的方法和裝置,該方法包括:(1)確定待分析的起始表,根據數據倉庫的元數據獲得所述起始表的多個後續輸出表信息;(2)根據各個後續輸出表與起始表的關係確定各個後驅輸出表的粒度層級信息;(3)計算處於同一粒度層級的兩個或者多個後驅輸出表之間的相似性,並對相似性較大的兩個或者多個後驅輸出表進行數據冗餘減少處理。該方能夠能自動的採集和分析數據表之間的關聯關係,確定表與表之間的冗餘程度,並據此可以進行後續的數據冗餘減少處理,由此具有很好的技術效果。
【專利說明】一種減少數據倉庫數據冗餘的方法和裝置
【技術領域】
[0001]本發明涉及一種減少數據倉庫數據冗餘的方法,涉及數據倉庫系統優化等領域。【背景技術】
[0002]目前,大型的企業級數據倉庫系統,經過幾年來的建設後,系統中必然會存在大量的冗餘數據。比如基於清單上開發的程序會非常多,生成的目標匯總表也會非常多,這些目標匯總表中有些會存在一定的相似性,隨著具有相似性的表逐漸累計,這就造成了大量的冗餘數據,這些冗餘數據,一方面影響統計分析數據的精確性和可靠性,同時也影響著資料庫的性能,耗佔寶貴的存儲資源。
[0003]要解決這個問題有兩個環節:發現冗餘數據、對冗餘進行消除合併。目前主要採取的技術方案基本是:通過有經驗的技術人員進行人工分析和處理。
[0004]現有發現和消除冗餘數據的技術方案有以下的缺點:
[0005]1、人工處理對人員的經驗和知識要求非常高,提高了問題解決的門檻。
[0006]2、發現的冗餘數據會因為人的不同而有所不同,準確性難以保障。
[0007]3、難以發現全面的數據冗餘問題。
[0008]4、難以給出最優的冗餘消除解決方案。
【發明內容】
[0009]本發明所要解決的技術問題是提供一種減少數據倉庫數據冗餘的方法,該方法能夠通過採集和分析數據表之間的關聯關係,確定表與表之間的冗餘程度,並據此進行數據冗餘減少處理,以此達到發現和消除冗餘的目的。
[0010]本發明解決上述技術問題所採取的技術方案如下:
[0011]一種減少數據倉庫數據冗餘的方法,包括:
[0012](I)確定待分析的起始表,根據數據倉庫的元數據獲得所述起始表的多個後續輸出表信息;(2)根據各個後續輸出表與起始表的關係確定各個後驅輸出表的粒度層級信息;
[0013](3)計算處於同一粒度層級的兩個或者多個後驅輸出表之間的相似性,並對相似性較大的兩個或者多個後驅輸出表進行數據冗餘減少處理。
[0014]一種減少數據倉庫數據冗餘的裝置,包括:
[0015]輸出表計算單元,用於確定待分析的起始表,根據數據倉庫的元數據獲得所述起始表的多個後續輸出表信息;
[0016]粒度層級計算單元,用於根據各個後續輸出表與起始表的關係確定各個後驅輸出表的粒度層級信息;
[0017]相似度計算單元,用於計算處於同一粒度層級的兩個或者多個後驅輸出表之間的相似性;
[0018]數據冗餘處理單元,用於獲取所述處於同一粒度層級的兩個或者多個後驅輸出表之間的相似性信息,並對相似性較大的兩個或者多個後驅輸出表進行數據冗餘處理。
[0019]本發明採取了上述方案以後,能夠根據數據倉庫元數據信息來發現數據的流向,找到輸入表的生成的輸出表,並據此根據輸出表計算表的相似性,如果這些表的相似程度高,說明存在冗餘數據,可以進行合併,以此達到自動地採集和分析數據表之間的關聯關係,確定表與表之間的冗餘程度,從而達到自動發現和消除冗餘的目的。
[0020]本發明的其它特徵和優點將在隨後的說明書中闡述,並且,部分地從說明書中變得顯而易見,或者通過實施本發明而了解。本發明的目的和其他優點可通過在所寫的說明書、權利要求書、以及附圖中所特別指出的結構來實現和獲得。
【專利附圖】
【附圖說明】
[0021]下面結合附圖對本發明進行詳細的描述,以使得本發明的上述優點更加明確。其中,
[0022]圖1是本發明實施例減少數據倉庫數據冗餘的方法的流程示意圖;
[0023]圖2是本發明實施例減少數據倉庫數據冗餘的方法的流程示意圖;
[0024]圖3是本發明實施例減少數據倉庫數據冗餘的方法中建立關係鍊表的流程示意圖;
[0025]圖4是現有技術中數據倉庫中表的示意圖;
[0026]圖5是經過本發明實施例減少數據倉庫數據冗餘的方法後的數據倉庫中表的示意圖;
[0027]圖6是本發明實施例減少數據倉庫數據冗餘的裝置的結構示意圖。
【具體實施方式】
[0028]以下將結合附圖及實施例來詳細說明本發明的實施方式,藉此對本發明如何應用技術手段來解決技術問題,並達成技術效果的實現過程能充分理解並據以實施。需要說明的是,只要不構成衝突,本發明中的各個實施例以及各實施例中的各個特徵可以相互結合,所形成的技術方案均在本發明的保護範圍之內。
[0029]另外,在附圖的流程圖示出的步驟可以在諸如一組計算機可執行指令的計算機系統中執行,並且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同於此處的順序執行所示出或描述的步驟。
[0030]具體來說,本發明的原理在於分析數據倉庫元數據,以此得到各個數據表(輸入表和輸出表)之間的關聯關係,並最終確定表與表之間的冗餘程度,從而達到自動發現和消除冗餘的目的。
[0031]如圖1所示,是本發明實施例減少數據倉庫數據冗餘的方法的流程示意圖,其包括下列步驟:
[0032]步驟101:確定待分析的起始表,根據數據倉庫的元數據獲得所述起始表的多個後續輸出表信息;
[0033]步驟102::根據 各個後續輸出表與起始表的關係確定各個後驅輸出表的粒度層級信息;
[0034]步驟103:計算處於同一粒度層級的兩個或者多個後驅輸出表之間的相似性,其中,當所述兩個或者多個後驅輸出表之間的相似性較大時,步驟104::對相似性較大的兩個或者多個後驅輸出表進行數據冗餘減少處理。
[0035]具體來說,本發明可以根據數據倉庫元數據信息來發現數據的流向,找到輸入表的生成的輸出表,並由此根據輸出表計算表的相似性,如果這些表的相似程度高,說明存在冗餘數據,可以進行合併,以此達到自動地採集和分析數據表之間的關聯關係,確定表與表之間的冗餘程度,從而達到自動發現和消除冗餘的目的。
[0036]繼續參照實施例對上述方法進行說明,在一個實施例中,所述步驟104中,對相似性較大的兩個或者多個後驅輸出表進行數據冗餘減少處理,可以包括:將兩個或者多個相似性較大的後驅輸出表合併於一個新表中,並將所述新表作為所述起始表的後驅輸出表,即在系統中將上述兩個或者多個相似性較大的後驅輸出表退出系統,並用新表替換掉上述兩個或者多個相似性較大的後驅輸出表,以此達到數據冗餘減少的目的。
[0037]其中,結合具體的實施例和具體的數據結構對本發明進行詳細說明,一般來說,一個數據倉庫的表中,其存儲著以下的信息:
[0038]存放的表的屬性信息,level表示是表的粒度級別;
[0039]fromtab是表從哪些表處理過了的;Groupfield在生成這張表時匯總欄位;wherefields是指條件中用到的表和欄位。欄位:表示表的欄位信息,其中fromCols表示這個欄位是從哪個哪些表的欄位處理過來的。一張表擁有很多個欄位信息。
[0040]在數據倉庫的元數據中,存在著每張表的表結構信息,生成這張的處理程序和處理腳本,生成這張表的輸入表,以及表的欄位映射關係,因此,基於所述數據倉庫的元數據的上述信息,我們可以通過元數據得知以上表的相關數據處理流程和欄位的映射關係。
[0041]如圖2所示,是本發明實施例減少數據倉庫數據冗餘的方法的流程示意圖,其主要包括下列的主要步驟:
[0042]步驟201:輸入分析的起始表表名和/或業務主鍵;
[0043]步驟202:查找分析起始表的後續所有表;
[0044]步驟203:計算表的粒度層級;
[0045]步驟204:計算表的相關性;
[0046]步驟205:判斷表是否冗餘和可合併的;
[0047]步驟206:記錄冗餘表信息;
[0048]步驟207:輸出冗餘表和合併建議。
[0049]以下結合上述描述和本發明的基本原理進行詳細說明各個步驟201~207,其中,步驟201:輸入分析的起始表表名和/或業務主鍵,具體包括:
[0050]輸入起始的分析表和表的主鍵欄位;
[0051]比如要從清單表出發,找後續相關的冗餘表信息,因為在數據倉庫的模型設計中沒有設計物理主鍵,因此需要輸入表的業務主鍵,具體來說,對於一些表,是沒辦法通過元數據等技術手段識別逐漸欄位,如通過外部接口直接入庫到倉庫的表,這時需要人工輸入主鍵。
[0052]步驟202:查找分析起始表的後續所有表;
[0053] 具體包括,從兀數據出發,從中查找輸入表的後續相關表信息,例如,在一個實施例中,主要根據輸入要分析對象,從系統加載所有相關的對象建立關係鍊表,要包括起始對象後驅的所有對象。
[0054]其中,關係信息:[關係名、輸入對象、輸出對象、轉換規則、類型]
[0055]其中,數據結構:節點關係鍊表,其中,圖3是本發明實施例減少數據倉庫數據冗餘的方法中建立關係鍊表的流程示意圖;
[0056]具體來說,其主要包括:根據要分析對象,建立關係鍊表的第一個節點。
[0057]從關係信息中遞歸查找輸入對象為分析對象,建立後續節點,增加到連結表中,後驅節點的兄弟節點表示多個後驅節點。
[0058]計算後驅對象表的欄位的屬性,後驅的某張表的欄位名跟其前驅對象欄位不一定一樣,如生成數據腳本insert into後驅表名(欄位名I,欄位明2,...) select fieldl,field2 from前驅表,則後驅表的欄位名I的原生欄位為前驅表的fieldl欄位的原生欄位名,以表示欄位名的不一樣但其內容是一樣的對表相似性分析帶來影響。
[0059]在判斷表相識性時,主要是如何識別後驅表的欄位是由前驅表哪些欄位而來的,取個名稱叫為後驅表欄位的原生欄位,舉一個在移動話費處理中的實例進行說明,其主要有以下2種類型:
[0060]I)後驅表的某個欄位是由前驅表直接映射的,如後驅表的號碼,費用是前驅表直接簡單計算映射過來的。則後驅表的號碼,費用的原生欄位為前驅表的號碼,費用。
[0061]2)後驅表的某個欄位是由前驅表若干欄位計算而來的,如後驅表的總費用是由前驅表的長途費+本地費兩個欄位計算出來的,則後驅表的總費用的原生欄位為長途費,本地費。
[0062]加載表的欄位和用到欄位,並根據鍊表中逐一取後驅表標記為AaftTab查找其對應的處理程序的對應生成數據的sql腳本。
[0063]這裡由於,在數據倉庫系統中,表不設物理主鍵,根據sql腳本解析得到表的groupfield欄位,做為表的主鍵欄位,根據表生成sql語句中,調用sql解析器得到表在生成過程中用到的欄位,為合併算法時所用到。
[0064]步驟203:計算表的粒度層級,輸入表的粒度記為1,表示最細粒度的數據,並按廣度遍歷後驅表,取後驅表的主鍵欄位跟其前驅表做主鍵集合比較:按廣度遍歷後續輸出表,取後續輸出表的主鍵欄位跟其前驅表做主鍵集合比較,如果所述後續輸出表的主鍵欄位集合僅存在於前驅表主鍵欄位集合,則表的粒度=前驅表的粒度+1 ;
[0065]如果後續輸出表的主鍵欄位集合存在於多個前驅表主鍵欄位集合中,則取所有前驅表的最大粒度+1。
[0066]步驟204:計算表的相關性,具體包括:
[0067]取後驅的表,做兩兩之間或者多個之間的比較,並將其結果保存於數組中,數組的結構為[表,比較表,共同主鍵欄位,用到所有的欄位],共同的欄位是去比較表的主鍵欄位集合的交集,用到的所有欄位是比較表用到的欄位的併集。
[0068]步驟205:判斷表是否冗餘和可合併,具體來說,如果表的主鍵是一樣,則此兩表可以合併,合併的表新欄位為合併表的用到欄位的併集合。
[0069]如果表的主鍵存在包含關係,則優化數據處理流程。將同粒度級別的數據處理進行合併。
[0070]步驟206:計算冗餘表信息;[0071]步驟207:輸出冗餘表和合併建議,比如,在一個實施例中,數據表有些是不能直接合併,因為有時候的冗餘是為了性能和調度任務處理及時性考慮的,因此在該實施例中,本發明能夠給出幾種的合併建議,供人工進一步確認選擇,當然,其在合併的時候,可以根據上述實施例所描述的那樣,即其可以將兩個或者多個相似性較大的後驅輸出表合併於一個新表中,並將所述新表作為所述起始表的後驅輸出表,即在系統中將上述兩個或者多個相似性較大的後驅輸出表退出系統,並用新表替換掉上述兩個或者多個相似性較大的後驅輸出表。
[0072]在一個實施例中,圖5是經過本發明實施例減少數據倉庫數據冗餘的方法後的數據倉庫中表的示意圖;
[0073]圖6是本發明實施例減少數據倉庫數據冗餘的裝置的結構示意圖。
[0074]其中,優化前的數據處理,如下圖5所示,Tabl從不同角度匯總形成了 tab2,tab3,tab4的表。Tabl作為起始的輸入表,數據量比較大需要對表進行三次的表的掃描。
[0075]經過優化以後,如圖6所示,其各個表之間的順序比較有序,從而降低了在以後步驟的中的數據處理計算量,提供了數據倉庫的效率。
[0076]總之,本發明可以根據數據倉庫元數據信息來發現數據的流向,找到輸入表的生成的輸出表,並由此根據輸出表計算表的相似性,如果這些表的相似程度高,說明存在冗餘數據,可以進行合併,以此達到自動地採集和分析數據表之間的關聯關係,確定表與表之間的冗餘程度,從而達到自動發現和消除冗餘的目的。
[0077]如圖7所示,根據本發明上述方法實施例的同一構思,本發明還公開了一種減少數據倉庫數據冗餘的裝置,包括:
[0078]輸出表計算單元701,用於確定待分析的起始表,根據數據倉庫的元數據獲得所述起始表的多個後續輸出表信息;
[0079]粒度層級計算單元702,用於根據各個後續輸出表與起始表的關係確定各個後驅輸出表的粒度層級信息;
[0080]相似度計算單元703,用於計算處於同一粒度層級的兩個或者多個後驅輸出表之間的相似性;
[0081]數據冗餘處理單元704,用於獲取所述處於同一粒度層級的兩個或者多個後驅輸出表之間的相似性信息,並對相似性較大的兩個或者多個後驅輸出表進行數據冗餘處理。
[0082]進一步地,所述數據冗餘處理單元,用於對相似性較大的兩個或者多個後驅輸出表進行數據冗餘處理,具體包括:
[0083]將所述兩個或者多個相似性較大的後驅輸出表合併於一個新表中,並將所述新表作為所述起始表的後驅輸出表。
[0084]其中,在優選的實施例中,所述輸出表計算單元,根據數據倉庫的元數據獲得所述起始表的多個後續輸出表信息,具體包括:
[0085]獲取所述兀數據中所述待分析表的表結構信息、生成表的輸入表以及表的欄位映身寸關係;
[0086]根據所述表結構信息、生成表的輸入表以及表的欄位映射關係獲取所述表的數據處理流程和欄位的映射關係,並根據所述數據處理流程和欄位的映射關係獲得所述待分析表的後驅輸出表信息。[0087]並且,所述輸出表計算單元,進一步用於獲取待分析的起始表和各個後驅輸出表業務主鍵欄位信息;
[0088]所述數據冗餘處理單元,進一步基於各個後驅輸出表的業務主鍵欄位信息進行後驅輸出表的合併,具體包括:
[0089]如果兩個後驅輸出表的主鍵欄位是一樣,則對所述兩個後驅輸出表進行合併,其合併的表新欄位為合併表的用到欄位的併集合;
[0090]如果各個後驅輸出表的業務主鍵欄位存在包含關係,則不進行後續輸出表合併。
[0091]並且,所述粒度層級計算單元,用於根據各個後續輸出表與起始表的關係確定各個後驅輸出表的粒度層級信息,具體包括:
[0092]按廣度遍歷後續輸出表,取後續輸出表的主鍵欄位跟其前驅表做主鍵集合比較,如果所述後續輸出表的主鍵欄位集合僅存在於前驅表主鍵欄位集合,則表的粒度=前驅表的粒度+1 ;
[0093]如果後續輸出表的主鍵欄位集合存在於多個前驅表主鍵欄位集合中,則取所有前驅表的最大粒度+1。
[0094]總之,本發明裝置可以根據數據倉庫元數據信息來發現數據的流向,找到輸入表的生成的輸出表,並由此根據輸出表計算表的相似性,如果這些表的相似程度高,說明存在冗餘數據,可以進行合併,以此達到自動地採集和分析數據表之間的關聯關係,確定表與表之間的冗餘程度,從而達到自動發現和消除冗餘的目的。
[0095]需要說明的是,對於上述方法實施例而言,為了簡單描述,故將其都表述為一系列的動作組合,但是本領域技術人員應該知悉,本申請並不受所描述的動作順序的限制,因為依據本申請,某些步驟可以採用其他順序或者同時進行。其次,本領域技術人員也應該知悉,說明書中所描述的實施例均屬於優選實施例,所涉及的動作和模塊並不一定是本申請所必須的。
[0096]本領域內的技術人員應明白,本申請的實施例可提供為方法、系統、或電腦程式產品。因此,本申請可採用完全硬體實施例、完全軟體實施例、或結合軟體和硬體方面的實施例的形式。
[0097]而且,本申請可採用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(包括但不限於磁碟存儲器、CD-ROM、光學存儲器等)上實施的電腦程式產品的形式。
[0098]最後應說明的是:以上所述僅為本發明的優選實施例而已,並不用於限制本發明,儘管參照前述實施例對本發明進行了詳細的說明,對於本領域的技術人員來說,其依然可以對前述各實施例所記載的技術方案進行修改,或者對其中部分技術特徵進行等同替換。凡在本發明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發明的保護範圍之內。
【權利要求】
1.一種減少數據倉庫數據冗餘的方法,其特徵在於,包括: (1)確定待分析的起始表,根據數據倉庫的元數據獲得所述起始表的多個後續輸出表信息; (2)根據各個後續輸出表與起始表的關係確定各個後驅輸出表的粒度層級信息; (3)計算處於同一粒度層級的兩個或者多個後驅輸出表之間的相似性,並對相似性較大的兩個或者多個後驅輸出表進行數據冗餘減少處理。
2.根據權利要求1所述的減少數據倉庫數據冗餘的方法,其特徵在於,步驟(3)中,所述對相似性較大的兩個或者多個後驅輸出表進行數據冗餘減少處理,包括: 將所述兩個或者多個相似性較大的後驅輸出表合併於一個新表中,並將所述新表作為所述起始表的後驅輸出表。
3.根據權利要求1所述的減少數據倉庫數據冗餘的方法,其特徵在於,步驟(1)中,根據數據倉庫的元數據獲得所述起始表的多個後續輸出表信息,具體包括: 獲取所述兀數據中所述待分析表的表結構信息、生成表的輸入表以及表的欄位映射關係; 根據所述表結構信息、生成表的輸入表以及表的欄位映射關係獲取所述表的數據處理流程和欄位的映射關係 ,並根據所述數據處理流程和欄位的映射關係獲得所述待分析表的後驅輸出表信息。
4.根據權利要求2所述的減少數據倉庫數據冗餘的方法,其特徵在於,步驟(1)中,進一步包括:獲取待分析的起始表和各個後驅輸出表業務主鍵欄位信息,所述步驟(3)中,進一步包括: 基於各個後驅輸出表的業務主鍵欄位信息進行後驅輸出表的合併,具體包括:如果兩個後驅輸出表的主鍵欄位是一樣,則對所述兩個後驅輸出表進行合併,其合併的表新欄位為合併表的用到欄位的併集合; 如果各個後驅輸出表的業務主鍵欄位存在包含關係,則不進行後續輸出表合併。
5.根據權利要求1所述的減少數據倉庫數據冗餘的方法,其特徵在於,步驟(2)中,所述根據各個後續輸出表與起始表的關係確定各個後驅輸出表的粒度層級信息,具體包括: 按廣度遍歷後續輸出表,取後續輸出表的主鍵欄位跟其前驅表做主鍵集合比較,如果所述後續輸出表的主鍵欄位集合僅存在於前驅表主鍵欄位集合,則表的粒度=前驅表的粒度+1 ; 如果後續輸出表的主鍵欄位集合存在於多個前驅表主鍵欄位集合中,則取所有前驅表的最大粒度+1。
6.一種減少數據倉庫數據冗餘的裝置,其特徵在於,包括: 輸出表計算單元,用於確定待分析的起始表,根據數據倉庫的元數據獲得所述起始表的多個後續輸出表信息; 粒度層級計算單元,用於根據各個後續輸出表與起始表的關係確定各個後驅輸出表的粒度層級信息; 相似度計算單元,用於計算處於同一粒度層級的兩個或者多個後驅輸出表之間的相似性; 數據冗餘處理單元,用於獲取所述處於同一粒度層級的兩個或者多個後驅輸出表之間的相似性信息,並對相似性較大的兩個或者多個後驅輸出表進行數據冗餘處理。
7.根據權利要求6所述的減少數據倉庫數據冗餘的裝置,其特徵在於,所述數據冗餘處理單元,用於對相似性較大的兩個或者多個後驅輸出表進行數據冗餘處理,具體包括: 將所述兩個或者多個相似性較大的後驅輸出表合併於一個新表中,並將所述新表作為所述起始表的後驅輸出表。
8.根據權利要求6所述的減少數據倉庫數據冗餘的裝置,其特徵在於,所述輸出表計算單元,根據數據倉庫的元數據獲得所述起始表的多個後續輸出表信息,具體包括: 獲取所述兀數據中所述待分析表的表結構信息、生成表的輸入表以及表的欄位映射關係; 根據所述表結構信息、生成表的輸入表以及表的欄位映射關係獲取所述表的數據處理流程和欄位的映射關係,並根據所述數據處理流程和欄位的映射關係獲得所述待分析表的後驅輸出表信息。
9.根據權利要求6所述的減少數據倉庫數據冗餘的裝置,其特徵在於,所述輸出表計算單元,進一步用於獲取待分析的起始表和各個後驅輸出表業務主鍵欄位信息; 所述數據冗餘處理單元,進一步基於各個後驅輸出表的業務主鍵欄位信息進行後驅輸出表的合併,具體包括: 如果兩個後驅輸出表的主鍵欄位是一樣,則對所述兩個後驅輸出表進行合併,其合併的表新欄位為合併表的用到欄位的併集合; 如果各個後驅輸出表的業務主鍵欄位存在包含關係,則不進行後續輸出表合併。
10.根據權利要求6所述的減少數據倉庫數據冗餘的裝置,其特徵在於,所述粒度層級計算單元,用於根據各個後續輸出表與起始表的關係確定各個後驅輸出表的粒度層級信息,具體包括: 按廣度遍歷後續輸出表,取後續輸出表的主鍵欄位跟其前驅表做主鍵集合比較,如果所述後續輸出表的主鍵欄位集合僅存在於前驅表主鍵欄位集合,則表的粒度=前驅表的粒度+1 ; 如果後續輸出表的主鍵欄位集合存在於多個前驅表主鍵欄位集合中,則取所有前驅表的最大粒度+1。
【文檔編號】G06F17/30GK103902582SQ201210579470
【公開日】2014年7月2日 申請日期:2012年12月27日 優先權日:2012年12月27日
【發明者】顏海濤 申請人:中國移動通信集團湖北有限公司