羅國(guó)富,段 瑞,劉小娟,楊文超
LUO Guo-fu,DUAN Rui,LIU Xiao-juan,YANG Wen-chao
(鄭州輕工業(yè)學(xué)院 機(jī)電工程學(xué)院,鄭州 450002)
現(xiàn)代企業(yè)的競(jìng)爭(zhēng)很大程度上是信息的競(jìng)爭(zhēng),企業(yè)要想從眾多的競(jìng)爭(zhēng)者中間脫穎而出需要一套完善、穩(wěn)定的信息管理系統(tǒng)。所以,為了更好地了解和改進(jìn)電動(dòng)汽車的綜合性能,實(shí)現(xiàn)與國(guó)家新能源汽車遠(yuǎn)程管理系統(tǒng)有效對(duì)接,實(shí)現(xiàn)數(shù)據(jù)共享,提供對(duì)車輛狀態(tài)進(jìn)行實(shí)時(shí)監(jiān)控的技術(shù)支持,電動(dòng)汽車信息管理系統(tǒng)勢(shì)在必行[1]。
J2EE(Java 2 Platform Enterprise Edition)作為目前最成熟、最具影響力的技術(shù)架構(gòu)模型,在事務(wù)管理、兼容性、穩(wěn)定的可用性、組件的多實(shí)例管理等方面提供了強(qiáng)大的支持。文獻(xiàn)[2]提出了基于J2EE五層體系結(jié)構(gòu)的Web開發(fā)框架,在經(jīng)典四層架構(gòu)的業(yè)務(wù)邏輯層和數(shù)據(jù)庫層間增加了數(shù)據(jù)持久層,并集成Struts和Hibernate實(shí)現(xiàn)J2EE分層架構(gòu),構(gòu)建了更為有效的松耦合多層次Web開發(fā)模型。但利用EJB實(shí)現(xiàn)業(yè)務(wù)邏輯層,開發(fā)難度大、成本高。文獻(xiàn)[3]利用Struts、Spring和Hibernate開源框架技術(shù)進(jìn)行系統(tǒng)的開發(fā),整個(gè)系統(tǒng)遵循MVC的架構(gòu)模式,降低了系統(tǒng)的耦合,增加了系統(tǒng)的靈活性,提高了系統(tǒng)的可擴(kuò)展性和可維護(hù)性。文獻(xiàn)[6]介紹了利用SQL Azure 數(shù)據(jù)庫進(jìn)行數(shù)據(jù)存儲(chǔ),實(shí)現(xiàn)了異質(zhì)群組、協(xié)同工作流等技術(shù),并運(yùn)用實(shí)例驗(yàn)證了云數(shù)據(jù)庫的高擴(kuò)展性、高可用性等特點(diǎn),但利用。NET進(jìn)行應(yīng)用程序的開發(fā),在多系統(tǒng)整合和系統(tǒng)延展性方面遠(yuǎn)遠(yuǎn)不及J2EE。因此,利用J2EE框架技術(shù)和SQL Azure分別進(jìn)行應(yīng)用程序及數(shù)據(jù)庫的設(shè)計(jì),能縮短開發(fā)周期,節(jié)約成本,最終實(shí)現(xiàn)系統(tǒng)的高效開發(fā)。
本文提出一種J2EE云存儲(chǔ)環(huán)境下電動(dòng)汽車信息管理系統(tǒng)的設(shè)計(jì)方法,運(yùn)用SQL Azure云數(shù)據(jù)庫技術(shù)將數(shù)據(jù)存儲(chǔ)在云端,提高了數(shù)據(jù)庫的可擴(kuò)展性,大大降低了管理維護(hù)的難度。
新能源汽車運(yùn)營(yíng)管理平臺(tái)包括門戶網(wǎng)站建設(shè)、立體化網(wǎng)絡(luò)監(jiān)控系統(tǒng)、數(shù)據(jù)采集與分析系統(tǒng)、信息管理系統(tǒng)四個(gè)方面。
1)門戶網(wǎng)站建設(shè)由前臺(tái)頁面展示和后臺(tái)CMS內(nèi)容管理系統(tǒng)組成,并集成信息管理系統(tǒng),在網(wǎng)站首頁提供用戶登錄入口和相關(guān)查詢。
2)立體化網(wǎng)絡(luò)監(jiān)控系統(tǒng)由車載端、數(shù)據(jù)服務(wù)器、用戶終端及公共資源(包括衛(wèi)星、GPRS/CDMA基站、以太網(wǎng)等)組成。通過該系統(tǒng)實(shí)現(xiàn)數(shù)據(jù)的上傳與采集。
3)數(shù)據(jù)采集與分析系統(tǒng)包括數(shù)據(jù)采集與數(shù)據(jù)分析兩大模塊。車載終端從GPS接收機(jī)解析的各種能夠反映目標(biāo)的地理信息和車輛狀態(tài)信息合成統(tǒng)一的數(shù)據(jù)包通過GPRS上傳到數(shù)據(jù)服務(wù)器。接著數(shù)據(jù)服務(wù)器將車輛的狀態(tài)數(shù)據(jù)存入數(shù)據(jù)庫,并對(duì)所采集到的數(shù)據(jù)進(jìn)行離線統(tǒng)計(jì)、分析和管理,對(duì)新能源汽車運(yùn)行參數(shù)進(jìn)行按試驗(yàn)工況或時(shí)段統(tǒng)計(jì)和分析,對(duì)汽車運(yùn)行過程中的各種數(shù)據(jù)進(jìn)行統(tǒng)計(jì),并對(duì)以上數(shù)據(jù)進(jìn)行曲線圖分析和比較,將最終得到的車輛狀態(tài)顯示到WEB頁面,供用戶查看。
4)信息管理系統(tǒng)通過組件化的用戶界面提供服務(wù)接口,并采用服務(wù)調(diào)用機(jī)制實(shí)現(xiàn)整車技術(shù)狀態(tài)監(jiān)控、電池技術(shù)性能分析和實(shí)時(shí)信息預(yù)測(cè)等功能。
電動(dòng)汽車信息管理系統(tǒng)(EVMIS)是信息管理系統(tǒng)模塊的一個(gè)子系統(tǒng),本文主要對(duì)EVMIS進(jìn)行相關(guān)研究及設(shè)計(jì)。
根據(jù)數(shù)據(jù)采集與分析系統(tǒng)所提供的相關(guān)數(shù)據(jù)和圖表以及企業(yè)就該信息管理系統(tǒng)提出的實(shí)際需求,電動(dòng)汽車信息管理系統(tǒng)包括用戶信息管理、汽車信息管理、電池信息管理、故障信息管理、數(shù)據(jù)統(tǒng)計(jì)分析、論壇管理、新聞公告管理等七大模塊。
1)用戶信息管理模塊包括一般用戶和管理員兩種用戶,管理員有權(quán)限對(duì)數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行處理。不同權(quán)限的管理員可以對(duì)這些數(shù)據(jù)進(jìn)行添加、修改和刪除處理。所有用戶均可以進(jìn)行信息查詢,該模塊提供用戶注冊(cè)、用戶銷戶、用戶權(quán)限分配、用戶審核等功能。
2)汽車信息管理模塊用于管理汽車相關(guān)資料,并存儲(chǔ)車輛信息,從而方便用戶查詢利用。該模塊包括靜態(tài)信息管理和動(dòng)態(tài)信息管理兩大子模塊,靜態(tài)信息管理是為每臺(tái)車輛標(biāo)準(zhǔn)、規(guī)范的數(shù)據(jù)檔案的管理,如車型數(shù)據(jù)等,而動(dòng)態(tài)信息管理是對(duì)實(shí)時(shí)采集的整車高壓系統(tǒng)的電流及電壓、車速、電機(jī)狀態(tài)等信息進(jìn)行管理。
3)電池信息管理對(duì)運(yùn)營(yíng)中的電池基本信息和運(yùn)營(yíng)情況進(jìn)行管理,還包括電池廠家、電池類型以及電池組成部分的廠家和型號(hào)的維護(hù)。
4)故障信息管理模塊對(duì)汽車運(yùn)行過程中所產(chǎn)生的各種故障進(jìn)行統(tǒng)計(jì),并記錄相關(guān)的現(xiàn)場(chǎng)解決方法,為用戶臨時(shí)解決故障問題提供方便,并為汽車開發(fā)商提供相關(guān)數(shù)據(jù)以改善其性能,增強(qiáng)企業(yè)競(jìng)爭(zhēng)力。
5)數(shù)據(jù)統(tǒng)計(jì)分析模塊對(duì)數(shù)據(jù)采集系統(tǒng)采集到的信息進(jìn)行統(tǒng)計(jì)分析,去除雜亂信息,并對(duì)信息進(jìn)行分門別類,生成數(shù)據(jù)表或者統(tǒng)計(jì)圖,最終對(duì)整車進(jìn)行可靠性、經(jīng)濟(jì)性和可用性分析,供用戶查詢利用,以便作出決策。
6)論壇管理模塊為電動(dòng)汽車信息系統(tǒng)提供學(xué)習(xí)討論平臺(tái),論壇管理提供注冊(cè)用戶發(fā)帖和回帖,提供游客瀏覽帖子,刪除、修改帖子功能。
7)新聞公告管理模塊提供新聞公告發(fā)布平臺(tái),管理員通過電動(dòng)汽車信息系統(tǒng)后臺(tái)進(jìn)行新聞公告的發(fā)布、修改、刪除。游客和注冊(cè)用戶通過首頁查詢新聞和公告,了解市場(chǎng)動(dòng)態(tài)。
根據(jù)需求分析,電動(dòng)汽車信息管理系統(tǒng)功能設(shè)計(jì)圖如圖1所示。
圖1 EVMIS總體功能設(shè)計(jì)圖
本系統(tǒng)將使用當(dāng)前流行的B/S模式的體系結(jié)構(gòu),在java2平臺(tái)上,采用J2EE框架技術(shù)來實(shí)現(xiàn)??蛻舳藢硬捎脼g覽器(Browser)向用戶提供基于WEB的顯示頁面。WEB服務(wù)器層(Web Server)采用基于J2EE的開源框架技術(shù):Struts、Spring和Hibernate技術(shù)來實(shí)現(xiàn)。后臺(tái)數(shù)據(jù)庫服務(wù)器層(Database Server)則采用SQL Azure實(shí)現(xiàn)。
整個(gè)系統(tǒng)分為五層,分別是客戶層、表示層、業(yè)務(wù)邏輯層、數(shù)據(jù)持久層和數(shù)據(jù)庫層。系統(tǒng)開發(fā)過程中將采用MVC模式,其中表示層應(yīng)用Struts框架,業(yè)務(wù)邏輯層和數(shù)據(jù)持久層分別采用Spring框架和Hibernate框架來實(shí)現(xiàn)。系統(tǒng)總體架構(gòu)如圖2所示。
表示層主要處理系統(tǒng)與用戶之間的交互,接受用戶的請(qǐng)求和數(shù)據(jù)輸入,并將處理結(jié)果可視化輸出。該系統(tǒng)基于B/S模式,采用Struts框架技術(shù)來實(shí)現(xiàn)表示層的設(shè)計(jì)。
圖2 系統(tǒng)總體架構(gòu)圖
Struts框架實(shí)現(xiàn)了MVC設(shè)計(jì)模式,將Web系統(tǒng)的程序分為模型、視圖、控制器三個(gè)部分,很好的實(shí)現(xiàn)了表示層和業(yè)務(wù)層的分離。模型由業(yè)務(wù)邏輯的Java Bean或者EJB組件構(gòu)成,控制器由Action Servlet和Action來實(shí)現(xiàn),視圖由一組JSP文件構(gòu)成。
業(yè)務(wù)邏輯層主要負(fù)責(zé)具體的業(yè)務(wù)邏輯處理。該框架以 IoC(Inversion of Control)和AOP (Aspect Oriented Programming)為基礎(chǔ),通過基本的JavaBean 替代EJB 完成相關(guān)工作,同時(shí)Spring 框架集成了對(duì) Hibernate 和其他 O/R mapping 數(shù)據(jù)訪問的解決方案,更是提供了對(duì) Struts 很好的支持,控制反轉(zhuǎn) (IoC)和面向方面編程( AOP)插件式架構(gòu)有效地降低了應(yīng)用程序各層的耦合度和應(yīng)用組件之間的依賴性。
數(shù)據(jù)持久層由Hibernate來實(shí)現(xiàn),應(yīng)用程序通過Hibernate提供的ORM工具進(jìn)行關(guān)系數(shù)據(jù)庫與對(duì)象關(guān)聯(lián)對(duì)數(shù)據(jù)庫進(jìn)行訪問,在對(duì)象和數(shù)據(jù)庫間傳遞數(shù)據(jù),并保持兩者與映射層本身相獨(dú)立。在Hibernate 技術(shù)的實(shí)施過程中,通過創(chuàng)建持久化對(duì)象,完成持久化對(duì)象與數(shù)據(jù)庫中表字段的對(duì)應(yīng)關(guān)系,編寫配置文件,完成與數(shù)據(jù)庫的連接操作及各種參數(shù)的配置,最終定義和實(shí)現(xiàn) DAO 接口,完成具體業(yè)務(wù)。
SQL Azure是由微軟 SQL Server 2008 為主,建構(gòu)在 Windows Azure 云端操作系統(tǒng)之上,執(zhí)行云端運(yùn)算的關(guān)系型數(shù)據(jù)庫服務(wù),是一種云存儲(chǔ)的實(shí)現(xiàn),具有高擴(kuò)展性和高可用性。SQL Azure 架構(gòu)在數(shù)據(jù)中心可分為三個(gè)部份:服務(wù)提供層(Service Layer)、平臺(tái)提供層(Platform Layer)、基礎(chǔ)設(shè)施層(Infrastructure Layer)。SQL Azure體系架構(gòu)如圖3所示。
1)服務(wù)提供層向用戶提供TDS(Tabular Data Stream)協(xié)議的訪問端口,用戶通過該協(xié)議訪問SQL Azure內(nèi)部的數(shù)據(jù)。此層還提供了流量計(jì)費(fèi)及用戶賬戶的配置服務(wù)。
2)平臺(tái)提供層由SQL Server Fabric、SQL Server實(shí)例和管理服務(wù)三部分組成。SQL Server Fabric是一個(gè)集成了網(wǎng)絡(luò)、服務(wù)器和存儲(chǔ)的分布式底層架構(gòu), 用于完成數(shù)據(jù)庫的自動(dòng)部署、備份、故障轉(zhuǎn)移和設(shè)置負(fù)載均衡。SQL Server實(shí)例代表了數(shù)據(jù)備份和底層的操作系統(tǒng)實(shí)例。SQL Azure 管理服務(wù)負(fù)責(zé)對(duì)每個(gè)數(shù)據(jù)庫間的數(shù)據(jù)復(fù)寫工作,保障 了SQL Azure 的基本高可用性要求。
3)基礎(chǔ)設(shè)施層提供了硬件支持和操作系統(tǒng),以及對(duì)服務(wù)層運(yùn)行時(shí)的服務(wù)管理。
圖3 SQL Azure體系架構(gòu)
4.1.1 系統(tǒng)總體E-R圖
根據(jù)功能設(shè)計(jì),規(guī)劃出的實(shí)體有:管理員實(shí)體、用戶實(shí)體、汽車信息實(shí)體、電池信息實(shí)體、故障信息實(shí)體、論壇實(shí)體、新聞公告實(shí)體等。
1)管理員實(shí)體屬性包括:管理員編號(hào)、管理員名稱、密碼、注冊(cè)時(shí)間、權(quán)限。
2)用戶實(shí)體屬性包括:用戶編號(hào)、用戶名、密碼、性別、聯(lián)系電話、身份證號(hào)、郵箱、注冊(cè)時(shí)間。
3)汽車信息實(shí)體屬性包括:編號(hào)、品牌、型號(hào)、廠商、出產(chǎn)年份、價(jià)格、產(chǎn)地、電動(dòng)機(jī)、保修期、圖片、添加時(shí)間、添加人。
4)電池信息實(shí)體屬性包括:編號(hào)、品牌、型號(hào)、廠商、出產(chǎn)年份、價(jià)格、產(chǎn)地、體積、重量、生命周期、充換電記錄、用戶名。
5)故障信息實(shí)體屬性包括:編號(hào)、管理員名稱、用戶名、電池故障、電機(jī)故障、控制系統(tǒng)故障、處理方法、添加時(shí)間。
6)論壇實(shí)體屬性包括:編號(hào)、管理員名稱、帖子名稱、帖子內(nèi)容、發(fā)帖時(shí)間、發(fā)帖人、回復(fù)。
7)新聞公告實(shí)體屬性包括:編號(hào)、管理員名稱、標(biāo)題名稱、內(nèi)容、圖片、發(fā)布時(shí)間、發(fā)布人。
利用VISIO畫出實(shí)體關(guān)系圖(E-R圖),如圖4所示。
圖4 系統(tǒng)總體E-R圖
4.1.2 創(chuàng)建數(shù)據(jù)庫、表結(jié)構(gòu)及相關(guān)索引
打開SQL Server Management Studio 2008 R2,輸入Transact-SQL代碼(代碼示例如圖5所示),即可完成EVMISDB數(shù)據(jù)庫及其中數(shù)據(jù)表的創(chuàng)建操作。接著完成創(chuàng)建相關(guān)(非)聚集索引等工作,最終得到“EVMISDB”數(shù)據(jù)庫及其數(shù)據(jù)表的樹形目錄結(jié)構(gòu),如圖6所示。
目前將數(shù)據(jù)遷移到云數(shù)據(jù)庫中仍然是一個(gè)具有挑戰(zhàn)性的問題,特別是一些包含海量數(shù)據(jù)的科學(xué)數(shù)據(jù)庫,可能無法直接遷移到云中。因此,需要研究向云數(shù)據(jù)庫中遷移數(shù)據(jù)的有效方法。
圖5 代碼示例
圖6 樹形目錄結(jié)構(gòu)
向SQL Azure云數(shù)據(jù)庫中遷移本地?cái)?shù)據(jù)庫,目前主要有以下三種方法或工具能夠?qū)崿F(xiàn):1)通過生成現(xiàn)有數(shù)據(jù)庫的DDL腳本及bcp實(shí)用工具將數(shù)據(jù)庫遷移到 SQL Azure;2)利用SQL Azure Sync或SQL Azure Migration Wizard等工具實(shí)現(xiàn)本地SQL Server與遠(yuǎn)端SQL Azure之間的數(shù)據(jù)同步;3)通過數(shù)據(jù)層應(yīng)用程序DAC(Data-tier Application),我們可以將SQL Server中的數(shù)據(jù)庫的Schema提取出來,并且可以方便地將Schema部署到SQL Azure上。然而,目前DAC只能提取和部署Schema,而不能提取、部署表中的數(shù)據(jù)行。
為了保持系統(tǒng)性能最優(yōu),數(shù)據(jù)遷移必須保證服務(wù)間斷時(shí)間盡可能短,上述方法在這點(diǎn)上仍有不足。而現(xiàn)在提出的數(shù)據(jù)庫之間的動(dòng)態(tài)數(shù)據(jù)遷移技術(shù),可以有效地支持云數(shù)據(jù)庫環(huán)境下的動(dòng)態(tài)負(fù)載均衡,實(shí)現(xiàn)資源再分配。
系統(tǒng)利用SQL Azure數(shù)據(jù)庫存儲(chǔ)數(shù)據(jù),采用J2EE技術(shù)架構(gòu)系統(tǒng)框架,縮短了開發(fā)周期,同時(shí)減少了投入成本,使系統(tǒng)具有良好的可移植性、靈活性,且易維護(hù)、易管理。通過該系統(tǒng),企業(yè)能及時(shí)、全面的了解電動(dòng)汽車的市場(chǎng)動(dòng)態(tài)及業(yè)務(wù)經(jīng)營(yíng)狀況,理解車主的真實(shí)想法和電動(dòng)汽車運(yùn)行的相關(guān)實(shí)況,為企業(yè)制定下一步策略提供明確方向,大大提高了企業(yè)的競(jìng)爭(zhēng)力。
[1] 姚震,解國(guó)林,李優(yōu)新,劉方銘,羅祖文,鄧先泉.電動(dòng)汽車監(jiān)控平臺(tái)的設(shè)計(jì)與開發(fā)[J].微計(jì)算機(jī)信息,2009,(20).
[2] 李小平,肖岳峰,宿元,宋瀚濤,姚永標(biāo).基于J2EE多層架構(gòu)的Web開發(fā)框架研究[J].計(jì)算機(jī)應(yīng)用研究,2008,(5).
[3] 王昊航.基于J2EE的電動(dòng)汽車運(yùn)營(yíng)支撐系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].北京郵電大學(xué),2011.
[4] 林子雨,賴永炫,林琛,謝怡,鄒權(quán).云數(shù)據(jù)庫研究[J].軟件學(xué)報(bào),2012,(5).
[5] 涂蘭敬.細(xì)數(shù)選擇云數(shù)據(jù)庫SQLAzure的六大理由[J].網(wǎng)絡(luò)與信息,2012,(6).
[6] 吳彥文,馮正西,康婷.面向PAAS模式的CSCL系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J]. 計(jì)算機(jī)工程與應(yīng)用,2013,(4).
[7] 李洋,孫永維,許冰,王英雙.基于Ajax,Struts,Hibernate和Spring的J2EE架構(gòu)[J].吉林大學(xué)學(xué)報(bào)(信息科學(xué)版),2011,(6).
[8] 鄧子云.貫通JavaWeb輕量級(jí)應(yīng)用開發(fā):JSP+Struts+Hibernate+Spring實(shí)例精解[M].北京:電子工業(yè)出版社,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.