趙延超,李 鵬,吳 濤,段江飛
(1.中煤地華盛水文地質(zhì)勘察有限公司,河北 邯鄲 056004;2.中國煤炭地質(zhì)總局 水文地質(zhì)工程地質(zhì)環(huán)境地質(zhì)勘查院,河北 邯鄲 056000)
隨著信息技術(shù)的高速發(fā)展,大量的數(shù)字產(chǎn)品也產(chǎn)生了大量的數(shù)字用戶,而這些數(shù)字用戶在產(chǎn)品使用過程中一定會產(chǎn)生大量數(shù)據(jù),尤其是巨頭互聯(lián)網(wǎng)公司。例如騰訊控股旗下的微信支付產(chǎn)品就存儲著海量的交易數(shù)據(jù),并以此作為數(shù)據(jù)基礎(chǔ)提供征信服務(wù);字節(jié)跳動公司的數(shù)據(jù)存儲中也存有眾多的新聞信息、短視頻信息、商品信息等內(nèi)容。所有使用大數(shù)據(jù)技術(shù)都不可避免會在這個過程中遇到數(shù)據(jù)的采集,處理和分析問題。與此同時,大數(shù)據(jù)產(chǎn)品也相應(yīng)出現(xiàn)了變化,慢慢的從以軟件為核心轉(zhuǎn)換到以為數(shù)據(jù)為核心。大數(shù)據(jù)時代要求我們在新的數(shù)據(jù)平臺去開發(fā)新的系統(tǒng)。縱觀整個大數(shù)據(jù)產(chǎn)品市場,大數(shù)據(jù)可視化工具產(chǎn)品可以說是百花齊放,不同背景的廠商在這個概念下提供著自己的產(chǎn)品和服務(wù)。據(jù)調(diào)查研究,大數(shù)據(jù)可視化工具的公司大致分為商業(yè)智能可視化工具的軟件服務(wù)商和互聯(lián)網(wǎng)巨頭公司這兩類[1-2]。
盡管很多行業(yè)做了大量數(shù)據(jù)可視化的嘗試,但其發(fā)展仍然面臨著關(guān)注度不高、對大數(shù)據(jù)數(shù)據(jù)源支持有限、價格昂貴等問題,但數(shù)字可視化產(chǎn)品依舊是未來大數(shù)據(jù)發(fā)展的方向和趨勢。為了更好對大數(shù)據(jù)挖可視化挖掘,本課題通過使用web 前后端開發(fā)技術(shù)研究自定義可視化分析引擎關(guān)鍵技術(shù),并完成系統(tǒng)模塊的開發(fā)。通過本課題開發(fā)設(shè)計的引擎及系統(tǒng)可以賦予大數(shù)據(jù)可視化模塊自定義的能力,使煤礦水害管理人員直觀的看到數(shù)據(jù)來源及顯示樣式,更好的貼合管理人員的需求,對系統(tǒng)數(shù)據(jù)做到良好的展現(xiàn)[3-5]。
大數(shù)據(jù)可視化預(yù)測分析引擎系統(tǒng)軟件層次架構(gòu)設(shè)計如圖1 所示。
圖1 系統(tǒng)軟件層次架構(gòu)Fig.1 System software architecture
根據(jù)不同功能的界限和實際業(yè)務(wù)需求,將基于大數(shù)據(jù)的自定義可視化分析引擎共劃分為數(shù)據(jù)管理模塊、數(shù)據(jù)分析模塊和數(shù)據(jù)顯示模塊,如圖2 所示。這3 個模塊既各司其職負(fù)責(zé)本模塊的業(yè)務(wù)和計算,同時也相互共享和傳遞數(shù)據(jù)。
圖2 基于大數(shù)據(jù)的自定義可視化分析引擎功能模塊Fig.2 Function module of custom visual analysis engine based on big data
2.2.1 數(shù)據(jù)管理模塊
數(shù)據(jù)管理模塊是數(shù)據(jù)分析的重要成分,數(shù)據(jù)管理模塊的工作是將管理人員所需要的數(shù)據(jù)從不同數(shù)據(jù)源集中到系統(tǒng)中,去解決數(shù)據(jù)分散、類型不同等問題形成數(shù)據(jù)集。簡化了數(shù)據(jù)獲取流程,節(jié)省了整合、清洗數(shù)據(jù)所花費的大量時間,使用戶方便的進(jìn)行數(shù)據(jù)存儲與管理和數(shù)據(jù)分析。數(shù)據(jù)管理模塊主要包括創(chuàng)建數(shù)據(jù)源,創(chuàng)建數(shù)據(jù)集,管理數(shù)據(jù)源和管理數(shù)據(jù)集4 個功能[6]。
2.2.2 數(shù)據(jù)分析模塊
數(shù)據(jù)分析模塊屬于構(gòu)建煤礦水害監(jiān)測預(yù)警可視化應(yīng)用的核心模塊。此次研究采用了XGboost、FP-growth 算法的數(shù)據(jù)預(yù)測分析,能夠挖掘出監(jiān)測數(shù)據(jù)指標(biāo)與預(yù)警閾值的關(guān)系,并提前分析將來一段時間數(shù)據(jù)的走向,以達(dá)到預(yù)警的效果,得到兩者的相關(guān)性以及數(shù)據(jù)的變化規(guī)律[7]。
2.2.3 數(shù)據(jù)顯示模塊
數(shù)據(jù)顯示模塊能夠?qū)崿F(xiàn)預(yù)測數(shù)據(jù)趨勢、維度等直觀顯示的需求,同時實現(xiàn)了監(jiān)測檢測數(shù)據(jù)的多角度、多視圖、多維度的展示和交互,直觀展示了數(shù)據(jù)隱含的有用信息[8]。
2.3.1 E- R 圖設(shè)計
數(shù)據(jù)庫設(shè)計是基于開展需求分析獲取的用戶需求,進(jìn)行抽象化處理以獲取概念模型及信息結(jié)構(gòu)。為了對數(shù)據(jù)庫結(jié)構(gòu)予以描述,此處以E-R 圖為工具對數(shù)據(jù)庫的實體關(guān)系進(jìn)行描述。通過對不同模塊的數(shù)據(jù)需求進(jìn)行提煉,對系統(tǒng)E-R 圖進(jìn)行設(shè)計,如圖3 所示(由于實體屬性較多,在E-R 圖中不體現(xiàn)屬性)。
圖3 基于大數(shù)據(jù)的自定義可視化分析引擎數(shù)據(jù)庫E- R圖Fig.3 E-R diagram of custom visual analysis engine database based on big data
E-R 圖主要包含的信息數(shù)據(jù)有用戶信息、數(shù)據(jù)集信息和監(jiān)測數(shù)據(jù)應(yīng)用信息。其中一個管理人員可能選擇多個數(shù)據(jù)源或者創(chuàng)建多個數(shù)據(jù)卡片。一個數(shù)據(jù)應(yīng)用一般包含多個數(shù)據(jù)卡片。另外一個數(shù)據(jù)集的數(shù)據(jù)可能提供給多個數(shù)據(jù)卡片,因此與這兩者之間是一對多的關(guān)系[9]。
2.3.2 數(shù)據(jù)庫表設(shè)計
數(shù)據(jù)實體及實體間的關(guān)系描述了數(shù)據(jù)庫的邏輯結(jié)構(gòu),根據(jù)數(shù)據(jù)實體及實體屬性對數(shù)據(jù)庫物理結(jié)構(gòu)進(jìn)行設(shè)計即數(shù)據(jù)庫表。數(shù)據(jù)源表主要用于存儲系統(tǒng)系統(tǒng)數(shù)據(jù)源的信息,主鍵是數(shù)據(jù)庫名稱,還有表名稱,數(shù)據(jù)源描述等字段,具體見表1。
表1 文件存儲表Table 1 File storage table
自動監(jiān)測數(shù)據(jù)主要用于存儲數(shù)據(jù)集信息,包括數(shù)據(jù)集編號、各項字段等屬性,具體見表2。
表2 自動監(jiān)測數(shù)據(jù)Table 2 Automatic monitoring data
基于大數(shù)據(jù)的自定義可視化分析引擎使用前后端分離設(shè)計,通過接口使用RESTFUL 進(jìn)行對接,設(shè)計接口完成數(shù)據(jù)傳輸。因為數(shù)據(jù)是研究的核心,所以如何設(shè)計數(shù)據(jù)接口非常重要。接口傳輸過程以Spring 提供的RestController 類為基礎(chǔ),使用RequestMapping 對輸入?yún)?shù)進(jìn)行定義,使用CommonResults 對象進(jìn)行封裝。
首先配備服務(wù)器和瀏覽器客戶端作為測試環(huán)境,然后對自定義可視化分析引擎的代碼單元和功能性進(jìn)行測試,確保系統(tǒng)正確運行。然后展示系統(tǒng)應(yīng)用效果,這里以水土保持監(jiān)控平臺做實際例子來逐步展示整個引擎使用過程[10]。
系統(tǒng)測試環(huán)境包括軟件配置和硬件配置,具體配置內(nèi)容需根據(jù)軟件系統(tǒng)的運行需要而定。大數(shù)據(jù)自定義可視化分析引擎基于前后端分離進(jìn)行設(shè)計,需部署的硬件設(shè)備包括各類服務(wù)器和客戶端。具體配置如下:
3.1.1 服務(wù)器測試環(huán)境配置
Web 服務(wù)器:戴爾服務(wù)器(4 個i78700kCPU、128 GB 內(nèi)存、12 T 硬盤Ubuntu18.04 系統(tǒng)),配置Java8 開發(fā)環(huán)境和Nginx1.8web 服務(wù)器、MySQL5.8數(shù)據(jù)庫。
3.1.2 客戶端測試環(huán)境配置
客戶端設(shè)備型號選擇Apple 公司于2018 年6月生產(chǎn)的配備2.3GHz 四核Intel Corei5 處理器、8GB RAM 和512GB 固態(tài)硬盤的MacBook Pro。使用Google 公司開發(fā)的Chrome 瀏覽器進(jìn)行測試。
完善的單元測試可以幫助開發(fā)者更好的維護(hù)復(fù)雜的基礎(chǔ)代碼,可以提供描述組件行為的文檔,節(jié)省手動測試的時間,減少研發(fā)新特性時產(chǎn)生的bug,改進(jìn)設(shè)計,促進(jìn)重構(gòu)。通過編寫細(xì)致且有意義的單元測試,能夠在構(gòu)建新特性或重構(gòu)已有代碼的同時,保持應(yīng)用的功能穩(wěn)定。本課題的Vue.js 單元測試需要使用Jest 框架。Jest 是一個JavaScript測試框架,專注于簡潔明快,可以并行運行測試。前端Vue.js 代碼部分的測試步驟。首先添加Jest 測試框,執(zhí)行vue add unit-jest 命令,執(zhí)行完后項目根目錄會多出一個tests 文件夾,在這里存放所有單元測試代碼,文件后綴為.spec.js。當(dāng)運行npm runtest:unit 之后這些文件就會被執(zhí)行。環(huán)境搭建好后,做Vue.js 代碼單元測試,測試方面有data數(shù)據(jù)類型、添加數(shù)據(jù)、刪除數(shù)據(jù)、查詢數(shù)據(jù)。在test/unit 下創(chuàng)建一個tstspec.js 文件用來寫測試用例的代碼,在研究中可以直接對操作進(jìn)行測試,因為能確保該接口有數(shù)據(jù):若不能確定接口是否有數(shù)據(jù)時,可以直接對接口進(jìn)行驗證,如果驗證成功就證明查詢成功。
最后通過配置jest.config.json 腳本來生成測試覆蓋率報告,生成報告會降低單測的速度,配置中默認(rèn)是關(guān)閉的,需要手動開啟。生成的報告在根目錄的coverage 文件夾下,可以通過package.json 配置命令行打開測試報告或者在控制臺查看。通過測試報告得知,該系統(tǒng)單元測試結(jié)果全部通過,語句覆蓋率(statementcoverage)58.32%,分支覆蓋率(branch coverage)50%,函數(shù)覆蓋率(functioncoverage)50%,行覆蓋率(line coverage)59.5%。
功能測試的主要內(nèi)容是對所有模塊各功能進(jìn)行用例定義使用并記錄結(jié)果。但是由于該系統(tǒng)功能數(shù)量較大,僅對重要的功能用例給出測試說明。
3.3.1 數(shù)據(jù)管理模塊測試
(1) 創(chuàng)建數(shù)據(jù)集測試用例,測試用例編碼CREATEDATALIST-TEST。
(2) 測試流程。管理人員點擊系統(tǒng)菜單中數(shù)據(jù)管理,進(jìn)入數(shù)據(jù)管理界面;管理人員選擇某項數(shù)據(jù)源的創(chuàng)建數(shù)據(jù)集按鈕,進(jìn)入創(chuàng)建數(shù)據(jù)集頁面;管理人員進(jìn)行數(shù)據(jù)源選擇,并選擇所需字段;管理人員進(jìn)一步處理數(shù)據(jù),選擇篩選字段,限制數(shù)據(jù)量,排序方式;將英文字段定義中文名稱;連接成功,提示管理人員并提供數(shù)據(jù)預(yù)覽功能。
(3) 輸入數(shù)據(jù)。數(shù)據(jù)集編號,所屬數(shù)據(jù)源ID,字段信息,篩選項,數(shù)據(jù)量限制,創(chuàng)建時間。
(4) 預(yù)期測試結(jié)果。系統(tǒng)根據(jù)用戶新建進(jìn)行數(shù)據(jù)添加,并提示添加成功。
(5) 實際測試結(jié)果??梢哉_的添加數(shù)據(jù),并正確的提示添加成功。
3.3.2 應(yīng)用管理模塊測試
(1) 應(yīng)用發(fā)布測試用例,測試用例編碼DAS HBOARDPUBLISH_TEST。
(2) 測試流程。管理人員點擊駕駛艙構(gòu)建頁面中新建圖表,打開卡片管理界面;管理人員選擇數(shù)據(jù),樣式,圖表類型和篩選項等選項,點擊新增;新建成功,提示管理人員并在列表中變更狀態(tài)。
(3) 輸入數(shù)據(jù)。用戶ID,應(yīng)用編號。
(4) 預(yù)期測試結(jié)果。系統(tǒng)根據(jù)用戶所選擇進(jìn)行發(fā)布,并提示發(fā)布成功,變更對應(yīng)狀態(tài)。
(5) 實際測試結(jié)果。系統(tǒng)根據(jù)用戶所選擇進(jìn)行發(fā)布,正確提示發(fā)布成功,變更對應(yīng)狀態(tài)。
3.3.3 構(gòu)建模塊測試
(1) 卡片管理測試用例,測試用例編碼CARDMANAGEMENT_TEST。
(2) 測試流程。管理人員點擊構(gòu)建頁面中新建圖表,打開卡片管理界面;管理人員選擇數(shù)據(jù)、樣式、圖表類型和篩選項等選項,點擊新增;新建成功,提示管理人員并在布局中正確顯示卡片。
(3) 輸入數(shù)據(jù)。數(shù)據(jù)卡片編號,依賴數(shù)據(jù)集編號,所屬應(yīng)用編號,卡片X 坐標(biāo),卡片Y 坐標(biāo),卡片寬度,卡片高度,卡片名稱,卡片標(biāo)示,卡片顏色,篩選類型,篩選值,圖表類型,圖表維度,圖表數(shù)值1,圖表數(shù)值2,創(chuàng)建時間。
(4) 預(yù)期測試結(jié)果。系統(tǒng)根據(jù)用戶所填寫數(shù)據(jù)對卡片進(jìn)行操作并給予反饋,布局渲染出新的設(shè)計。
(5) 實際測試結(jié)果。系統(tǒng)能夠根據(jù)用戶所填寫數(shù)據(jù)對卡片進(jìn)行操作,并正確給予反饋,布局正確渲染出新的設(shè)計。
首先進(jìn)行數(shù)據(jù)連接,打開數(shù)據(jù)管理模塊,點擊“添加數(shù)據(jù)源”進(jìn)入到數(shù)據(jù)源列表頁,進(jìn)行連接配置,填入與外部數(shù)據(jù)連接所必要的信息。mysql 數(shù)據(jù)源需要的配置項主要有服務(wù)器、端口號、用戶名、密碼和數(shù)據(jù)庫名,并提供進(jìn)度展示。配置好的監(jiān)測系統(tǒng)登錄界面如圖4 所示。
圖4 監(jiān)測系統(tǒng)登錄界面Fig.4 Monitoring system login interface
然后系統(tǒng)連接到庫后,自動讀入各項內(nèi)容。如果是實時型數(shù)據(jù)庫,系統(tǒng)會連接對應(yīng)表來獲取表內(nèi)的數(shù)據(jù),做數(shù)據(jù)預(yù)覽,如圖5 所示。
圖5 監(jiān)測界面預(yù)覽Fig.5 Monitoring interface preview
數(shù)據(jù)源管理系統(tǒng)中還可以對創(chuàng)建的數(shù)據(jù)集進(jìn)行管理。管理人員進(jìn)入頁面后會看到數(shù)據(jù)集列表、展示數(shù)據(jù)集名稱、所屬數(shù)據(jù)源、創(chuàng)建時間等信息,如圖6 所示。
圖6 數(shù)據(jù)管理界面Fig.6 Data management interface
管理功能的結(jié)構(gòu)通過文件夾構(gòu)成了各個業(yè)務(wù)的分析框架。管理人員可以在此進(jìn)行新增、編輯、復(fù)制、移動、刪除等操作,如圖7 所示。
圖7 數(shù)據(jù)文件夾Fig.7 Data folder
(1) 根據(jù)自定義可視化分析引擎功能的分析和實際業(yè)務(wù)情況,利用軟件開發(fā)技術(shù),對自定義可視化分析引擎的網(wǎng)絡(luò)架構(gòu)、技術(shù)架構(gòu)、功能模塊、數(shù)據(jù)庫以及終端與軟件系統(tǒng)的接口進(jìn)行設(shè)計,使其能夠滿足實際業(yè)務(wù)的需求。
(2) 設(shè)計了Web 端的框架和接口,包括前端請求接口和數(shù)據(jù)流訪問接口,前端頁面結(jié)構(gòu)以及服務(wù)器的使用和項目部署。
(3) 對本系統(tǒng)進(jìn)行了前端測試和后端測試。前端測試主要通過不同測試方式考察了前端頁面渲染的性能、響應(yīng)時間和易用性,后端測試了服務(wù)程序代碼的運行狀態(tài),包括穩(wěn)定性、運行時間和內(nèi)存使用情況。測試結(jié)果表明系統(tǒng)的各個模塊耦合良好,系統(tǒng)運行正常。