將資料放至資料庫外或檔案系統來提高報表系統效能

2021-06-28 07:36:55 字數 1792 閱讀 7944

在報表應用中,針對歷史資料查詢的報表佔比很大,這類報表的特點是:第一,資料變化小,查詢的歷史資料幾乎不會發生變化;第二,資料量大,資料量隨時間跨度增大而不斷增加。如果資料始終存放在資料庫中,由於大多數資料庫的jdbc效能都很低下(jdbc取數過程要做資料物件轉換,比從檔案中讀取資料會慢乙個數量級),這時涉及資料量較大或在併發較多的時候,報表的效能會急劇下降。如果能將這些變化不大的歷史資料移出資料庫,採用檔案系統儲存,將可能獲得比資料庫高得多的io效能,從而提高報表的整體效能。

但是,報表並不是直接使用原始資料進行呈現,還需要做進一步的運算。而檔案本身沒有計算能力,這種情況資料量一般也較大,不可能靠報表呈現端的計算能力實現。

集算報表在內建集算引擎的幫助下可以基於庫外檔案做計算,支援的檔案型別包括:文字、excel、json格式檔案等,還支援效率更高的二進位制檔案。將較大資料量的歷史資料從資料庫中剝離,這樣除了可以滿足歷史查詢類報表的效能需求外,還可以借助集算報表對混合資料來源(檔案+資料庫)的支援,進行大資料量的實時資料查詢,從檔案系統中讀取往期較大的歷史資料,從資料庫中讀取當期較小的實時資料進行混合計算。這樣的做法可以避免資料庫的io瓶頸,快速提公升報表效能,增大資料查詢範圍。同時,這也是優化資料庫的過程,將歷史資料移出,資料庫可以專注於保證業務系統資料的一致性,而不是耗費資源在大量的歷史查詢任務上。

具體使用上,當使用者將資料儲存到檔案系統中後,即可使用集算報表進行資料查詢和計算,集算報表內建的集算引擎可以基於檔案(和資料庫)進行資料計算。使用時,可以參考如下步驟(舉例說明):

1、將資料庫中歷史資料匯出到檔案

使用者可以自行選擇適當的方法將歷史資料匯出到檔案,當然這個過程也可以使用集算器來做,可以將資料匯出到文字,如果希望更高的效能,集算報表還可以支援更高效的二進位制檔案格式(比文字能快出2-5倍)。在集算器(用免費版本即可)中執行類似如下**可將文字檔案轉換成二進位制格式:

file("e:/訂單明細.b").export@b(file(「e:/訂單明細.txt」.cursor())

2、使用集算報表內建的集算引擎讀取資料檔案

當資料外接後,採用集算報表就如同使用檔案資料來源做報表了,比如根據訂單明細資料按客戶統計訂單數量和訂單金額,由於原始訂單資料非常大,所以讀入檔案時採用流式(檔案游標)的方式逐步讀入。

指令碼中使用的引數及其含義如下:

指令碼:

a1:通過檔案游標採用流式處理的方式讀入大源文字資料;

a2:按照指定的多個維度進行資料過濾,結果仍然是游標;

a3:根據選出的結果,按照客戶id彙總訂單數量和訂單金額;

a4:為報表返回結果集。

如前面提到的,集算報表既可以針對單獨的檔案(歷史資料)進行查詢計算,還可以進行檔案+資料庫混合運算,進行大資料量實時查詢。

a5:根據指定引數執行sql,彙總當期資料;

a6:將兩部分彙總資料合併(縱向拼接);

a7:根據合併後的歷史和當期彙總資料再次彙總,得到各客戶的訂單數量和訂單金額。

3、在集算報表中呼叫集算指令碼,編輯報表表示式完成報表製作

通過以上的過程可以清晰的看到,集算報表可以很好解決針對往期歷史(+當期)資料進行查詢時往往存在效能不高的問題,通過資料外接提公升報表效能。

上傳檔案至Oracle資料庫

在資料庫的hr方案下建立乙個名為testfileupload的表,包含3列 主鍵pkid 檔名filename 檔案file blob型別 void uploadfile filestream objfs new filestream file1.value,filemode.open,fileac...

將資料庫備份還原至最新狀態

1 mysqldump a master data 2 data all.sql 710 資料庫修改 insert students name,age values a 20 insert students name,age values b 30 2 刪除庫 rm rf var lib mysql...

檔案系統儲存資料,與資料庫系統儲存資料的差別

一 檔案系統與資料庫系統的概念及其發展 1.檔案系統 所謂的檔案系統簡單地說負責訪問和管理檔案資訊的軟體結構。例如電腦的硬碟c d e f盤和可以動的儲存裝置等。檔案系統是作業系統用於明確磁碟或分割槽上的檔案的方法和資料結構,即在磁碟上組織檔案的方法。也指用於儲存檔案的磁碟或分割槽,或檔案系統種類。...