大型项目中如何开展数据库设计工作

上传人:简****9 文档编号:95500004 上传时间:2019-08-19 格式:DOC 页数:18 大小:205KB
返回 下载 相关 举报
大型项目中如何开展数据库设计工作_第1页
第1页 / 共18页
大型项目中如何开展数据库设计工作_第2页
第2页 / 共18页
大型项目中如何开展数据库设计工作_第3页
第3页 / 共18页
大型项目中如何开展数据库设计工作_第4页
第4页 / 共18页
大型项目中如何开展数据库设计工作_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《大型项目中如何开展数据库设计工作》由会员分享,可在线阅读,更多相关《大型项目中如何开展数据库设计工作(18页珍藏版)》请在金锄头文库上搜索。

1、大型项目中如何开展数据库设计工作本文基于我在上海证券交易所第三代监察系统项目的实践描述如何在大型项目中开展数据库设计工作,本文避免过多的描述具体实现的技术细节,侧重于从软件工程角度描述数据库设计的整体流程以及项目各个阶段的工作侧重点。1. 开展数据库设计工作所需条件对于基于数据信息处理的大型行业解决方案项目来说,数据库设计是整个系统设计工作中最为重要、最为基础的环节之一,具备什么样的条件才能顺利开展数据库设计工作呢?本章主要从资源配置角度描述如何确保数据库设计工作能够顺利进行。1.1. 独立的数据库设计小组对于一个软件合同额数千万,前后参与项目的人员数量数百人的大型软件工程项目来说,项目管理的

2、重要程度要远比几十个人月、几个人完成的小项目要重要的多,而成功进行项目管理的基础之一便是完备的组织机构。对于一个基于数据处理的大型核心业务应用系统来说,数据库设计是整个应用系统实现的基础,可以说其设计质量的好坏直接影响到整个项目的成败,应当有专门的组织机构负责其设计。教训:在3GSS项目中数据库规划组成立时间过晚,只是在开发工作过半的时候才组建起来,在这之前我个人也是在需求工作、架构工作都已基本结束的时间点进入项目组,这对于顺利的进行数据库设计造成了很大的困难。1.1.1 职责数据库设计小组的职责主要体现在以下方面:l 参与项目总体架构设计,对于涉及到数据库应用的架构问题主要负责。l 保证在项

3、目进行过程中数据库设计的稳定,为各个应用子系统的开发提供稳定的数据平台,从而保证项目计划的正常执行。l 在数据库性能优化工作起到主导作用,并对数据库性能优化的结果负责。l 对于数据库版本的管理和发布以及变更负责。l 做好需求与开发之间的桥梁。1.1.2 在项目组中的地位和作用数据库设计小组在整个项目组的组织机构配置中应当与架构组、需求组、测试组等平级,直接对项目组PM、PSM负责,因为数据库设计的工作需要各个小组的积极配合才能够顺利完成,所以项目小组之间的沟通协调工作显得尤其重要,如果不能做到从组织机构上将数据库设计小组提到项目组中一个相对较高的位置上,那么在一个大型项目组中,沟通协调工作将会

4、很难进行。教训:3GSS项目中,数据库规划组在项目进入到编码阶段之前并没有单独独立出来,只是隶属于核心预警系统组,因此在与其他组的沟通协调方面增加了一定的困难。1.2. 如何组建数据库设计小组描述数据库设计小组的组建过程和资源角色配置。1.2.1. 角色配置一个数据库设计小组主要应当包括以下角色:角色名称职责组长对数据库设计工作负全责数据库架构师负责搭建数据库系统环境,对于数据库硬件选型方案、数据存储方案、数据备份恢复方案、数据库物理设计以及整体性能优化工作负责数据建模员从需求入手对各个子系统进行数据建模工作,由浅入深得出各个子系统的数据库逻辑模型版本控制员负责控制数据库设计的版本技术咨询师负

5、责对数据库设计工作中遇到的具体技术难题进行咨询,协助进行相关工作1.2.2. 资源使用可以这样说,数据库设计工作没有太多的开发工作量,但是对人员素质的要求很高,因此数据库设计小组的组建要按照“外科手术”的标准进行,贵在精而不在多:角色名称所需技能使用情况组长1、 丰富的数据库设计项目实践经验2、 较强的沟通协调、组织能力1人,专职使用数据库架构师1、 丰富的数据库架构经验2、 良好的问题分析、解决能力2-3人,确保1人专职使用数据建模员1、 较强的业务理解能力2、 较强的沟通能力3、 熟悉数据库逻辑设计的基本方法原则上在需求分析阶段应当每一个子系统设置一名数据建模员,数据库逻辑设计结束后可以释

6、放一部分人员,但应当保证2-3人专职使用,负责维护数据库逻辑设计版本控制员1、 具有严谨的工作态度2、 良好的沟通协调能力1人,专职使用技术咨询师1、 数据库应用技术方面的技术专家2、 良好的沟通能力若干,兼职使用,这些人员都属于公司一级的技术专家,不可能长时间驻场,在使用上应当事先作出计划,提前向上级组织提出申请1.3. 硬件资源数据库设计工作顺利开展的一个重要条件是拥有既定硬件方案所规定型号的主机以及配套的存储设备,并且网络通讯能力要和真实上线条件一致,总之数据库设计工作需要一整套真实上线环境下的硬件设备,这不仅仅是数据库设计的需要,同时也是整个项目开发工作的一个重要基础条件,因为没有经过

7、真实上线环境的检验,谁也不敢说我们用PC机和低档服务器开发出来的系统能否在上线的时候稳定运行。必需要保证在编码工作开始前准备好硬件方案所规定型号的主机以及配套的存储设备。教训:3GSS项目在7月进入开发编码阶段,而硬件环境直到9月份才到位,在这之前我们只能使用PC机来作数据库服务器,根本没有办法模拟大数据量存储,致使数据库物理设计的优化调整只能延后,如果我们能够在这宝贵的2个月时间内仔细验证、优化我们的数据库物理设计方案,我们完全可以规避很多实现风险,也不会造成后来开发阶段数据库存储性能的瓶颈问题。1.4. 设计工具工欲善其事,必先利其器,现在有很多数据库设计工具可供选择,3GSS项目选择Sy

8、base公司的PowerDesigner9.5作为设计工具,我认为这个工具主要有以下好处:1、 可以方便地进行数据库的物理设计、逻辑设计2、 有很强的文档生成能力,可以定制生成各种数据库设计文档3、 拥有数据库反向工程能力2. 数据库设计工作的流程与方法首先提出一个问题:在一个项目中数据库设计工作什么时候开始启动?什么时候结束?我认为,从需求工作启动的那一刻起,数据库设计工作就正式开始了,直到项目交付完毕、正式上线运行方才告一段落!其中工作重心主要放在需求阶段、架构设计阶段、详细设计阶段。2.1. 需求阶段数据库的设计,特别是大型核心业务应用系统的数据库设计,远非建几张数据库表那么简单,在数据

9、库设计工作的初时阶段,就其本质来讲,是对客户核心业务的一次数据建模,出色完成该阶段数据库设计任务的关键条件是对用户核心业务的业务模式、处理流程、数据构成充分理解,可以说在这一阶段的数据库设计工作中,并没有涉及多少数据库技术方面的工作,更多的工作集中在对于客户核心业务的理解和学习上,为在后续阶段对数据库进行逻辑设计打好基础。而在这一方面,无疑需求组的同事是处于主导地位的,我们必须和需求组的同事合作,获取它们的帮助,同时,我们的参与也会促进需求组的同事进一步和客户沟通、明确很多业务方面的细节问题,从某种意义上讲也是间接推动了客户需求的细化工作。数据库设计小组需要在需求阶段投入最大的精力和资源。这一

10、阶段数据库设计小组(以数据建模员为主)主要从事以下方面的工作:l 对于客户需求的分析、理解、细化有人可能会说:这是需求组来作的事,干吗让我来做?这种观点是不正确的,因为需求人员的工作是站在偏业务的方面与客户进行沟通,而数据库设计人员是站在设计实现的角度去作,可以说数据库设计人员对于客户的数据需求比需求组的同事更加敏锐。这段时间的工作是数据库设计工作中最困难也是最重要的工作,因为对于客户业务需求的理解是整个数据库设计工作的基础,磨刀不误砍柴工,在需求阶段将客户业务需求理解透彻将会在后续的设计工作中节省大量的时间。l 数据概念模型建模在对客户的需求用例有了比较透彻的理解之后,就应当着手针对需求用例

11、进行数据抽象,得出初步的数据流图、E_R模型、数据字典。主要应当考虑以下方面的内容:1、 创建数据字典和E_R模型图表。E_R模型图表和数据字典可以让任何了解数据库的人都明确如何从数据库中获得数据。ER图对表明表之间关系很有用,而数据字典则说明了每个字段的用途以及任何可能存在的别名。对后续开发SQL来说这是完全必要的。2、 确定数据依赖,识别数据实体之间的关系,对数据实体间的关系作规范化处理。数据库实体之间关系规范化的范式有很多专门的技术文档可供参考,这里不加详细描述,但是需要指出一点,在实际项目实践过程中,并不一定完全按照范式的要求实现就是最好的设计,需要根据实际情况适当的作出一定的逆范式设

12、计。例如,一个股票订单信息的数据实体,包括投资者帐号、投资者名称等投资人信息;订单号、交易价格、交易数量等交易信息;按照标准的范式设计应当将该数据模型划分为两个实体,既主从关系的投资人实体和交易信息实体,使用订单号关联,但是实际情况是,每日的订单信息数量达到了5000万笔,而投资人信息也将达到8000万条,如果仍然按照范式设计,那么在查询订单信息时将会人为的在两张超大表之间进行关联,那将严重影响查询速度,所以只能反规范化,将投资人信息和交易信息融合在一个数据实体中。3、 对数据概念模型进行优化调整。针对数据库概念模型中的不足和缺陷,要及时作出修正和调整,在这期间要与需求组的同事配合,充分和客户

13、沟通,数据库设计的调整在概念模型上进行调整代价是最小的。4、 制定数据对象命名规范。对于一个大型行业业务解决方案来说,需要建模的数据项可能会有成千上万个,如果没有一个统一的命名规范将会给后续的设计开发工作造成不必要的麻烦。这一工作一般由数据库设计小组组长完成,完成后要经过项目组一级的评审。经验:在概念模型的建立过程中,对于那些有着明确数据接口格式定义的外部输入数据,建模工作相对容易一些,对于用户需求用例中数据的流转过程建模,从而得出数据流图相对来说要困难一些,数据建模员切忌只看输入输出,不看数据流转、处理过程。数据的流转处理过程是建立数据库概念模型的重要依据,我们只有搞清楚了数据是如何流转的,

14、如何被使用的才能够设计出尽可能贴近客户业务需求的数据模型。l 做好需求与开发之间的桥梁。为什么呢?因为数据库作为整个应用系统的运行基础,可以说整个系统的设计工作都将或多或少的与数据库系统的设计工作产生交叉,而数据库设计人员出于完成数据库逻辑设计的目的,必须对整个项目的需求用例以及业务背景有着全面的了解和掌握,可以这么说,在整个项目组中,只有数据库设计人员才能站在开发设计角度掌握整个系统完整的需求细节,可以说数据库设计人员在以后的设计、开发阶段是一个宝贵的资源,数据库设计人员应当对应用系统的设计人员提供咨询上的帮助,并且对应用系统设计进行评审,确定其设计是否与数据库设计相契合。2.2. 系统架构

15、阶段在系统架构阶段,数据库设计小组的主要工作是:l 确定数据库服务器所使用的硬件配置方案这项工作需要数据库设计小组和系统集成组的同事合作完成,数据库设计小组主要从客户对于数据库的性能指标入手,得出对于数据库服务器的硬件要求,系统集成组的同事负责具体的硬件选型。在确定硬件配置方案的时候,数据库设计小组主要从以下几个方面入手:1、 满足数据的存储容量需求。以需求阶段所得出的数据库概念模型和数据字典为基础,按照客户给出的未来一段时间内业务数据的增长速度预估出数据存储空间,在这里应当注意:需要为索引预留出存储空间,一般经验性的做法,索引的存储空间与数据存储空间按照1:1来预估。2、 满足数据库交易处理能力的需求。我们要考虑高峰时的处理器的能力,并适当保留一些缓冲,确保在业务增长时,系统有扩展的余地。如果要保持快速的响应能力,应当为CPU保留20%至40%的富余量。要为运行在此服务器的所有应用软件考虑内存,所需要的内存主要依赖于用户数、应用程序类型、进程的方式、和应用程序处理的数据量决定。在评估数据库服务器性能时,最困难的事情是如何把握准确度问题,到底考虑哪些因素等。理想情况下,应考虑下列要素: 交易的复杂性 交易频率 数据读/写比例 并发连接数目 并发交易数目 数据库最大表的大小 性能度量的目标教训:在3GSS项目架构设计阶段硬件方案选

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号