周 敏 陳小東
(江蘇省靖江中等專業學校,江蘇 靖江214500)
“應用支撐平臺”(以下簡稱“平臺”)是介于大數據層和應用服務層之間的數據接口層,它對應用層提供數據服務功能。通過引入平臺,要求所有應用去數據庫化,原本屬于各應用的數據統一存儲到大數據層,確保數據唯一、共享,消除信息孤島,同時,平臺將數據層隱藏起來,信息安全也得到有效保障。
Web Service 是一段部署在Internet 或Intranet 上的業務邏輯,它實現了一種在異構環境中各個應用之間交換數據的方法,因此,通過Web Service 的部署可以實現應用支撐平臺的功能。
平臺核心功能框架如圖1 所示。

圖1
管理員可以通過“數據庫快照”功能將大數據的數據結構抓取到平臺數據庫,然后通過“接口管理”模塊部署不同功能的接口。
應用服務根據業務需求調用相應接口,調用時需要傳遞身份信息和數據參數,身份、授權驗證通過后可以實現對大數據的讀寫。
筆者使用C#語言在.NET 平臺上進行平臺的研發,先使用動軟代碼生成器工具生成主體框架,然后進行定制開發。
數據庫快照包括大數據中各表、表字段和表間約束關系等信息,抓取快照的目的是在部署接口時可以離線呈現數據庫結構,方便自動生成SQL 語句。
(1)功能設計
數據庫快照抓取界面如圖2 所示。

圖2
管理員填入數據庫的連接字符串后,點擊“獲取數據庫”可以獲取Oracle 服務器上的所有數據庫名稱,選擇需要抓取快照的數據庫,點擊“抓取快照”可以將指定數據庫的結構抓取到平臺數據庫中。
重復抓取可以覆蓋現有數據庫快照信息,如果大數據中少量結構發生改變,可以使用圖中“抓取表”、“抓取字段”和“抓取主鍵”等按鈕進行逐個表結構快照的更新。
(2)快照抓取
數據庫快照功能的核心是抓取快照,第一步是抓取表和字段信息,其中字段信息包括字段名、字段類型、字段寬度、是否允空、默認值和字段說明等信息,第二步是抓取參照完整性約束信息,這部分信息用于SQL 語句的生成過程中條件部分的確定。流程圖如圖3 所示。

圖3
(1)接口和接口文件
.NET 平臺中使用后綴為asmx 的文件部署Web Service 接口,因為應用支撐平臺需要動態部署各個接口,所以無需將接口代碼封裝成程序集,平臺通過直接創建asmx 文件來實現對接口的管理。
對大數據中的每個表均部署一個接口文件,新建的接口文件中包括一個該表的實體類和一個將行記錄轉換成實體類對象的轉換類。
(2)接口部署
應用對數據的訪問主要是增、刪、改、查四種操作,根據對應的SQL 語句的語法結構,可以自動生成接口代碼并部署。接口部署界面如圖4 所示。

圖4
圖中是部署一個可以實現對T_JJZZ_JSPX_ZBMC(教師評學_指標名稱)表進行數據查詢的GetList 接口,根據業務邏輯確定各部分參數后,點擊“保存”按鈕,即可在該表接口文件中添加一個WebMethod。
“保存”按鈕的核心功能是首先根據接口名、接口返回值類型、接口條件生成接口函數原型,然后根據接口函數原型、輸出字段、接口條件和排序依據生成SQL 語句,最后組合身份驗證模塊生成接口函數代碼并部署。
(3)接口授權
每個需要接入平臺的應用都有一個賬號,平臺根據業務需求動態部署接口,并對應用賬號進行接口訪問授權,最終形成賬號、接口的授權矩陣,此矩陣作為身份、授權驗證的依據。
筆者完成了對學校現有“教師評學”應用的數據訪問層代碼的升級,實現了調用平臺接口對數據進行訪問的體系架構。
通過對“教師評學”應用中“查詢”和“統計”兩個頁面的多次測試,直接訪問數據和通過平臺訪問數據兩種模式下的耗時情況匯總如下表所示(表中時間單位為毫秒):

查詢頁面 統計頁面 次數 直接訪問 使用平臺 直接訪問 使用平臺 1 174 238 421 584 2 111 250 369 590 3 113 231 372 559 4 113 240 370 565 5 92 235 374 558 6 111 243 389 558 7 146 242 372 568 8 113 244 370 574 9 113 254 373 566 10 109 244 379 551 平均值 119.5 242.1 378.9 567.3 耗時增加率 102.6% 49.7% 數據訪問次數 3 4
從表中數據可以看出:
(1)使用平臺時頁面的響應耗時明顯增加,這是因為多了接口調用和網絡傳輸等時間消耗所致。通過簡單計算,每次平臺接口調用增加的耗時約在30~50 毫秒。
(2)因為統計頁面比查詢頁面數據計算量大,所以統計頁面的“耗時增加率”小很多,可以粗略認為“耗時增加率”與頁面數據計算量耗時成反比。
因為兩個頁面的絕對耗時都遠小于1 秒,所以從目前測試結果看,性能下降的幅度是可以接受的。
(1)提升硬件條件。可以將平臺部署到中心機房的專用服務器上,并與數據庫服務器專線連接,提高平臺的處理能力。
(2)云部署接口。通過對平臺接口的負載分析,將接口進行云部署,提升接口訪問的并發能力。
(3)優化平臺。可以通過對WebMethod 代碼進行優化、將熱數據預讀到內存等方法提升平臺的響應速度。