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

2021-09-07 12:32:03 字數 2285 閱讀 2031

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

這樣的情況時能夠考慮採用潤幹集算報表提供的本地計算方案。

所謂本地計算,是將一部分計算任務從資料庫中移出到報表server中完畢。

大多數有一定規模的應用系統中。資料庫和應用server一般會部署在不同的物理機器上。當中,資料庫處於中心地位,要為各個應用系統提供服務。假設運算大部分由資料庫完畢,則會導致資料庫壓力過大。而資料庫的擴容成本和難度都相當高。而應用server則不同,不同應用會有不同的應用server硬體,且easy集群擴容。

假設能將一部分運算移出資料庫。轉而由與應用server一起部署的報表server完畢,則會非常大程度地減小資料庫壓力,而且充分利用應用server所在機器的計算能力,提公升系統效能。

集算報表方案結構示意圖例如以下:

從上圖能夠看出,潤幹集算報表能夠將部分資料從資料庫轉移到報表應用server的本地硬碟。這部分資料能夠是計算的中間結果。也能夠是部分基礎資料。

集算報表內建了集算引擎。能夠通過簡潔的指令碼進行本地化的資料計算。因此。從資料儲存和計算雙方面都能夠減少資料庫壓力。

部分資料和計算從資料庫轉移到報表應用server上,能夠充分利用應用server集群的儲存和計算能力。應用server不管是單機公升級(縱向擴充套件)或者新增集群數量(橫向擴充套件)都要比資料庫server的成本低非常多。在本地硬碟上讀取資料的速度要比資料庫jdbc快非常多,能夠解決這個瓶頸問題。

集算引擎還能夠進行多執行緒的平行計算,能夠充分發揮應用server多cpu、多核的計算能力。因此。潤幹集算報表方案是低成本提高報表應用系統效能的優選方案。

以下,通過「某公司客戶累計銷售額與去年全年銷售額對照報表」的製作。來看一下集算報表是怎樣實現本地化計算的。報表例如以下圖:

這張報表中的客戶、訂單數、銷售額都是直接從資料庫中計算的2023年1月-10月的資料。

2023年全年的訂單數、銷售額是從報表應用server檔案系統中的temp2009sales.b檔案裡讀取。「銷售額/去年銷售額」則是今年和去年的資料共同計算的。

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

首先,要提前用集算器從資料庫中讀取2023年等各個年份的銷售資料,計算好之後。以集算器的二進位制編碼匯出到temp2009sales.b檔案裡,每年乙個檔案。中間資料製作好之後,資料庫中2023年的資料就能夠移除備份了,不再占用資料庫的空間。

第二,編寫集算器指令碼salesproportion.dfx例如以下:

注意,指令碼的引數是:argyear(要查詢的年份),argmonth(要查詢的月份)。

a1:連線預先配置好的資料來源demo。

a2:從資料庫中計算取出要查詢的年份訂單數、銷售額。

a3:從前一年的資料檔案裡取出資料。

a4:將a3中的資料依照a2中的client欄位對齊,a2中有a3中沒有的補空行。

a5:利用a2來生成新的續表。

當中新增了a4的相應行資料,比方a4(#).c:lastcount就是a4的相應行(#是a2的當前行號)中取出c欄位。

a6:關閉資料庫連線。

a7:向報表返回結果集。

第三,在集算報表中定義報表引數(argyear、argmonth)和計算資料集:

上圖中。引數名是指dfx定義的引數名稱,引數值是指報表提交給集算引擎的值。

這裡是將報表的兩個引數的值傳遞給集算器的同名引數。

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

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

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

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

集團報表中心優化系統

集團報表中心優化系統 資訊化現狀 集團在經過多年的資訊化建設已建成了協同辦共 內外部門戶系統 客戶服務系統 財務管理系統 資金預算系統 收費管理等等資訊化系統,積累了大量的客戶 收費 服務資料,這些資料蘊藏著豐富的使用價值,是指導企業進一步發展的重要依據,應當進行充分的挖掘和利用。但是目前資料多 分...

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

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