一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

基于文件系統(tǒng)實(shí)現(xiàn)可追加的數(shù)據(jù)集市

 raqsoft 2018-11-29

一 問(wèn)題背景

絕大多數(shù)的應(yīng)用系統(tǒng)中,一開始數(shù)據(jù)的存儲(chǔ)和計(jì)算基本都是由數(shù)據(jù)庫(kù)來(lái)完成的,同時(shí)服務(wù)于業(yè)務(wù)交易和報(bào)表查詢;不過(guò)在經(jīng)過(guò)幾年信息化建設(shè)和數(shù)據(jù)積累后,常常都會(huì)遇到數(shù)據(jù)庫(kù)壓力變大,從而導(dǎo)致性能瓶頸的問(wèn)題。

究其原因,往往發(fā)現(xiàn)針對(duì)歷史數(shù)據(jù)查詢的報(bào)表在其中占了很大比重。進(jìn)一步分析會(huì)發(fā)現(xiàn),這類報(bào)表通常都有如下特征:

1、數(shù)據(jù)變化小:供查詢的歷史數(shù)據(jù)幾乎不再發(fā)生變化;

2、數(shù)據(jù)量大:數(shù)據(jù)量隨時(shí)間不斷增加;

由于大多數(shù)數(shù)據(jù)庫(kù)的JDBC性能都很低下(JDBC取數(shù)過(guò)程要做數(shù)據(jù)對(duì)象轉(zhuǎn)換,比從文件中讀取數(shù)據(jù)會(huì)慢一個(gè)數(shù)量級(jí)),如果數(shù)據(jù)始終存放在數(shù)據(jù)庫(kù)中,當(dāng)涉及數(shù)據(jù)量較大或并發(fā)較多的時(shí)候,報(bào)表的性能會(huì)急劇下降,進(jìn)一步還會(huì)嚴(yán)重影響相關(guān)的業(yè)務(wù)操作,如市場(chǎng)營(yíng)銷、數(shù)據(jù)整理再匯報(bào)等。

針對(duì)這一問(wèn)題,常見的解決方案是在生產(chǎn)庫(kù)和應(yīng)用之間再增加一個(gè)前置數(shù)據(jù)庫(kù),利用ETL工具定時(shí)從生產(chǎn)庫(kù)中提取數(shù)據(jù),清洗后再導(dǎo)入到前置數(shù)據(jù)庫(kù)中,所有的歷史報(bào)表查詢都基于前置數(shù)據(jù)庫(kù),從而和生產(chǎn)庫(kù)分離,緩解生產(chǎn)庫(kù)壓力。

不過(guò)這種方案增加了很多不必要的成本、多余的組件和工作量,同時(shí)也加大了后期的管理和維護(hù)難度;更為重要的是,當(dāng)數(shù)據(jù)量比較大時(shí),報(bào)表查詢還是很慢,因?yàn)樯厦嬉呀?jīng)提到過(guò)的根本問(wèn)題并沒(méi)有得到解決,大多數(shù)數(shù)據(jù)庫(kù)的IO性能遠(yuǎn)低于文件系統(tǒng),而報(bào)表性能又嚴(yán)重依賴于數(shù)據(jù)庫(kù)取數(shù)環(huán)節(jié),也就是說(shuō),沒(méi)能從根子上解決問(wèn)題。

二 解決思路

要從根子上解決問(wèn)題,我們可以假設(shè)如果文件擁有計(jì)算能力的話,將這些變化不大的歷史數(shù)據(jù)搬出數(shù)據(jù)庫(kù),采用文件系統(tǒng)存儲(chǔ),而不是前置數(shù)據(jù)庫(kù),那么將可能獲得比數(shù)據(jù)庫(kù)高得多的IO性能,這樣不僅能夠解決大數(shù)據(jù)量報(bào)表查詢慢的難題,我們還將獲得如下這些好處:

1、管理方便;文件天然支持多級(jí)目錄,而且復(fù)制、轉(zhuǎn)移、拆分都比數(shù)據(jù)庫(kù)簡(jiǎn)單、高效得多,這樣,用戶就可以按照業(yè)務(wù)模塊、時(shí)間順序等規(guī)則分類管理數(shù)據(jù),在應(yīng)用程序下線時(shí),也可以按照目錄刪除該應(yīng)用對(duì)應(yīng)的數(shù)據(jù)。數(shù)據(jù)管理因此變得簡(jiǎn)單清晰,工作量顯著降低。

2、成本低廉;既然是文件,那就可以簡(jiǎn)單地存儲(chǔ)在廉價(jià)硬盤中,無(wú)需購(gòu)買昂貴的數(shù)據(jù)庫(kù)專用軟硬件。

3、降低數(shù)據(jù)庫(kù)擴(kuò)容壓力;數(shù)據(jù)庫(kù)吞吐負(fù)擔(dān)降低,就可以顯著推遲擴(kuò)容臨界點(diǎn)的到來(lái),數(shù)據(jù)庫(kù)可以繼續(xù)服役,也可以節(jié)省大量的擴(kuò)容成本。

4、資源利用率高;用文件來(lái)存儲(chǔ)數(shù)據(jù)并非要拋棄數(shù)據(jù)庫(kù),相反的,文件應(yīng)當(dāng)只存儲(chǔ)安全要求不高、但數(shù)據(jù)量巨大的外圍數(shù)據(jù)以及庫(kù)外文件,而數(shù)據(jù)庫(kù)仍然存儲(chǔ)核心數(shù)據(jù)。如此一來(lái),文件存儲(chǔ)和數(shù)據(jù)庫(kù)存儲(chǔ)各司其職,資源利用率顯著提高。

那么,如何才能有效地為文件賦予計(jì)算能力呢?下面將要介紹的潤(rùn)乾集算器,就是這樣一款利器,通過(guò)集算器,可以實(shí)現(xiàn)復(fù)雜計(jì)算與報(bào)表展現(xiàn)的分離,其內(nèi)置的集算引擎可以使文件擁有計(jì)算能力,輕松應(yīng)對(duì)各種疑難雜癥。下圖顯示了常規(guī)情況和引入集算器后的報(bào)表系統(tǒng)結(jié)構(gòu)對(duì)比,應(yīng)該說(shuō),引入集算器后,整個(gè)體系架構(gòu)變得更加清新與合理了:

undefined

三 場(chǎng)景說(shuō)明

接下來(lái),我們通過(guò)一個(gè)典型的場(chǎng)景來(lái)說(shuō)明集算器的作用和用法:

A表“商品銷售明細(xì)”的數(shù)據(jù)量上億,其中字段areaid與B表“區(qū)域表”的主鍵id關(guān)聯(lián)。A表稱為事實(shí)表,B表稱為維表。A表中與B表主鍵關(guān)聯(lián)的字段稱為A指向B的外鍵,B也稱為A的外鍵表。外鍵表是多對(duì)一的關(guān)系。如下圖示:

undefined

下面,我們就通過(guò)制作“各區(qū)域銷售員每日銷售額日增長(zhǎng)率報(bào)表”,來(lái)看一下集算器是如何利用文件實(shí)現(xiàn)數(shù)據(jù)外置,從而提升報(bào)表查詢效率的。報(bào)表最終的展示效果如下圖:

undefined

在這張報(bào)表中,根據(jù)選擇開始日期、結(jié)束日期進(jìn)行查詢,報(bào)表先按照區(qū)域名稱、銷售員代碼、銷售日進(jìn)行分組,統(tǒng)計(jì)每個(gè)銷售員每天的銷售額,以及每個(gè)銷售員每天銷售額的日增長(zhǎng)率(算法為“(當(dāng)日銷售額-上一日的銷售額)/上一日的銷售額”)。報(bào)表上部的查詢按鈕是報(bào)表工具提供的“參數(shù)模板”功能,具體做法參見教程,這里不再贅述。

3.1設(shè)計(jì)數(shù)據(jù)存儲(chǔ)組織

在利用文件系統(tǒng)存儲(chǔ)數(shù)據(jù)的諸多優(yōu)勢(shì)之前,我們首先應(yīng)該先定義文件的目錄存儲(chǔ)結(jié)構(gòu):

歷史數(shù)據(jù)的特征是交易成型后數(shù)據(jù)落地不再變化,而且數(shù)據(jù)量龐大,由此我們可以將每年的數(shù)據(jù)按照業(yè)務(wù)模塊、月份等規(guī)則進(jìn)行劃分,即每個(gè)月份的數(shù)據(jù)存一份集文件(集文件利用集算器提供的壓縮格式,具有更好IO性能)。目錄結(jié)構(gòu)就是:/業(yè)務(wù)模塊/數(shù)據(jù)明細(xì)表/年月文件名,如下圖所示:

undefined

同時(shí),我們還需要設(shè)定每天凌晨時(shí)段定時(shí)執(zhí)行數(shù)據(jù)同步腳本,把前一天的數(shù)據(jù)追加到當(dāng)月集文件中;而在每月1號(hào),腳本還會(huì)根據(jù)規(guī)則自動(dòng)生成一個(gè)新的以年月命名的集文件。

3.2同步數(shù)據(jù)

3.2.1同步歷史數(shù)據(jù)到文件

先把2017年1到10月的歷史數(shù)據(jù)按不同月份搬出來(lái)(假定已有10個(gè)月的歷史數(shù)據(jù)),集算器的SPL腳本如下:

 
 A1:連接數(shù)據(jù)庫(kù)

A2:生成由10個(gè)SQL組成的集合,每個(gè)SQL分別查詢當(dāng)月(1到10)范圍內(nèi)的數(shù)據(jù)。寫法上,“10.”表示從1循環(huán)到10,在括號(hào)內(nèi)的字符串中用相應(yīng)的1到10替換 ~符號(hào)。

A3:按照A2中的序列循環(huán)執(zhí)行

B3:按路徑打開每月數(shù)據(jù)的集文件,路徑命名規(guī)則是4位年和2位月,利用string()函數(shù)進(jìn)行格式化,其中#號(hào)代表循環(huán)序號(hào)

B4:根據(jù)每段sql創(chuàng)建數(shù)據(jù)庫(kù)游標(biāo)

C4:將游標(biāo)執(zhí)行計(jì)算后的結(jié)果寫入到集文件中。其中export()函數(shù)使用了@ab的選項(xiàng),@b代表寫成集文件格式,而由于在for循環(huán)里面,需要執(zhí)行多次,所以用@a指明追加方式,把結(jié)果逐步保存到文件中,保證文件的完整性。循環(huán)生成完之后,文件的存儲(chǔ)目錄結(jié)構(gòu)如下圖:

undefined

A5:關(guān)閉數(shù)據(jù)庫(kù)連接

3.2.2同步昨天數(shù)據(jù)到文件

編寫單次執(zhí)行腳本,獲取昨天的歷史數(shù)據(jù)追加到當(dāng)月集文件中,每天執(zhí)行,當(dāng)下月1號(hào)時(shí),會(huì)自動(dòng)生成新文件,腳本如下:

 
 

A1:根據(jù)當(dāng)前系統(tǒng)時(shí)間,獲取昨天的日期

B1-C1:分別獲取到年、月

A2:按路徑打開需要導(dǎo)出的集文件,路徑規(guī)則是以4位年2位月命名,利用string()函數(shù)進(jìn)行格式化

A3:連接數(shù)據(jù)庫(kù)

B3:根據(jù)sql創(chuàng)建數(shù)據(jù)庫(kù)游標(biāo),獲取昨日數(shù)據(jù),參數(shù)為昨天日期

C3:執(zhí)行結(jié)果追加寫入到集文件中

A4:關(guān)閉數(shù)據(jù)庫(kù)

3.3日志追溯

在上面的步驟中,已經(jīng)可以同步昨天的歷史數(shù)據(jù)到集文件中;但總是有意外情況發(fā)生,假如歷史數(shù)據(jù)沒(méi)有同步成功怎么辦呢?我們是不是可以通過(guò)記錄日志信息的方式,追溯歷史原因?這樣能夠及時(shí)發(fā)現(xiàn)問(wèn)題,及時(shí)采取補(bǔ)救措施;比如:很小概率下腳本可能會(huì)執(zhí)行失敗,這時(shí)如果及時(shí)發(fā)現(xiàn),就可以先手動(dòng)執(zhí)行腳本重新生成集文件,然后再排查原因,從而避免影響業(yè)務(wù)查詢。(由于集文件目前不支持回滾動(dòng)作,一旦導(dǎo)出出錯(cuò),需要重新導(dǎo)出數(shù)據(jù)生成當(dāng)月集文件。集算器高版本的組表支持回滾,以后會(huì)有專門的文章詳細(xì)介紹)。

3.3.1構(gòu)造日志表

第一步,可以先在數(shù)據(jù)庫(kù)中定義一張日志表,包含五個(gè)字段(事件名稱/狀態(tài)/異常信息/執(zhí)行時(shí)間/執(zhí)行時(shí)長(zhǎng)),數(shù)據(jù)結(jié)構(gòu)如下圖示:

undefined

第二步,在集算器腳本中定義4個(gè)參數(shù)名,分別是事件名稱/狀態(tài)/異常信息/執(zhí)行時(shí)長(zhǎng),參數(shù)定義如下圖所示:

undefined

第三步,當(dāng)集算器腳本接收來(lái)自外界參數(shù)信息時(shí),將參數(shù)值填寫到日志表中:

 
 

A1:連接數(shù)據(jù)庫(kù)

A2:接收來(lái)自外界傳入的參數(shù)值后,向數(shù)據(jù)庫(kù)的日志表中執(zhí)行SQL插入語(yǔ)句,包含五個(gè)字段(事件名稱/狀態(tài)/異常信息/執(zhí)行時(shí)間/執(zhí)行時(shí)長(zhǎng)),其中now()函數(shù)代表獲取當(dāng)期時(shí)間

A3:關(guān)閉數(shù)據(jù)庫(kù)

3.3.2設(shè)定日志規(guī)則

我們將判斷同步操作是否成功的規(guī)則設(shè)定為:當(dāng)每天定時(shí)導(dǎo)出到集文件的數(shù)據(jù)條數(shù)與查詢出來(lái)需要同步數(shù)據(jù)的總條數(shù)相差小于5條的時(shí)候,我們認(rèn)為同步動(dòng)作是成功的,否則認(rèn)定同步失敗,然后把關(guān)鍵信息寫入到日志表中。按此規(guī)則改造同步數(shù)據(jù)的集算器腳本如下:

 
 前面已經(jīng)解釋過(guò)的格子的代碼這里不再贅述。

B2:獲取當(dāng)前系統(tǒng)時(shí)間,用于后面計(jì)算導(dǎo)出操作的執(zhí)行時(shí)長(zhǎng)

C2:統(tǒng)計(jì)寫入前集文件的記錄數(shù)

A4:執(zhí)行sql查詢需要同步的昨天的數(shù)據(jù)總條數(shù)

B4:當(dāng)數(shù)據(jù)追加寫入到集文件后,再統(tǒng)計(jì)一遍記錄數(shù),同時(shí)減去寫入前的數(shù)量,得到實(shí)際寫入成功的記錄條數(shù)

C4:計(jì)算整個(gè)同步過(guò)程的執(zhí)行時(shí)長(zhǎng),其中interval()函數(shù)通過(guò)選項(xiàng)@ms指定返回毫秒數(shù)

A5:判斷數(shù)據(jù)庫(kù)中需要同步數(shù)據(jù)的總條數(shù)與導(dǎo)出到集文件的數(shù)據(jù)總條數(shù),兩者之差小于5條時(shí),認(rèn)為任務(wù)是執(zhí)行成功的,在日志表中寫入成功記錄,否則認(rèn)定任務(wù)執(zhí)行失敗,在日志表中寫入失敗記錄。

B5-B6:根據(jù)執(zhí)行成功或失敗的判斷,log.dfx網(wǎng)格文件,在日志表中寫入相應(yīng)的記錄。

A7:關(guān)閉數(shù)據(jù)庫(kù)

3.3.3查詢?nèi)罩緢?bào)表

為了方便管理,我們還可以通過(guò)報(bào)表工具,做一張關(guān)于日志信息的查詢報(bào)表,這樣就能通過(guò)web端及時(shí)發(fā)現(xiàn)問(wèn)題、解決問(wèn)題,效果如下:

undefined

3.4定時(shí)任務(wù)

3.4.1利用 Quartz

Quartz 是 OpenSymphony開源組織在Job scheduling領(lǐng)域的一個(gè)開源組件,利用Quartz可以簡(jiǎn)便地創(chuàng)建定時(shí)執(zhí)行任務(wù),而集算器原本就是獨(dú)立的計(jì)算引擎,兩者結(jié)合起來(lái),再提供一些可視化的配置和管理頁(yè)面,就能比較容易的實(shí)現(xiàn)輕量級(jí)ETL的功能。如下圖所示:

undefined

3.4.2使用操作系統(tǒng)工具創(chuàng)建計(jì)劃任務(wù)

windows操作系統(tǒng)下,可以利用自帶的任務(wù)計(jì)劃程序?qū)崿F(xiàn)定時(shí)任務(wù),比如可以先新建一個(gè)bat文件,寫入需要執(zhí)行的命令:

@echo off

"D:/esProc/bin/esprocx.exe" C:/20180713/synclastday.dfx

再配置一個(gè)計(jì)劃任務(wù)定時(shí)執(zhí)行即可,如下圖所示:

undefined

 

而在Linux操作系統(tǒng)下,可以借助crontab實(shí)現(xiàn)定時(shí)任務(wù),命令如下:   /raqsoft/esProc/bin/esprocx.sh /esproc/synclastday.dfx

3.5數(shù)據(jù)查詢

前面是一個(gè)比較完整 ETL 數(shù)據(jù)準(zhǔn)備過(guò)程,下面我們將在這些準(zhǔn)備工作的基礎(chǔ)上,完成“各區(qū)域銷售員每日銷售額日增長(zhǎng)率報(bào)表”的制作,通過(guò)集算器利用文件實(shí)現(xiàn)數(shù)據(jù)外置,從而提升報(bào)表查詢效率。

3.5.1查詢一個(gè)月內(nèi)數(shù)據(jù)

我們先通過(guò)傳入開始日期、結(jié)束日期,只查詢一個(gè)月內(nèi)的數(shù)據(jù),也就是訪問(wèn)某個(gè)月的集文件即可。(值得一提的是:集算器不僅能夠降低復(fù)雜業(yè)務(wù)運(yùn)算的實(shí)現(xiàn)難度,同時(shí),對(duì)于單文件的運(yùn)算還提供了“簡(jiǎn)單SQL”方式,讓懂SQL的用戶對(duì)文件的操作更容易上手。簡(jiǎn)單SQL的特性不是本文的重點(diǎn),有興趣的讀者可以參考相關(guān)文檔,這里不再贅述。)

第一步,分組匯總;根據(jù)起止日期過(guò)濾后,按照區(qū)域ID、銷售、日期分組,并匯總銷售金額(銷售數(shù)量*單價(jià)),同時(shí)區(qū)域ID,需要顯示成區(qū)域名稱。編寫集算器腳本如下:

 
 A1:連接數(shù)據(jù)庫(kù)

A2:通過(guò)SQL查詢外鍵表area,共兩個(gè)字段id,city,其中函數(shù)query()使用了@x選項(xiàng),代表查詢結(jié)束時(shí)自動(dòng)關(guān)閉數(shù)據(jù)庫(kù)連接,執(zhí)行結(jié)果如下圖:

undefined

A3:打開集文件對(duì)象,根據(jù)文件創(chuàng)建游標(biāo)返回,其中cursor()函數(shù)使用@b選項(xiàng)代表從集文件中讀取。我們事先在腳本設(shè)置中定義了2個(gè)參數(shù),開始日期、結(jié)束日期,如下圖:

undefined

這里根據(jù)傳入的開始日期參數(shù)Bfiledate,就能夠準(zhǔn)確的找到指定的集文件對(duì)象,比如:當(dāng)Bfiledate的參數(shù)值為2017-09-01時(shí),分別獲取年、月,拼在一起就是集文件的名稱,全路徑為:D:/進(jìn)銷存/商品銷售明細(xì)/201709

A4:通過(guò)起止日期過(guò)濾出符合條件的記錄

A5:通過(guò)switch()函數(shù)在A4表的areaid字段上建立指向A2表中id字段的指針引用記錄,實(shí)現(xiàn)關(guān)聯(lián),如下圖:

undefined

A6:按區(qū)域ID、銷售、日期分組,并匯總銷售金額(銷售數(shù)量*單價(jià))

undefined

A7:計(jì)算字段值,生成新序表;其中利用A5建立的關(guān)聯(lián)關(guān)系通過(guò)“外鍵字段.維表字段”的方式進(jìn)行引用,用 “areaid.city”生成新的字段areaname,(將維表記錄看做外鍵的的屬性,這便是外鍵屬性化的由來(lái)),返回關(guān)聯(lián)后的結(jié)果集如下圖:

undefined

 

第二步,計(jì)算銷售日增長(zhǎng)率;在第一步的基礎(chǔ)上,計(jì)算出每個(gè)區(qū)域下每個(gè)銷售員每天銷售額的日增長(zhǎng)率; 修改后的腳本如下:

 
 前面已經(jīng)解釋過(guò)的格子代碼這里不再贅述。

A6:按區(qū)域ID、銷售、日期分組,并匯總銷售金額(銷售數(shù)量*單價(jià)),同時(shí)構(gòu)造一個(gè)空的列叫rate,結(jié)果如下圖:

undefined

   A7:在A6分組后的基礎(chǔ)上,針對(duì)每一行記錄,判斷相鄰行的areaid、account是否相等,相等的情況下,計(jì)算銷售員每天的銷售額的日增長(zhǎng)率,算法為“(當(dāng)日銷售額-上一日的銷售額)/上一日的銷售額”??梢钥吹剑闫饔胹ubtotal[-1]來(lái)表示上一日的銷售額,可以輕松進(jìn)行相對(duì)位置的計(jì)算。

undefined

A8:返回關(guān)聯(lián)后結(jié)果集如下圖:

undefined

A9:返回結(jié)果集給報(bào)表工具

3.5.2查詢跨月 / 跨年數(shù)據(jù)

上一步已經(jīng)實(shí)現(xiàn)了計(jì)算每個(gè)銷售員銷售額的日增長(zhǎng)率,不過(guò)只能在一個(gè)集文件中查詢,也就是只能查詢一個(gè)月的數(shù)據(jù)。那如何跨多個(gè)集文件,從而實(shí)現(xiàn)跨月、跨年,適用于大數(shù)據(jù)量的報(bào)表查詢呢?

首先,我們需要寫一個(gè)工具腳本,主要功能是能夠根據(jù)傳入的開始日期、結(jié)束日期,過(guò)濾出需要查詢跨月度范圍的多個(gè)集文件路徑,同時(shí)判斷路徑下的集文件對(duì)象是否存在。腳本如下:

  
 腳本接收3個(gè)參數(shù),起止日期,集文件的存儲(chǔ)路徑,如下圖:

 

undefined

   A1:根據(jù)起止日期,按月間隔獲取日期,其中periods()函數(shù)的選項(xiàng)@m代表按月間隔計(jì)算,比如,開始日期:2017-01-03,結(jié)束日期:2017-11-23,執(zhí)行結(jié)果如下圖:

undefined

   A2:循環(huán)A1,通過(guò)集文件的存儲(chǔ)路徑與該日期段內(nèi)的年月進(jìn)行拼接。月份要始終保持兩位,利用string()函數(shù)進(jìn)行格式化,結(jié)果如下圖:

undefined

A3:去重,執(zhí)行結(jié)果如下圖:

undefined

A4:判斷路徑下的文件是否真實(shí)存在,由A5返回實(shí)際存在的文件路徑,結(jié)果如下圖:

undefined

然后,我們需要對(duì)上面數(shù)據(jù)查詢的腳本做一些改造,值得注意的是這里將采用多路游標(biāo)的概念,將多個(gè)游標(biāo)合并成一個(gè)游標(biāo)使用,改造后的腳本如下:

 
 前面已經(jīng)解釋過(guò)的格子代碼這里不再贅述。

A3:調(diào)用”判斷讀取文件的范圍.dfx”,傳入腳本參數(shù)開始日期、結(jié)束日期的值,獲得起止日期內(nèi)的所有集文件的集合

A4-C4:循環(huán)A3,分別打開每個(gè)集文件對(duì)象,根據(jù)文件創(chuàng)建游標(biāo),其中cursor()函數(shù)使用@b選項(xiàng)代表從集文件中讀取。

D4:將多個(gè)游標(biāo)對(duì)象保存到B1預(yù)留的序列中

A5:利用集算器提供的多路游標(biāo)概念,把數(shù)據(jù)結(jié)構(gòu)相同的多個(gè)游標(biāo)合并成一個(gè)游標(biāo)使用。使用時(shí),多路游標(biāo)采用并行計(jì)算來(lái)處理各個(gè)游標(biāo)的數(shù)據(jù),可以通過(guò)設(shè)置cs.mcursor(n) 函數(shù)中的n來(lái)決定并行數(shù),當(dāng)n空缺時(shí),將按默認(rèn)自動(dòng)設(shè)置并行數(shù)。

A11:最后返回結(jié)果集給報(bào)表工具使用,而結(jié)果集的計(jì)算過(guò)程A6到A10與前面一個(gè)集文件時(shí)完全一樣。

3.6作為報(bào)表數(shù)據(jù)源

利用集算器完成了數(shù)據(jù)查詢工作后,可以在報(bào)表中直接將集算器設(shè)置為數(shù)據(jù)源,和使用數(shù)據(jù)庫(kù)一樣簡(jiǎn)單地完成報(bào)表呈現(xiàn),具體做法包括:

1、在報(bào)表中定義參數(shù)(Bfiledate、Efiledate),

2、設(shè)置集算器數(shù)據(jù)集,并傳遞報(bào)表參數(shù),

3、設(shè)計(jì)報(bào)表表樣

如下圖所示。隨后,輸入?yún)?shù)計(jì)算,即可得到希望的報(bào)表了。

undefined

如果再結(jié)合文章<<秒級(jí)展現(xiàn)的百萬(wàn)級(jí)大清單報(bào)表怎么做>>,那么基本上就可以輕松應(yīng)對(duì)項(xiàng)目中遇到的各類大數(shù)據(jù)集報(bào)表、大清單列表了。

3.7總結(jié)

1、簡(jiǎn)易版、輕量級(jí)ETL

集算器是獨(dú)立的計(jì)算引擎,搭配上定時(shí)執(zhí)行程序,很容易就能實(shí)現(xiàn)簡(jiǎn)單、輕量級(jí)的ETL功能。

2、高性價(jià)比、高性能

無(wú)需構(gòu)建數(shù)倉(cāng),很好的解決關(guān)系型數(shù)據(jù)庫(kù)中數(shù)據(jù)量大而導(dǎo)致的報(bào)表慢的難題。

3、不影響原有系統(tǒng)構(gòu)架、實(shí)現(xiàn)簡(jiǎn)單、易維護(hù)

使用潤(rùn)乾集算器的集文件存儲(chǔ)大表數(shù)據(jù),獨(dú)立于原有系統(tǒng)構(gòu)架,將原有數(shù)據(jù)水平切割,顯著提高查詢效率,不影響業(yè)務(wù)操作。

4、降低應(yīng)用耦合度

集算器腳本、集文件、報(bào)表模板等可以隨應(yīng)用一起管理和維護(hù),完全和數(shù)據(jù)庫(kù)解耦合,數(shù)據(jù)管理因此變得簡(jiǎn)單清晰。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    一区二区三区四区亚洲另类| 国产传媒精品视频一区| 成人精品视频在线观看不卡| 亚洲一区精品二人人爽久久| 日韩性生活视频免费在线观看 | 午夜精品久久久免费视频| 狠狠干狠狠操在线播放| 久久国产亚洲精品成人| 亚洲国产av在线视频| 国产乱久久亚洲国产精品| 成人日韩视频中文字幕| 久久一区内射污污内射亚洲| 日本深夜福利视频在线| 欧美国产日本免费不卡| 午夜视频成人在线观看| 国产二级一级内射视频播放| 亚洲专区中文字幕视频| 亚洲永久一区二区三区在线| 欧美成人精品国产成人综合| 日韩人妻有码一区二区| 黄片在线免费看日韩欧美| 偷拍洗澡一区二区三区| 国产午夜福利不卡片在线观看| 日韩美女偷拍视频久久| 欧美亚洲美女资源国产| 久久综合亚洲精品蜜桃| 婷婷亚洲综合五月天麻豆| 日韩高清毛片免费观看| 中文字幕欧美视频二区| 字幕日本欧美一区二区| 激情少妇一区二区三区| 欧美黑人精品一区二区在线| 国产日韩久久精品一区| 久热人妻中文字幕一区二区| 国产又爽又猛又粗又色对黄| 国产亚洲精品俞拍视频福利区| 在线日韩欧美国产自拍| 亚洲免费黄色高清在线观看| 免费在线播放一区二区| 激情综合五月开心久久| 日本少妇三级三级三级|