罗国富,段 瑞,刘小娟,杨文超
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.