報(bào)表是很多 web 應(yīng)用系統(tǒng)不可缺少的模塊,仍然是絕大多數(shù) BI 項(xiàng)目的基礎(chǔ)功能。隨著數(shù)據(jù)時(shí)代的到來(lái),數(shù)據(jù)來(lái)源越來(lái)越多樣 (text,excel,monogdb,redis,es…),為報(bào)表數(shù)據(jù)準(zhǔn)備帶來(lái)了挑戰(zhàn),傳統(tǒng)做法還是先將庫(kù)外數(shù)據(jù)到數(shù)據(jù)庫(kù)里,再利用數(shù)據(jù)庫(kù)的計(jì)算能力(寫 SQL 或存儲(chǔ)過(guò)程)為報(bào)表準(zhǔn)備數(shù)據(jù)。因依賴前置導(dǎo)入,報(bào)表實(shí)時(shí)性得不到保障,報(bào)表開(kāi)發(fā)流程也被拉長(zhǎng),隨著報(bào)表需求與日俱增,數(shù)據(jù)庫(kù)也越來(lái)越臃腫,管理成本不斷升高。
但如果直接使用這些庫(kù)外數(shù)據(jù)做報(bào)表開(kāi)發(fā),總是費(fèi)時(shí)費(fèi)力,最終完成的報(bào)表,性能往往也不夠好。究其原因,熟悉報(bào)表開(kāi)發(fā)的程序員都知道,報(bào)表工具內(nèi)只提供運(yùn)算這類庫(kù)外數(shù)據(jù)的幾種簡(jiǎn)單能力,當(dāng)計(jì)算需求復(fù)雜時(shí),需要擴(kuò)展到報(bào)表工具外部,用戶自定義方式去實(shí)現(xiàn),這類計(jì)算通常用高級(jí)語(yǔ)言 (Java,.net) 硬編碼實(shí)現(xiàn),需要很強(qiáng)的數(shù)據(jù)編程經(jīng)驗(yàn),經(jīng)常超過(guò)了普通報(bào)表開(kāi)發(fā)人員的能力范圍,用高級(jí)語(yǔ)言實(shí)現(xiàn)的開(kāi)發(fā)成本很高,并且不可復(fù)用。
即便數(shù)據(jù)在數(shù)據(jù)庫(kù)里,計(jì)算復(fù)雜報(bào)表經(jīng)常需要通過(guò)好用的高級(jí)窗口函數(shù)或存儲(chǔ)過(guò)程才能實(shí)現(xiàn),這些都是開(kāi)源數(shù)據(jù)庫(kù)(mysql,hive…)的短板,商業(yè)數(shù)據(jù)庫(kù)這方面要好很多,但實(shí)現(xiàn)起來(lái)也并不輕松,通常都需要用到 SQL 的高級(jí)擴(kuò)展,各數(shù)據(jù)庫(kù)廠商對(duì) SQL 擴(kuò)展都不盡相同,這就需要精通某種數(shù)據(jù)庫(kù)高手才能完成。熟悉各種數(shù)據(jù)庫(kù),進(jìn)階成 SQL 高手,并非易事,如何讓普通報(bào)表開(kāi)發(fā)人員,用相同的方式,輕松搞定這類問(wèn)題呢?另外,存儲(chǔ)過(guò)程和數(shù)據(jù)庫(kù)耦合在一起,大量使用會(huì)給數(shù)據(jù)庫(kù)運(yùn)行帶來(lái)巨大開(kāi)銷,維護(hù)也非常麻煩。
如果能有一種計(jì)算引擎,具有和數(shù)據(jù)庫(kù)相同的計(jì)算能力,不必導(dǎo)入數(shù)據(jù),直接計(jì)算各種來(lái)源的數(shù)據(jù),提供通用的高級(jí)窗口函數(shù)和存儲(chǔ)過(guò)程,獨(dú)立為報(bào)表準(zhǔn)備數(shù)據(jù),解決上述難題,將會(huì)極大提升報(bào)表的開(kāi)發(fā)進(jìn)度和應(yīng)用效果。
上述內(nèi)容就是集算器集成版的設(shè)計(jì)初衷,下面通過(guò)介紹其應(yīng)用結(jié)構(gòu),舉例說(shuō)明其易用性,結(jié)合開(kāi)源報(bào)表工具展示該產(chǎn)品在報(bào)表應(yīng)用場(chǎng)景下的實(shí)用價(jià)值。
聯(lián)系客服