日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数据聚集技术在mondrian中的实现

發布時間:2025/3/15 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据聚集技术在mondrian中的实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1?聚集的概念及其作用?

  聚集是指按照維粒度、指標與計算元的不同,依據實際分析需要對底層數據進行記錄行壓縮、表聯接、屬性合并等預處理,是對底層的詳細數據進行相應的統計的數據加工形式,包括求和、求平均值等。?

  聚集計算的結果是根據用戶可能的查詢預先計算好的匯總數據。匯總的形式多種多樣,可以沿著數據倉庫中的多維數據的任何一維或多維進行。如果維分層次,聚集還可以在任何一個層次上進行。維的某種組合對應的聚集數據稱為一個方體(Cuboid),給定維集合的所有方體形成的方體格稱為該維集合的數據立方(Data Cube)。數據立方的建立就是通過聚集實現的。?

  數據聚集用于提升數據倉庫系統進行聯機分析處理時的性能,它通過在問題提出之前就準備好答案來縮短查詢響應時間,是OLAP技術能夠快速響應的基礎,主要體現在以下幾個方面:?

  (1)?聚集降低了直接訪問基礎數據對前端應用的影響?

  聯機分析處理通常需要的是由細節數據導出的匯總數據,直接在海量基礎數據上進行查詢統計將極大的影響系統效率。通過聚集預先計算出需要的匯總數據,從而避免對基礎數據的直接訪問。?

  (2)?聚集減少了對基礎數據的重復計算?

  不同的聯機分析處理操作可能都需要對同一部分基礎數據進行同樣的處理。如“2000年第2季度A地區的銷售額”是對該地區該時間段內所有銷售記錄的統計匯總,在進行“A地區2000年不同季度銷售額對比”、“A地區不同年份第2季度的銷售額對比”、“不同地區2000年第2季度銷售額對比”等處理時,都需要使用該匯總數據。通過聚集預先計算出該匯總數據,從而避免對相關基礎數據的重復計算。?

  (3)?使用聚集可以在一定程度上保證數據一致性?

  一方面,數據倉庫中的基礎數據是不可實時更新的,由這些相對穩定的基礎數據導出的聚集反映的是一段時間內的匯總信息。另一方面,數據倉庫中的數據又是時變的,新的數據將被定期的增加。通過聚集可以在一定程度上保證分析過程訪問的數據的一致性,避免因直接使用基礎數據而導致先后匯總的數據不一致。?

  2?聚集的存儲組織?

  聚集數據通常以多維數據集的形式組織。多維數據集是包含維度和度量值的多維結構,其中維度定義多維數據集的結構,確定度量值的坐標,反映了可以向多維數據集提出的查詢;度量值提供了用戶感興趣的數值。?

  2.1?三種聚集存儲方式的比較?

  聚集數據按維所指定的坐標存儲在多維結構單元中,存儲位置依賴于多維數據集的存儲方式。包括多維結構(MOLAP)方式和關系型結構(ROLAP)方式,兩種方式有各自的優勢。?

  (1) MOLAP方式:聚集數據和基礎數據的副本一起存儲在多維結構中。?

  該方式存儲結構簡潔、明了,聚集數據預綜合較高,可以很大程度的提升查詢性能。缺點是適應維數動態變化較差,增加一維,聚集規模迅速增長;適應數據變化較差,數據變化時,聚集重計算量相當大。

  (2) ROLAP方式:聚集數據與基礎數據一起保存在關系結構中。

  該方式下聚集數據與基礎數據存放在關系表中,適應維數動態變化較好,維數的增加對已有聚集的影響不大;適應數據變化的范圍大,聚集數據預綜合度靈活,各種粒度的聚集數據可以分開存儲。缺點是存儲結構和處理過程復雜,處理時間通常也較長。

結合上述兩種存儲方式的優點,混合型結構(HOLAP)方式將聚集數據存儲在多維結構中,將基礎數據存儲在關系型結構中,但這種方式不適合既需要快速統計分析,有能夠快速訪問基礎數據的應用環境。

  2.2?聚集模式與聚集表

  由于關系型數據庫的廣泛應用,利用ROLAP實現多維數據組織是最為常用,并且較為成熟的方法。

  在ROLAP中,存儲基礎數據的關系模式稱為基礎模式,由存儲事實數據的事實表和存儲維數據的基本維表構成。存儲聚集數據的關系模式稱為聚集模式,由聚集表和相關維表(細粒度基本維表和/或粗粒度的上卷維表)構成。聚集模式與基礎模式都是典型的星型模式,在結構上基本一致,只是存儲數據的粒度不同。

  可以通過修改基本維表,將維的層次信息擴展到其中,從而實現聚集數據和基礎數據的集中存放,進而將兩種模式合而為一,達到一體化存儲、簡化數據存儲結構的目的。但是這種方法存在一系列問題:

  (1)?增加了查詢的復雜度,需要區分基礎數據和聚集數據以避免數據重復計算;

  (2)?模糊了列的數據類型,在列中需要存儲不同類型的數據;

  (3)?擴大了數據的定義范圍,因存儲統計數據導致基礎數據存儲空間的浪費;

  (4)?加大了ETL過程的困難。

  因此,聚集數據通常單獨存放在不同的關系表中。

3?聚集的物化

  聚集的有效計算是多維分析的核心。如前所述,維集合的任意一個組合對應的聚集數據代表了數據立方中的一個方體,一次聚集計算處理可以是單個方體的計算,也可以是整個數據立方的計算。聚集的計算過程就是數據立方的物化過程。

  3.1?全物化方法

  全物化是指對維集合的所有可能組合都進行聚集。最為簡單的全物化方法是2N算法,通過計算N維事實表中的元組,依次得到2N個聚集數據并存儲到多維數據集中。當數據立方的維數增多,維的層次更趨復雜時,可能的聚集計算量將劇增,導致存儲空間爆炸現象的發生。

  為降低聚集計算量,減少存儲空間的使用,可以采用多種改進方法,根據參與聚集計算的數據的范圍分為單個方體的聚集計算和基于依賴關系的聚集計算兩類。

  典型的單方體聚集計算方法是基于數組方式的聚集計算方法,該方法包括四種形式:G-Aggregation、M-Aggregation、Infix-Aggregation和Prefix-Aggregation。單個方體計算方法會進行多次重復的I/O操作,因此計算效率很低。

  并不是所有的聚集都需要從基礎數據開始計算,利用方體之間的依賴關系從子方體匯總計算父方體可以加速聚集計算的過程。基于該思想的聚集計算方法包括基于排序(sort- based)和基于哈希(hash-based)的算法:PipeSort,PipeHash和Overlap。這類方法先估計數據立方的各種計算方式的代價,確定其計算順序和導出關系,其目的是使數據立方的計算開銷最小。

  上述聚集計算方法特別指針以ROLAP形式存儲的數據立方,適合于MOLAP的經典聚集計算方法是多路數組聚集方法。它在尋找最優掃描次序時是將所有的掃描次序需要的內存數量都計算出來,然后將需要內存最少的掃描次序作為最優次序,對數據立方進行聚集計算。多路數組聚集的基本原理如下:

  (1)?將n維數組劃分成小的n維塊,其中每個塊作為一個獨立的單元包含有聯機分析處理所需要的信息;

  (2)?對數組分塊處理后的子方體進行聚集計算,通過優化計算次序,使部分聚集可以同時計算,并避免不必要的重復計算。

3.2?部分物化策略

  盡管通過全物化可以使所有查詢以最短的時間做出響應。但是,當數據量非常龐大時,全物化過程消耗的時間及其占用的空間都可能讓用戶無法忍受,因而不具現實性。其次,簡單排列組合產生的多維數據集往往是一個龐大的稀疏矩陣,存在著大量的空聚集數據單元,造成存儲空間的巨大浪費。再次,隨著數據倉庫的定時刷新,聚集數據的同步更新也將耗費大量的系統資源。因此,應該科學的選擇物化方案和聚集策略,以平衡聚集計算和維護與OLAP響應時間之間的矛盾。

  部分物化是指在部分維及其相關層次上進行聚集,即從數據立方的所有方體中選擇一個子集進行物化。在一般情況下,通常20%的聚集就能夠滿足80%的查詢需要。如何確定該20%的聚集是提高聚集效率的關鍵。

  聚集的識別可以綜合使用以下方法:

  (1)?在設計數據倉庫時,站著用戶的角度分析數據倉庫可能的查詢需求。業務上的功能需要往往可以暴露出潛在的聚集需求;

  (2)?數據倉庫模式確定后,通過分析主題域確定頻繁的聚集;

  (3)?數據倉庫投入使用后,可以從已有系統的查詢模式中獲取,包括報表、日志以及利用其它商業智能工具。

  完成聚集的識別后,需要對其進行評估,以縮小需要物化的范圍。評估需要考察的因素包括幾個方面:

  (1)?評估數據倉庫可用的資源,用于確定可以物化的聚集數量。在模式上聚集表要小于事實表,然而盡管只是少數幾個聚集表,其占用的存儲空間可能遠遠超出事實表。這是限制只能物化部分聚集表的因素之一。

  (2)?將聚集與事實表進行比對,用于確定哪些聚集是有效的,能夠實際提高查詢效率。聚集究竟能夠帶來多大的性能提升需要進行量化。量化指標一般直接與該聚集匯總的元組數相關,但數據的稀疏性和傾斜性對該指標帶來一定的影響。

  除了和事實表進行比較外,聚集指標還需在不同聚集之間進行衡量,以判斷哪種聚集形式更優。如聚集A可以分別從B和C得到,相對而言,B更具指標意義,則僅需物化B即可。

  (3)?聚集的粒度。粒度是對數據倉庫中的數據綜合程度高低的一個度量,粒度小,綜合程度低,回答查詢的種類多,數據量大;粒度大,綜合程度高,回答查詢的種類少,數據量小。不明確的聚集粒度將帶來一系列問題,包括:導致數據倉庫細節數據的遺漏;聚集包含了不合適的維度;應該包含的維度沒有被包含;不同事實表的維度包含在同一個聚集表中。

  (4)?聚集能夠為多少用戶所用,以及對不同用戶的重要程度。某些少數查詢執行頻率不高,但為重要決策所使用,盡管對應的聚集綜合指標意義不大,但是仍然需要物化。

  隨著時間的發展,應用需求的變化可能使得已有的聚集不再經常被使用,或者以前較少使用的聚集開始需要經常性的使用。因此需要能夠對聚集進行添加和刪除。

4?聚集導航與優化

  聚集導航的本質是基本SQL語句的轉換,即將基本SQL語句通過查詢重寫重定位到已有的聚集上,利用聚集數據提高查詢效率。沒有聚集導航,終端用戶將不得不直接面對聚集選擇問題。嚴格限制事實表上的聚集數量,可以降低人工選擇帶來的混亂,但同時也限制了可能的性能提升。通過聚集導航,可以增加事實表上聚集的數量,實現查詢的透明性。

  4.1聚集的導航策略

  聚集的標識是實現其導航的前提,復雜的標識將對聚集的管理帶來不利的影響。以ROLAP為例,聚集的標識包括聚集的命名和聚集表屬性的命名。在命名時需要參考以下原則:

  (1)?事實和維的屬性的名稱在聚集模式和基礎模式中應該保持一致;

  (2)?聚集維表的命名機制應與基礎維表的一致,通過表名都能夠指示表中記錄的含義;

  (3)?聚集事實表的命名比較復雜,簡單的根據聚集的粒度或聚集的對象進行命名將導致較長的表名。由于聚集的使用對用戶是透明的,聚集的名字可以對用戶不可見。提供聚集導航后,只需要由聚集導航過程處理復雜的聚集命名和解釋過程。此時可以使用編號等方式對同一事實表上的聚集進行區分。

除了對聚集進行標識外,在設計聚集維表時,還應注意以下問題:

  (1)?除了關鍵字外,聚集維表必須是基礎維表的子集;

  (2)?聚集維表屬性的取值必須與基礎維表的一致,明確聚集維表的數據是對基礎維表數據的匯總;

  (3)?對于基礎維表中的每一個屬性值的組合,聚集維表中有且僅有一條記錄與之對應,從而解決維表數據的加載問題。

  根據用戶的查詢在數據倉庫中的大量聚集中找到對應聚集的過程就是聚集導航。聚集導航的任務有:

  (1)?用最快的速度找到能夠回答用戶需求的聚集;

  (2)?找到的聚集應該是回答查詢問題的最優聚集。

  4.2?聚集的優化

  聚集優化包括兩個方面:一是指聚集處理過程和處理技術的優化,如索引的建立與更新、多線程技術、并行處理技術等,其作用是提高系統聚集效率,降低聚集的時間與空間復雜性;二是指聚集策略和聚集導航的優化。前者是相關技術在聚集上的應用,與聚集技術本身關聯不大,需要重點考察的是后者。

  聚集策略的優化就是指在聚集的時間復雜性、空間復雜性與查詢速度及性能之間取得動態的平衡。當用戶的分析查詢相對穩定時,通過優化可以找出最優或接近最優的聚集策略;聚集策略并不是一成不變的,還要根據用戶需求的變化不斷的進行調整以滿足用戶新的需求。

  構成聚集優化質量目標的質量要素及其質量屬性如表4.1和4.2所示。

   在數據倉庫的設計開發階段,如果想獲得較好的聚集物化方案,需要分析所有用戶和應用的需求,研究實際使用中需要哪些維度、粒度層次的匯總信息,從而確定 所有可能涉及的聚集和估算使用的頻度。但在數據倉庫創建的初期,進行這種需求分析顯然是比較困難或不太現實,且很多情況下可能并不準確,所以采用系統缺省 的聚集物化方案,有時不失為一種

表4.1?維與指標的取舍原則

?

元素

策略

原則條件

?

放棄

長期不使用;不屬于主題主鍵

?

維粒度

放棄

長期不使用;不影響上層的快速聚集生成;不影響其它層的鉆取操作

?

增加

高頻度鉆取到的層次

?

指標

放棄

長期不使用,不屬于任何一個復合指標的因子

?

復合指標

放棄

長期不使用

?

增加

高頻度計算的新的復合指標

?

?

表4.2?數據聚集優化的質量要素

質量要素

內容(質量屬性)

數據對象

維對象(聚集方案、維成員、限制條件、時間)

指標對象(指標名、指標運算、限制條件)

訪問日志

操作日期、操作時間、操作類型、維數據對象、特殊維數據對象、指標數據對象、響應時間、用戶名稱

?

響應敏捷率

數據對象OLAP操作響應時間/(標準響應時間+數據對象OLAP操作響應時間/)

數據查詢率

數據對象被查詢次數/OLAP操作總次數

數據下鉆率

數據對象的下鉆次數/OLAP操作總次數

數據歸并率

數據對象的歸并次數/OLAP操作總次數

指標復合率

指標復合運算次數/OLAP操作總次數

簡單易行的方法,而將聚集優化放到系統運行的過程中,基于對系統運行情況的分析之上周期性的實施。具體實施步驟如下:

  ?建立初始聚集物化方案。

  ?確定并錄入與聚集優化的相關參數指標(包括:聚集關鍵度、應用需求度上限閥值、應用需求度下限閥值、聚集閥值、查詢閥值等)。

  ?啟動/周期性觸發聚集監測進程,采集系統運行記錄。

  ?系統日志分析和用戶需求分析。在對系統日志分析的基礎上,按照維和粒度層次的取舍原則和應用需求度的判斷流程,確定哪些聚集需要物化,哪些可以刪除,哪些聚集需要經過進一步判斷。

  ?建立有向聚集關系表,獲取各聚集權重。

  ?交替執行物化選擇算法和聚集路徑的優化算法,在滿足用戶期望值和系統性能要求的基礎上,確定哪些聚集需要物化,確定哪些聚集無需物化,而轉為查詢關系,實現聚集方案的總代價最小。

  ?根據優化算法處理后得到的物化聚集方案集合和最優路徑,重新調整數據倉庫的聚集。

5 Mondrian中的聚集實現



  5.1?一個星型模式

  開源項目Mondrian是一個用JAVA寫成的OLAP引擎。它用MDX語言實現查詢,從關系數據庫中讀取數據,然后經過Java API用多維的方式對結果進行展示;它通過模式Schema實現關系數據模式到多維數據模式的映射。Mondrian不僅能進行數據聚集,建立多維度的分析和查詢,同時還提供切片、切塊、下鉆、上卷和旋轉等數據分析功能。

  5.1?聚集表的定義與創建

  在Mondrian中,聚集表依賴于事實表,并且依賴關系定義在多維模式中。給定如圖5.1所示的星型模式,其中事實表Sales上典型的一個聚集表agg_1的定義如圖5.2所示。



  Mondrian能夠根據實際的查詢決定是從事實表還是從聚集表中獲取數據。

  一個事實表可以有0到多個聚集表,一個聚集表只能對應于一個事實表。聚集表從事實表的1到多個維度對其度量進行匯總。

  每一維上都可以采取兩種方式實現聚集:

  (1)?維的“舍棄”,即舍棄星型模式的某一維,聚集表在該維上實現數據的完全匯總;

  (2)?維的“折疊”,即將展開的星型模式的某一維折疊到聚集表中,通過將其部分屬性包含進聚集表從而實現在該維上數據的部分匯總。如在上述聚集表agg_1中,維Customer被舍棄掉了,而維Product則被折疊到其中。

?

 每一個聚集表都以獨立關系表的形式被創建,如圖5.3所示。沒有必要創建所有的聚集表。選擇創建哪些聚集表類似與選擇哪些列建立索引,取決于應用需求和經驗。

sales_fact_1997

product_id

time_id

customer_id

promotion_id

store_id

store_sales

store_cost

unit_sales

CREATE TABLE agg_l_05_sales_fact_1997 (

??product_id INTEGER NOT NULL,

??customer_id INTEGER NOT NULL,

??promotion_id INTEGER NOT NULL,

??store_id INTEGER NOT NULL,

??store_sales DECIMAL(10,4) NOT NULL,

??store_cost DECIMAL(10,4) NOT NULL,

??unit_sales DECIMAL(10,4) NOT NULL,

??fact_count INTEGER NOT NULL);

?

CREATE INDEX i_sls_97_cust_id ON agg_l_05_sales_fact_1997 (customer_id);

CREATE INDEX i_sls_97_prod_id ON agg_l_05_sales_fact_1997 (product_id);

CREATE INDEX i_sls_97_promo_id ON agg_l_05_sales_fact_1997 (promotion_id);

CREATE INDEX i_sls_97_store_id ON agg_l_05_sales_fact_1997 (store_id);

INSERT INTO agg_l_05_sales_fact_1997 (

??product_id,

??customer_id,

??promotion_id,

??store_id,

??store_sales,

??store_cost,

??unit_sales,

??fact_count)

SELECT

??product_id,

??customer_id,

??promotion_id,

??store_id,

??SUM(store_sales) AS store_sales,

??SUM(store_cost) AS store_cost,

??SUM(unit_sales) AS unit_sales,

??COUNT(*) AS fact_count

FROM

??sales_fact_1997

GROUP BY

??product_id,

??customer_id,

promotion_id,

store_id;

?


轉載于:https://www.cnblogs.com/iammatthew/archive/2010/08/19/1803884.html

總結

以上是生活随笔為你收集整理的数据聚集技术在mondrian中的实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 中国女人黄色大片 | 日韩人妻一区二区三区蜜桃 | 黄色美女大片 | 韩国视频一区二区 | 亚洲精品乱码久久久久久写真 | www日韩在线 | 黄色av一区| 久久久久久久中文字幕 | 日日干干 | 国产资源在线免费观看 | 欧美一级在线观看视频 | 国产福利在线观看 | 天天躁日日躁aaaa视频 | 小萝莉末成年一区二区 | 国产精品一区二区三区在线 | 中文字幕一本 | 国产奶水涨喷在线播放 | 亚洲男女在线观看 | 国产探花在线精品一区二区 | xxxx日本高清 | 日韩黄色片免费看 | www.伊人.com | 国产一区在线观看免费 | 桃色在线视频 | 国产成人网 | 日本午夜一区二区三区 | 国产青青在线 | 一级片黄色的 | 国产系列精品av | 国产精品一区二区三区久久 | 日日夜夜狠 | 91视频首页 | 国产又爽又黄又嫩又猛又粗 | 中文文字幕文字幕高清 | 亚色视频在线观看 | 国产黄色网址在线观看 | 国产在线成人 | 高中男男gay互囗交观看 | 中文国产字幕 | 免费人成在线观看网站 | 日本免费黄网站 | 91免费视频国产 | 国产精品自拍亚洲 | 男女乱淫| 天啪| 成人av亚洲 | 国产大片一区二区三区 | 亚洲精品国产成人av在线 | 69综合 | 中文字幕有码在线 | 久草a视频| 黄色成人免费网站 | 国产98在线| 99精品国产成人一区二区 | 亚洲成人网在线播放 | 午夜免费一级片 | 亚洲AV无码国产精品播放在线 | 午夜高清 | 中文字幕999| 男男野外做爰全过程69 | 亚洲av无码一区二区二三区 | 亚洲伦理在线播放 | 久久国产免费视频 | 51妺嘿嘿午夜福利 | 一本—道久久a久久精品蜜桃 | 欧美激情久久久 | 成人在线视屏 | 亚洲中文字幕97久久精品少妇 | 午夜免费在线观看 | 亚洲码无人客一区二区三区 | 日韩极品在线观看 | 四虎5151久久欧美毛片 | 成年人性生活视频 | 女性喷水视频 | 国产精品伦一区二区三级视频 | 国产高清中文字幕 | 色哥网| 国产视频1区2区 | 少妇一级淫免费观看 | 91社区在线播放 | 欧美肥妇bwbwbwbxx | 久久久久成人精品无码 | www.亚洲激情| 美女网站视频在线观看 | 中文字幕av一区二区三区人妻少妇 | 久久久噜噜噜www成人 | 成年人天堂 | 一区二区三区人妻 | 精品视频一区二区三区 | 爱搞逼综合网 | 久久久香蕉视频 | 欧美另类videos | 一区二区自拍偷拍 | 男女爽爽 | 妞干网精品 | 美女扣逼喷水视频 | 久久久久成人网 | 欧美三区四区 | 日韩一区二区免费看 |