羅國富,段 瑞,劉小娟,楊文超
LUO Guo-fu,DUAN Rui,LIU Xiao-juan,YANG Wen-chao
(鄭州輕工業學院 機電工程學院,鄭州 450002)
現代企業的競爭很大程度上是信息的競爭,企業要想從眾多的競爭者中間脫穎而出需要一套完善、穩定的信息管理系統。所以,為了更好地了解和改進電動汽車的綜合性能,實現與國家新能源汽車遠程管理系統有效對接,實現數據共享,提供對車輛狀態進行實時監控的技術支持,電動汽車信息管理系統勢在必行[1]。
J2EE(Java 2 Platform Enterprise Edition)作為目前最成熟、最具影響力的技術架構模型,在事務管理、兼容性、穩定的可用性、組件的多實例管理等方面提供了強大的支持。文獻[2]提出了基于J2EE五層體系結構的Web開發框架,在經典四層架構的業務邏輯層和數據庫層間增加了數據持久層,并集成Struts和Hibernate實現J2EE分層架構,構建了更為有效的松耦合多層次Web開發模型。但利用EJB實現業務邏輯層,開發難度大、成本高。文獻[3]利用Struts、Spring和Hibernate開源框架技術進行系統的開發,整個系統遵循MVC的架構模式,降低了系統的耦合,增加了系統的靈活性,提高了系統的可擴展性和可維護性。文獻[6]介紹了利用SQL Azure 數據庫進行數據存儲,實現了異質群組、協同工作流等技術,并運用實例驗證了云數據庫的高擴展性、高可用性等特點,但利用。NET進行應用程序的開發,在多系統整合和系統延展性方面遠遠不及J2EE。因此,利用J2EE框架技術和SQL Azure分別進行應用程序及數據庫的設計,能縮短開發周期,節約成本,最終實現系統的高效開發。
本文提出一種J2EE云存儲環境下電動汽車信息管理系統的設計方法,運用SQL Azure云數據庫技術將數據存儲在云端,提高了數據庫的可擴展性,大大降低了管理維護的難度。
新能源汽車運營管理平臺包括門戶網站建設、立體化網絡監控系統、數據采集與分析系統、信息管理系統四個方面。
1)門戶網站建設由前臺頁面展示和后臺CMS內容管理系統組成,并集成信息管理系統,在網站首頁提供用戶登錄入口和相關查詢。
2)立體化網絡監控系統由車載端、數據服務器、用戶終端及公共資源(包括衛星、GPRS/CDMA基站、以太網等)組成。通過該系統實現數據的上傳與采集。
3)數據采集與分析系統包括數據采集與數據分析兩大模塊。車載終端從GPS接收機解析的各種能夠反映目標的地理信息和車輛狀態信息合成統一的數據包通過GPRS上傳到數據服務器。接著數據服務器將車輛的狀態數據存入數據庫,并對所采集到的數據進行離線統計、分析和管理,對新能源汽車運行參數進行按試驗工況或時段統計和分析,對汽車運行過程中的各種數據進行統計,并對以上數據進行曲線圖分析和比較,將最終得到的車輛狀態顯示到WEB頁面,供用戶查看。
4)信息管理系統通過組件化的用戶界面提供服務接口,并采用服務調用機制實現整車技術狀態監控、電池技術性能分析和實時信息預測等功能。
電動汽車信息管理系統(EVMIS)是信息管理系統模塊的一個子系統,本文主要對EVMIS進行相關研究及設計。
根據數據采集與分析系統所提供的相關數據和圖表以及企業就該信息管理系統提出的實際需求,電動汽車信息管理系統包括用戶信息管理、汽車信息管理、電池信息管理、故障信息管理、數據統計分析、論壇管理、新聞公告管理等七大模塊。
1)用戶信息管理模塊包括一般用戶和管理員兩種用戶,管理員有權限對數據庫中的數據進行處理。不同權限的管理員可以對這些數據進行添加、修改和刪除處理。所有用戶均可以進行信息查詢,該模塊提供用戶注冊、用戶銷戶、用戶權限分配、用戶審核等功能。
2)汽車信息管理模塊用于管理汽車相關資料,并存儲車輛信息,從而方便用戶查詢利用。該模塊包括靜態信息管理和動態信息管理兩大子模塊,靜態信息管理是為每臺車輛標準、規范的數據檔案的管理,如車型數據等,而動態信息管理是對實時采集的整車高壓系統的電流及電壓、車速、電機狀態等信息進行管理。
3)電池信息管理對運營中的電池基本信息和運營情況進行管理,還包括電池廠家、電池類型以及電池組成部分的廠家和型號的維護。
4)故障信息管理模塊對汽車運行過程中所產生的各種故障進行統計,并記錄相關的現場解決方法,為用戶臨時解決故障問題提供方便,并為汽車開發商提供相關數據以改善其性能,增強企業競爭力。
5)數據統計分析模塊對數據采集系統采集到的信息進行統計分析,去除雜亂信息,并對信息進行分門別類,生成數據表或者統計圖,最終對整車進行可靠性、經濟性和可用性分析,供用戶查詢利用,以便作出決策。
6)論壇管理模塊為電動汽車信息系統提供學習討論平臺,論壇管理提供注冊用戶發帖和回帖,提供游客瀏覽帖子,刪除、修改帖子功能。
7)新聞公告管理模塊提供新聞公告發布平臺,管理員通過電動汽車信息系統后臺進行新聞公告的發布、修改、刪除。游客和注冊用戶通過首頁查詢新聞和公告,了解市場動態。
根據需求分析,電動汽車信息管理系統功能設計圖如圖1所示。

圖1 EVMIS總體功能設計圖
本系統將使用當前流行的B/S模式的體系結構,在java2平臺上,采用J2EE框架技術來實現。客戶端層采用瀏覽器(Browser)向用戶提供基于WEB的顯示頁面。WEB服務器層(Web Server)采用基于J2EE的開源框架技術:Struts、Spring和Hibernate技術來實現。后臺數據庫服務器層(Database Server)則采用SQL Azure實現。
整個系統分為五層,分別是客戶層、表示層、業務邏輯層、數據持久層和數據庫層。系統開發過程中將采用MVC模式,其中表示層應用Struts框架,業務邏輯層和數據持久層分別采用Spring框架和Hibernate框架來實現。系統總體架構如圖2所示。
表示層主要處理系統與用戶之間的交互,接受用戶的請求和數據輸入,并將處理結果可視化輸出。該系統基于B/S模式,采用Struts框架技術來實現表示層的設計。

圖2 系統總體架構圖
Struts框架實現了MVC設計模式,將Web系統的程序分為模型、視圖、控制器三個部分,很好的實現了表示層和業務層的分離。模型由業務邏輯的Java Bean或者EJB組件構成,控制器由Action Servlet和Action來實現,視圖由一組JSP文件構成。
業務邏輯層主要負責具體的業務邏輯處理。該框架以 IoC(Inversion of Control)和AOP (Aspect Oriented Programming)為基礎,通過基本的JavaBean 替代EJB 完成相關工作,同時Spring 框架集成了對 Hibernate 和其他 O/R mapping 數據訪問的解決方案,更是提供了對 Struts 很好的支持,控制反轉 (IoC)和面向方面編程( AOP)插件式架構有效地降低了應用程序各層的耦合度和應用組件之間的依賴性。
數據持久層由Hibernate來實現,應用程序通過Hibernate提供的ORM工具進行關系數據庫與對象關聯對數據庫進行訪問,在對象和數據庫間傳遞數據,并保持兩者與映射層本身相獨立。在Hibernate 技術的實施過程中,通過創建持久化對象,完成持久化對象與數據庫中表字段的對應關系,編寫配置文件,完成與數據庫的連接操作及各種參數的配置,最終定義和實現 DAO 接口,完成具體業務。
SQL Azure是由微軟 SQL Server 2008 為主,建構在 Windows Azure 云端操作系統之上,執行云端運算的關系型數據庫服務,是一種云存儲的實現,具有高擴展性和高可用性。SQL Azure 架構在數據中心可分為三個部份:服務提供層(Service Layer)、平臺提供層(Platform Layer)、基礎設施層(Infrastructure Layer)。SQL Azure體系架構如圖3所示。
1)服務提供層向用戶提供TDS(Tabular Data Stream)協議的訪問端口,用戶通過該協議訪問SQL Azure內部的數據。此層還提供了流量計費及用戶賬戶的配置服務。
2)平臺提供層由SQL Server Fabric、SQL Server實例和管理服務三部分組成。SQL Server Fabric是一個集成了網絡、服務器和存儲的分布式底層架構, 用于完成數據庫的自動部署、備份、故障轉移和設置負載均衡。SQL Server實例代表了數據備份和底層的操作系統實例。SQL Azure 管理服務負責對每個數據庫間的數據復寫工作,保障 了SQL Azure 的基本高可用性要求。
3)基礎設施層提供了硬件支持和操作系統,以及對服務層運行時的服務管理。

圖3 SQL Azure體系架構
4.1.1 系統總體E-R圖
根據功能設計,規劃出的實體有:管理員實體、用戶實體、汽車信息實體、電池信息實體、故障信息實體、論壇實體、新聞公告實體等。
1)管理員實體屬性包括:管理員編號、管理員名稱、密碼、注冊時間、權限。
2)用戶實體屬性包括:用戶編號、用戶名、密碼、性別、聯系電話、身份證號、郵箱、注冊時間。
3)汽車信息實體屬性包括:編號、品牌、型號、廠商、出產年份、價格、產地、電動機、保修期、圖片、添加時間、添加人。
4)電池信息實體屬性包括:編號、品牌、型號、廠商、出產年份、價格、產地、體積、重量、生命周期、充換電記錄、用戶名。
5)故障信息實體屬性包括:編號、管理員名稱、用戶名、電池故障、電機故障、控制系統故障、處理方法、添加時間。
6)論壇實體屬性包括:編號、管理員名稱、帖子名稱、帖子內容、發帖時間、發帖人、回復。
7)新聞公告實體屬性包括:編號、管理員名稱、標題名稱、內容、圖片、發布時間、發布人。
利用VISIO畫出實體關系圖(E-R圖),如圖4所示。

圖4 系統總體E-R圖
4.1.2 創建數據庫、表結構及相關索引
打開SQL Server Management Studio 2008 R2,輸入Transact-SQL代碼(代碼示例如圖5所示),即可完成EVMISDB數據庫及其中數據表的創建操作。接著完成創建相關(非)聚集索引等工作,最終得到“EVMISDB”數據庫及其數據表的樹形目錄結構,如圖6所示。
目前將數據遷移到云數據庫中仍然是一個具有挑戰性的問題,特別是一些包含海量數據的科學數據庫,可能無法直接遷移到云中。因此,需要研究向云數據庫中遷移數據的有效方法。

圖5 代碼示例

圖6 樹形目錄結構
向SQL Azure云數據庫中遷移本地數據庫,目前主要有以下三種方法或工具能夠實現:1)通過生成現有數據庫的DDL腳本及bcp實用工具將數據庫遷移到 SQL Azure;2)利用SQL Azure Sync或SQL Azure Migration Wizard等工具實現本地SQL Server與遠端SQL Azure之間的數據同步;3)通過數據層應用程序DAC(Data-tier Application),我們可以將SQL Server中的數據庫的Schema提取出來,并且可以方便地將Schema部署到SQL Azure上。然而,目前DAC只能提取和部署Schema,而不能提取、部署表中的數據行。
為了保持系統性能最優,數據遷移必須保證服務間斷時間盡可能短,上述方法在這點上仍有不足。而現在提出的數據庫之間的動態數據遷移技術,可以有效地支持云數據庫環境下的動態負載均衡,實現資源再分配。
系統利用SQL Azure數據庫存儲數據,采用J2EE技術架構系統框架,縮短了開發周期,同時減少了投入成本,使系統具有良好的可移植性、靈活性,且易維護、易管理。通過該系統,企業能及時、全面的了解電動汽車的市場動態及業務經營狀況,理解車主的真實想法和電動汽車運行的相關實況,為企業制定下一步策略提供明確方向,大大提高了企業的競爭力。
[1] 姚震,解國林,李優新,劉方銘,羅祖文,鄧先泉.電動汽車監控平臺的設計與開發[J].微計算機信息,2009,(20).
[2] 李小平,肖岳峰,宿元,宋瀚濤,姚永標.基于J2EE多層架構的Web開發框架研究[J].計算機應用研究,2008,(5).
[3] 王昊航.基于J2EE的電動汽車運營支撐系統的設計與實現[D].北京郵電大學,2011.
[4] 林子雨,賴永炫,林琛,謝怡,鄒權.云數據庫研究[J].軟件學報,2012,(5).
[5] 涂蘭敬.細數選擇云數據庫SQLAzure的六大理由[J].網絡與信息,2012,(6).
[6] 吳彥文,馮正西,康婷.面向PAAS模式的CSCL系統設計與實現[J]. 計算機工程與應用,2013,(4).
[7] 李洋,孫永維,許冰,王英雙.基于Ajax,Struts,Hibernate和Spring的J2EE架構[J].吉林大學學報(信息科學版),2011,(6).
[8] 鄧子云.貫通JavaWeb輕量級應用開發:JSP+Struts+Hibernate+Spring實例精解[M].北京:電子工業出版社,2012,(7).
[9] Thakar A,Szalay AS,Church K,Terzis A. Large science databases—Are cloud services ready for them? Programm ing,2011,19(2-3):147-159.