【说明】 某信息技术公司计划开发一套在线投票系统,用于为市场调研、信息调查和销售反馈等业务提供服务。该系统计划通过大量宣传和奖品鼓励的方式快速积累用户,当用户规模扩大到一定程度时,开始联系相关企业提供信息服务,并按照信息服务种类和用户投票数量收取费用。 为了降低开发成本和提高开发效率,项目组经过讨论后决定采用轻量级Java EE开发框架设计系统应用架构。在应用架构设计中,除了满足系统主要功能需求,还需要考虑的因素包括: (1) 项目开发采用MySQL数据库存储数据,一但将来可能移植到其它数据库平台; (2) 系统开发过程中尽可能降低或者消除SQL语句开发的工作量; (3) 投票系统中数据之间的关系复杂,需要支持数据对象的聚合和继承等关系。
【问题:5.1】请用300以内文字说明什么是数据持久层,使用数据持久层能够为项目开发带来哪些好处?
答案:
数据持久层可以提高系统的复用性,灵活性,将一些数据持久化存储在我们需要的数据库,比如mysql,oracle等,使用数据持久层可以提升系统可靠性,开发项目更方便,不同项目之间可以访问同一个数据持久层,可以保证数据共享,提高开发效率和系统可修改性。
数据持久层采用的是分层思想,通过对象/关系映射策略与数据库访问,透明化给开发人员使用,简化开发人员的访问数据库工作,主要好处有:
(1)分离业务和数据库层的访问,解耦。
(2)通过对象/关系映射访问数据库。
(3)简化数据层访问,隐式数据库连接、数据库命令和事务管理。
【问题:5.2】针对在线投票系统的实际应用需求和要求,项目组应选用哪种技术实现数据持久层?请用200字以内文字说明其采用该技术的原因。
答案:
Hibernate和Mybatis都可以支持代码复用,但是Hibernate可以降低或者消除SQL语句开发的工作量,Hibernate支持移植到其他平台,支持多种类型数据库,Hibernate支持对象聚合和继承,mybatis不支持,Hibernate与该系统需要考虑的因素相吻合。
【问题:5.3】数据持久层是Web应用系统框架中重要的组成部分,主流的数据持久层技术分别基于不同的技术方案,请在表5-1中(1)-(4)处分别根据(a)~(d)所列技术的方案类别填入其序号。
(a) BMP, CMP (b) iBatis/MyBatis (c) SpringJdbcTemplate (d) TopLink,JDO,Hibernate
(1)C
(2)B
(3)A 答案:D
(4)D 答案:A
第4题
【说明】 某软件公司拟开发一套贸易综合管理系统,包括客户关系管理子系统和商品信息管理子系统两部分。客户关系管理子系统主要管理客户信息,并根据贸易业务需要频繁向客户发送相关的电子邮件、短信等提醒信息。商品信息管理子系统主要为客户提供商品信息在线查询功能,包括商品基本信息、实时库存与价格等。 在对系统进行数据架构设计时,公司项目组的架构师王工主张采用文件系统进行数据管理,原因是目前公司客户和商品数量不大,且系统功能较为简单,采用文件系统进行数据管理简单直观,开发周期短。架构师李工则建议采用关系数据库进行数据管理,原因在于公司目前正处在高速扩张期,虽然目前的客户和商品数量不大,但随着公司快速发展,需要管理的数据必然飞速膨胀,采用关系数据库作为数据存储层,系统的扩展性更强,并能够对未来可能增加的复杂业务提供有效支持。经过讨论,项目组初步采纳了李工的意见,决定采用关系数据库存储客户数据,并针对业务特征对系统性能进行优化。
【问题:4.1】请从设计难度、数据冗余程度、数据架构、应用扩展性等4个方面对关系型数据库管理系统和文件系统两种数据存储方式进行比较,填写表4-1中(1)~(4)。
(1)特定关系来设计难度较大
(2)没有特定规范,非结构化数据多,数据冗余较大
(3)以文件为中心组织、管理答案:以应用系统为中心,管理属于
(4)数据独立于应用系统,应用系统之间共享很容易
【问题:4.2】对系统的核心业务需求进行认真分析后,公司的资深架构师张工提出一种内存数据库和关系数据库的混合存储架构,其核心思想是将需要频繁读写的数据存入内存数据库,而将相对固定不变的数据存入关系数据库。请首先分析比较内存数据库和关系数据库在数据模型、读写性能、存储容量、可靠性等方面的差异,填写表4-2中(1)~(4)的空白,并根据张工的思路指定各种业务数据的存储方式,填写表4-3中(5)~(9)中的空白。
答案:
(1)非关系模式 答案:键值对,key-value
(2)磁盘I/O读写,性能相对较低
(3)基于内存存储,存储容量小
(4)恢复机制复杂,可靠性低
(5)内存数据库
(6)内存数据库
(7)关系数据库
(8)关系数据库 答案:内存
(9)关系数据库 答案:内存
解析:因为商品库存变动大,需要频繁修改,内存效率更高。所以采用内存数据库。
电子邮件和电话也频繁发送,所以内部数据库。
【问题:4.3】系统开发完成进行压力测试时,发现在较大数据量的情况下,部分业务查询响应时间过长,经过分析发现其主要原因是部分SQL查询语句效率低下。请判断表4-4中的SQL语句设计策略哪些可能会提升查询效率,哪些可能会降低查询效率,在(1)~(4)中填入“提升”或“降低”。
(1)提升
(2)降低
(3)降低
(4)提升
【问题:2.1】状态图和活动图是软件系统设计建模中常用的两种手段,请用200字以内文字简要说明状态图和活动图的含义及其区别。
答案:
状态图:表示对象被触发时候需要改变对象状态,强调单个对象。
活动图:强调整个系统,表示系统整个数据流如何流转。
答案:
状态图:描述一个对象生存期间动态行为,通常事件来触发这个对象的动作。
活动图:表示描述系统的工作流程和并发行为。活动图在一个活动结束会进入下一个活动。
状态图侧重描述行为的结果,活动图侧重描述行为和动作,活动图可以并发行为,状态图不可以。