報表應用結構優化之資料分庫儲存

2022-09-17 11:39:11 字數 1819 閱讀 8308

報表專案中,可能會出現報表源資料來自於不同資料庫的情況。

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

報表工具須要連線的可能是相同型別的資料庫。比方都是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是集算報表提供的「引數模板」功能,詳細做法參見教程。這裡不再贅述。

優化報表系統結構之報表server計算

在報表專案中,經常會碰到資料庫壓力非常大影響整個系統效能的問題。由以下的傳統方案的結構示意圖能夠看出。所有資料儲存和源資料計算都放在資料庫完畢。當併發訪問量較大的時候,儘管每乙個報表的資料量不大,還是會造成資料庫壓力過大。成為效能的瓶頸。多數資料庫廠商提供的jdbc介面資料傳輸比較緩慢。在併發量較大...

資料庫優化之垂直分庫

一般而言垂直分庫的步驟 1.收集分析業務模組間的關係 例如簡訊系統 在常見的簡訊系統必然有 使用者模組 和 簡訊記錄模組 和運營商模組 如要進行處置分配則可以將簡訊記錄模組單獨出來,但此表中要稍作修改,需要儲存一些使用者賬號使用者姓名,或者運營商名等次要資訊,已包證不必要的連表查詢 如需要詳細資訊可...

優化報表系統結構之報表伺服器計算

在報表專案中,常常會碰到資料庫壓力很大影響整個系統效能的問題。由下面的傳統方案的結構示意圖可以看出,全部資料儲存和源資料計算都放在資料庫完成。當併發訪問量較大的時候,雖然每個報表的資料量不大,還是會造成資料庫壓力過大,成為效能的瓶頸。多數資料庫廠商提供的jdbc介面傳輸資料比較緩慢,在併發量較大的情...