天天看點

【資料蔣堂】報表應用的三層結構

【資料蔣堂】報表應用的三層結構

在傳統的報表應用結構中,報表工具一般都是與資料源直接連接配接,并沒有一個中間的資料計算層。确實,大部分情況下的報表開發并不需要這一層,相關的資料計算在資料源和呈現環節分别處理就夠了。不過,在開發過程中,我們發現,有一部分報表的計算既不适合在資料源也不适合在呈現環節實作,這類報表在數量上并不占多數,但耗用的開發工作量占比卻很大。

有過程的計算

報表工具都可以完成計算列、分組排序等運算,有些報表工具還提供了跨行組運算和相對格與集合的引用方案,可以完成頗為複雜的運算。

不過,報表工具中的運算是一種狀态式的計算,也就是把所有計算表達式寫在報表布局中,根據依賴關系自動處理計算次序。這種方法很直覺,在依賴關系不太複雜時能一目了然地了解各單元格的運算目标。但是,在依賴關系較為複雜,資料準備計算需要分成多步時,狀态式計算就困難了。如果一定要在報表中實施過程式計算,常常需要借用隐藏格,而隐藏格不僅将破壞狀态式運算的直覺性,還會占用更多不必要的記憶體。

比如要列出銷售額占前一半的大客戶,如果不借助資料準備環節,就要在報表中使用隐藏行列手段将不該列出來的條目隐藏,而不能直接過濾掉。再比如帶明細的分組報表要按彙總值排序,需要先分組後排序,許多報表工具無法控制這個次序。

還有個典型例子是舍位平衡,明細值四舍五入後再合計,可能會與合計值的四舍五入值不相等,會造成報表上明細與合計數值不一緻,需要根據合計的舍入值倒推明細的舍入值,這種計算的邏輯并不複雜,但即便用了隐藏格也難以由報表工具完成。

多樣性資料源

與多年前的單一資料源不同,現在有許多報表的資料源并不隻來源于關系資料庫,還可能是NoSQL資料庫、本地檔案、從WEB上傳來的資料等。這些非關系資料庫的資料源缺乏标準的資料擷取接口和文法,有些甚至沒有最基本的過濾能力。而計算報表時總還要進行一些過濾甚至關聯運算,雖然報表工具一般都能提供這些計算能力,但由于都是記憶體計算,隻适合于資料量較小的情況,資料量較大時就會導緻容量負擔過重。而且,大多數報表工具也不能很好地處理像json或XML這種多層資料,也沒有靈活編碼能力以登入遠端WEB服務擷取資料。

動态資料源也是常見的需求,報表工具使用的資料源一般是事先配置好的,不能根據參數動态選擇,直接使用報表工具無法實作。報表被用于通用查詢時,取數用的SQL不能簡單地用參數控制條件,而經常可能要替換某個子句,有些報表工具支援宏替換,能夠一定程度地解決這個問題,但根據參數計算宏值也是個有條件和過程的運算,直接在報表工具中很難完成。

性能優化問題

我們在往期的文章中曾談到過,大多數情況的報表性能問題都需要在資料準備階段來解決,其中有許多場景都不能在資料源内部處理。比如并行取數本來就是解決資料源IO性能問題,隻能在資料源外部實作;可控緩存需要在外存寫入緩存資訊,也不能在資料源内部處理;清單清單中的異步資料緩存和按頁取數的功能,都不是資料源本身提供的能力;即使可以在資料源環節處理的多資料集關聯問題,在多資料庫或非資料的場景、以及希望減輕資料庫負擔時,仍然需要在資料源外部解決。這些無法在資料源内部處理的場景,顯然也無法在報表環節處理。

資料計算層

如果把傳統報表應用結構的兩層改成三層,增加一個中間的資料計算層,這些問題就容易解決了。

【資料蔣堂】報表應用的三層結構

上述的各種運算都可以在資料計算層實作,報表工具隻解決呈現問題以及少量适合狀态式的直覺計算即可。

其實,傳統報表應用結構雖然沒有刻意強調資料計算層,但仍然有這一層,隻是比較隐蔽。典型的實作手段就是使用資料源中的存儲過程或者在應用中使用報表工具的自定義資料源接口。存儲過程能夠解決一些過程式計算和性能優化問題,但它隻能應用于單個資料庫中,相當于在資料源内部的處理,對于必須在資料源外處理的場景無能為力,有較大的局限性。自定義資料源則在理論上可以解決上述所有問題,而且幾乎所有報表工具都提供有這個接口,是以這種方式的應用更為廣泛。

那麼,使用報表工具的自定義資料源是否就可以友善地實作資料計算層呢?我們将在下一期讨論。

專欄作者簡介

蔣步星,潤乾軟體創始人、首席科學家

清華大學計算機碩士,著有《非線性報表模型原理》等,1989年,中國首個國際奧林匹克數學競賽團體冠軍成員,個人金牌;2000年,創立潤乾公司;2004年,首次在潤乾報表中提出非線性報表模型,完美解決了中國式複雜報表制表難題,目前該模型已經成為報表行業的标準;2014年,經過7年開發,潤乾軟體釋出不依賴關系代數模型的計算引擎——集算器,有效地提高了複雜結構化大資料計算的開發和運算效率;2015年,潤乾軟體被福布斯中文網站評為“2015福布斯中國非上市潛力企業100強”;2016年,榮獲中國電子資訊産業發展研究院評選的“2016年中國軟體和資訊服務業十大領軍人物”;2017年, 自主創新研發新一代的資料倉庫、雲資料庫等産品即将面世。

資料蔣堂

《資料蔣堂》的作者蔣步星,從事資訊系統建設和資料處理長達20多年的時間。他豐富的工程經驗與深厚的理論功底互相融合、創新思想與傳統觀念的互相碰撞,虛拟與現實的互相交織,産生出了一篇篇的瀝血之作。此連載的内容涉及從資料呈現、采集到加工計算再到存儲以及挖掘等各個方面。大可觀資料世界之遠景、小可看技術疑難之細節。針對資料領域一些技術難點,站在研發人員的角度從淺入深,進行全方位、360度無死角深度剖析;對于一些業内觀點,站在技術人員角度闡述自己的思考和了解。蔣步星還會對大資料的發展,站在業内專家角度給予預測和推斷。靜下心來認真研讀你會發現,《資料蔣堂》的文章,有的會讓使用者避免重複前人走過的彎路,有的會讓攻城獅面對紮心的難題茅塞頓開,有的會為初入行業的讀者提供一把開啟資料世界的鑰匙,有的甚至會讓業内專家大跌眼鏡,産生思想交鋒。

原文釋出時間為:2017-06-03

本文作者:蔣步星

本文來自雲栖社群合作夥伴“資料派THU”,了解相關資訊可以關注“資料派THU”微信公衆号