報表數(shù)據(jù)的可控緩存是怎樣的,針對這個問題,這篇文章詳細介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
成都創(chuàng)新互聯(lián)長期為上千客戶提供的網(wǎng)站建設(shè)服務(wù),團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為文峰企業(yè)提供專業(yè)的網(wǎng)站建設(shè)、網(wǎng)站設(shè)計,文峰網(wǎng)站改版等技術(shù)服務(wù)。擁有10多年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
使用緩存可以提升報表性能是一個共識,一般高端報表工具都會提供報表緩存功能,將整個報表計算結(jié)果緩存在文件系統(tǒng)中,以便用戶下次訪問參數(shù)相同的報表時可以快速讀取緩存結(jié)果進行展現(xiàn)。潤乾報表作為報表工具的領(lǐng)軍品牌,當(dāng)然也具有這種常規(guī)的緩存功能。
但在有些情況下,報表開發(fā)人員還希望進一步控制緩存的內(nèi)容,比如對于緩存內(nèi)容,可能只想緩存一部分而不是整個報表結(jié)果,或者能夠讓其它報表或程序復(fù)用緩存內(nèi)容,又比如對于超時設(shè)置,可能希望為不同的緩存結(jié)果設(shè)置不同的超時時間。這些需求都來自于實際業(yè)務(wù)中需要應(yīng)對的數(shù)據(jù)量和實時性方面的不同情況,也是一般報表工具的緩存功能無法滿足的。
潤乾報表內(nèi)置了可編程的數(shù)據(jù)計算引擎(結(jié)合集算器實現(xiàn)),允許開發(fā)人員靈活控制緩存內(nèi)容,稱為可控緩存??煽鼐彺婺軌驇砀蟮撵`活性,下面就前面提到的三點展開介紹。
1、緩存部分結(jié)果
在報表開發(fā)中,有時并不希望將所有報表結(jié)果進行緩存,避免耗費過高的緩存成本(磁盤空間和應(yīng)用服務(wù)器資源開銷)。另外,當(dāng)報表中的部分數(shù)據(jù)實時性要求很高,需要實時與數(shù)據(jù)庫交互進行數(shù)據(jù)查詢,那么就并不適合進行緩存。這種情況下,通過潤乾報表的可控緩存可以將變化不太頻繁的中間結(jié)果緩存起來。當(dāng)報表再次請求時,實時性要求高的數(shù)據(jù)仍然從數(shù)據(jù)庫中讀取,同時結(jié)合緩存中的非實時數(shù)據(jù)進行報表計算,得到最終報表結(jié)果集。常規(guī)緩存方案中沒有這種緩存部分結(jié)果的功能,只能設(shè)置整個報表是否進行緩存,這樣報表在涉及數(shù)據(jù)的不同時效性時就必須平衡兩者的矛盾,而潤乾報表在這方面顯然更加靈活,效率更高。
2、緩存結(jié)果復(fù)用
潤乾報表中可控緩存是可以復(fù)用的,一個報表的緩存結(jié)果(部分或全部)可以被其他報表或程序讀取并使用,而不必像常規(guī)報表緩存方案那樣重復(fù)緩存同樣的結(jié)果,這顯然也會大幅度提高緩存的整體效率。當(dāng)其他報表或程序使用某個報表的緩存結(jié)果時,只需從緩存(一般是磁盤文件)中讀取,并與報表中其他數(shù)據(jù)來源(可能是 DB、文件,或是另一個報表的緩存)進行混合運算,就能得到報表需要的結(jié)果集,處理方式和緩存部分結(jié)果的方式類似。常規(guī)的報表緩存以報表模板為單位進行緩存,彼此無法復(fù)用,會造成相當(dāng)?shù)馁Y源浪費,增加不小的性能開銷,而潤乾報表在這方面同樣體現(xiàn)了靈活和高效。
3、設(shè)置不同超時時間
緩存機制中一定會有超時時間,過時的緩存會被清除,報表再訪問時再重新緩存。一般報表工具的緩存超時時間在配置文件中設(shè)置,如通常的 3600s 或 7200s,這種設(shè)置往往作用于對單張報表的所有參數(shù),有時甚至作用于所有報表。換句話說,整個報表甚至整個系統(tǒng)都必須使用同樣的設(shè)置。
這種做法顯然性能不高,如果能夠針對不同的報表場景設(shè)置不同的超時時間,自然會更有效。比如,針對大量歷史數(shù)據(jù)進行查詢的報表,由于歷史數(shù)據(jù)一般很少變化,我們希望報表的緩存結(jié)果可以保存較長時間,相應(yīng)地設(shè)置較長的超時時間;而針對數(shù)據(jù)變化頻繁,實時性要求較高的報表則設(shè)置較短的超時時間,以便滿足數(shù)據(jù)的實時性要求。
潤乾報表的結(jié)果緩存允許開發(fā)人員針對不同的報表設(shè)置不同的超時時間,以應(yīng)對不同的報表場景。這種做法同樣提供了更高的靈活性,使得報表緩存成為真正意義上的可控。
舉例
可控緩存的具體實現(xiàn)可以參考潤乾報表的相關(guān)文檔資料,這里只是通過一個簡單的例子說明一下結(jié)果緩存的使用方法:
首先使用潤乾報表內(nèi)置的集算器編寫腳本生成和讀取緩存文件,這個過程處于報表數(shù)據(jù)源的計算階段。
A | B | C | |
---|---|---|---|
1 | E:\work\esProc\ | / 緩存目錄 | |
2 | =“sales_”+string(d_date) | / 緩存文件名,報表名 + 參數(shù) (dfxName_ParamName) | |
3 | =file(A1+A2) | ||
4 | if A3.exists()&& interval@s(A3.date(),now())<3600 | result A3.import@b() | end |
5 | =connect(“demo”) | ||
6 | =A5.cursor(“SELECT 客戶 ID,sum( 單價 * 數(shù)量) 訂單總額 FROM 訂單, 訂單明細 WHERE 訂單. 訂單 ID= 訂單明細. 訂單 ID and year(訂購日期)>? group by 客戶 ID order by 訂單總額 desc”,d_date) | ||
7 | =A6.fetch(5) | >A5.close() | |
8 | =A3.export@b(A7) | / 生成緩存文件 | |
9 | return A7 | / 為報表返回結(jié)果集 |
上述腳本首先指定緩存目錄,并根據(jù)參數(shù)設(shè)置緩存文件名稱,再根據(jù)文件名查找緩存文件是否存在(A4)。若存在且未超時則直接讀緩存,否則直接連接數(shù)據(jù)庫取數(shù)運算,并將計算結(jié)果生成緩存文件。
對比一下,如果報表中不使用緩存,那么腳本只需要這樣編寫:
A | B | |
---|---|---|
1 | =connect(“demo”) | |
2 | =A1.cursor(“SELECT 客戶 ID,sum( 單價 * 數(shù)量) 訂單總額 FROM 訂單, 訂單明細 WHERE 訂單. 訂單 ID= 訂單明細. 訂單 ID and year(訂購日期)>? group by 客戶 ID order by 訂單總額 desc”,d_date) | |
3 | =A2.fetch(5) | >A1.close() |
4 | return A3 |
然后,只需要在潤乾報表中調(diào)用上述集算腳本,編輯報表表達式就可以完成報表制作了。
需要注意的是,潤乾報表的可控緩存也有其適用場景,并不能完全取代常規(guī)緩存。常規(guī)緩存手段會連同報表計算結(jié)果以及呈現(xiàn)屬性一起保存,而這里的可控緩存只緩存數(shù)據(jù),在呈現(xiàn)時還要再次進行外觀計算,因此更適用于數(shù)據(jù)計算強度較高,外觀計算強度較低的場景。實際應(yīng)用中,兩者可以結(jié)合使用。
關(guān)于報表數(shù)據(jù)的可控緩存是怎樣的問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識。
網(wǎng)站標(biāo)題:報表數(shù)據(jù)的可控緩存是怎樣的
轉(zhuǎn)載注明:http://sd-ha.com/article4/ghdgie.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站、自適應(yīng)網(wǎng)站、標(biāo)簽優(yōu)化、軟件開發(fā)、網(wǎng)站營銷、App開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)