?數據倉庫是一個龐大的系統,數據倉庫的最終目的是提供決策支持。主要是通過把以前存入數據庫中的數據通過數據挖掘和知識發現發現某種內在規律,比如顧客的喜好、顧客購買商品之間的關聯性等。數據倉庫對于很多企業比如超市連鎖店、電信行業、保險行業有著很好的應用。但是實施這樣一個龐大的工程是昂貴的,動則百萬美金以上。這使很多企業望而卻步。因此這里提出一種輕量級數據倉庫的構建方案。該構建方案汲取了數據倉庫的面向主題的思想,雖然該方案的目標主要是提高軟件的響應速度,但是由于其面向主題的特性也可以為決策層提供支持,而且這種結構良好、面向主題的數據庫系統也可以為以后完整數據倉庫的構建所用,減少構建的復雜度。
???
很多數據庫管理系統提供商比如Microsoft、Sysbase、Oracle都有其構建數據倉庫專門的工具。這些工具由于是為構建數據倉庫而設計,因此結構非常的復雜、對數據庫設計人員的要求比較高,在軟件開發中可實施性比較低。實際上關系型數據庫從提出到現在已有30多年的歷史,關系型數據庫是現在所有數據庫中包括面向對象數據庫、關系型面向對象數據庫發展最為完善的一種。關系型數據庫中的存儲過程、觸發器、發布和訂閱模式有足夠的能力解決上面的問題。因此利用現有的關系型數據庫中這些成熟穩定的工具,就可以構建輕量級的數據倉庫。輕量級數據倉庫的構建模型如下圖2所示,主要包括如下幾個步驟:數據的清洗,根據需求定制主題集合,定制事實表采集規則,編程接口之實現。
???
數據清洗是原始數據進入數據倉庫的第一步。軟件的數據采集器采集到數據庫中的數據可能含有不規則、錯誤的數據,也就是噪聲數據,這些數據數量少,但是可能極大地影響結果的正確性,因此必須清洗掉。數據清洗主要是由數據庫中的規則以及根據業務定義的清洗規則來實現的。數據庫中的規則保證了數據庫中的數據是合乎數據類型的而業務的清洗規則保證了數據庫中的數據是合乎邏輯的。
???
輕量級數據倉庫的第二步就是根據需求定義主題。主題是數據庫中以某個表為基表,以其列集為擴展維度而構成的一系列事實表的集合。事實表的構建規則應該盡可能的和需求相吻合,這樣可以最大程度上減輕software report 從Center DB 提取數據造成的對數據庫的壓力。主題和事實表都是可以擴展的,也是可以重復利用的。事實表可以也作為基表進行擴展新的事實表。
???
第三步就是定義事實表的采集規則。由于Software report 不是直接從DB里面提取數據而是從Center DB中提取數據,因此Center DB中的數據必須能夠實時地反映DB中數據的變化,因此需要定制一定的采集策略。事實表的采集規則這里主要是指采集的頻度策略。不同的事實表對數據的采集頻度有不同的需求,例如按天統計的事實表和按周、月、年統計的事實表采集頻度肯定不相同。事實表采集規則也是主要依靠需求制定的。最后一步就是所有這些清洗規則,事實表采集規則之實現。既可以通過數據庫數據庫之間的接口實現,也可以通過其他編程接口實現。數據庫與數據庫之間的編程接口主要是通過存儲過程和觸發器以及數據庫之間的發布訂閱模式來實現。現在很多語言包括C,C++,JAVA都和數據庫之間有方便的接口ADO、DAO、ODBC、JDBC,通過這些接口編程人員可以更加靈活的操作數據庫,并對數據庫中的數據進行處理,也可以實現數據清洗、事實表采集規則。
???
輕量級數據倉庫和企業級數據倉庫相比有如下異同: 企業級數據倉庫主要目標是為企業發展提供決策支持。輕量級數據倉庫主要目標是提高軟件的響應速度。企業級數據倉庫的數據源是海量的,可能是10年的數據也可能是20年的數據。輕量級數據倉庫的數據源要少的多,主要是軟件的數據采集器采集的數據,量級在百萬到千萬級。企業級數據倉庫的數據源是異構的,可能是源于不同的DBMS,也可能是源于不同的存儲介質包括磁帶、磁盤、光盤。輕量級數據倉庫的數據源是同構的,主要是同一種DBMS下的數據。
???
企業級數據倉庫和輕量級數據倉庫的思想是一致的,都是面向主題的,穩定的,一經寫入從不或者很少修改的。企業級數據倉庫和輕量級數據倉庫都是以星型為擴展模式構建的事實表的集合,本質上把頻繁運算的結果集存貯為事實表,從而達到一次運算重復利用的效果。
|