1. 程式人生 > >報表應用結構優化之數據分庫存儲

報表應用結構優化之數據分庫存儲

bsp 限制 style 計算 mark 這樣的 得到 也有 傳統

報表項目中,可能會出現報表源數據來自於不同數據庫的情況。

這是由於同一張報表可能會從多個業務系統取數據。比如:員工信息從人力資源系統中取出,銷售數據從銷售系統中取出。另一種可能是,同一應用系統的數據庫負載太大,不得已分成多個數據庫的情況。比如:銷售系統數據分成當前庫和歷史庫。

報表工具須要連接的可能是相同類型的數據庫。比方都是oracle或者db2;也可能是不同類型的數據庫。

報表應用中,數據分庫存儲的解決的方法有:1、建設專門的數據倉庫。2、利用跨庫訪問的技術。

專門數據倉庫的建設和管理比較復雜。假設數據量非常大效率會非常低。並且要不斷的ETL去各個應用系統同步數據。並且數據倉庫利用的也是傳統數據庫的技術,假設負載較大的時候,也面臨分庫的問題。

數據倉庫方式結構示意圖例如以下:

技術分享

假設用跨庫訪問的技術,比如Oracle的透明網關、DB2的聯合查詢等。也有不少局限。比較共性的問題是:1、配置起來比較麻煩,並且往往須要數據庫寫權限。

2、要為跨庫的表配置別名。3、不同類型的數據庫數據類型不一致的情況。比較難處理。4、sql語句受到限制,比較難實現復雜的計算。

這樣的方式的結構示意圖例如以下:

技術分享

這樣的情況能夠考慮使用潤乾集算報表,其內置的集算引擎能夠連接多個數據庫,取數之後統一進行數據計算,能夠較好的解決報表數據來自於不同數據庫的問題。集算報表解決分庫存儲問題的結構示意圖例如以下:

技術分享

這裏,通過“銷售人員銷售報表”,看一下集算報表解決數據分庫存儲問題的過程。

報表例如以下圖:

技術分享

報表中的銷售訂單數據來自於銷售系統的db2數據庫,員工信息來自於人力資源系統的db2數據庫。使用潤乾集算報表開發這張報表的步驟例如以下:

首先在集算報表和集算器中分別配置兩個數據源,銷售系統數據庫“db2sales”,人力資源數據庫“db2HR”。

第二,在集算器中定義網格參數state,並編寫計算腳本:

技術分享

A1:連接預先配置好的db2sales數據源。

A2:連接預先配置好的db2HR數據源。

A3、A4:分別從兩個數據源中讀取sales序表和employee序表。

A5:使用集算器的對象引用機制。將sales序表和employee序表通過sellerid=eid關聯。

A6:依照參數state="California"過濾序表。

A7:生成一個新的序表。得到須要的字段。

A8、9:關閉數據庫連接。

A10:返回給集算報表。

第三。在報表設計器中定義參數argstate。配置集算數據集:

技術分享

第四,設計報表例如以下:

技術分享

輸入參數計算後。就可以得到前面希望的報表。

報表上部的查詢button是集算報表提供的“參數模板”功能,詳細做法參見教程。這裏不再贅述。


報表應用結構優化之數據分庫存儲