数据架构设计是指设计和优化数据的逻辑和物理结构,从而有效的存储和管理数据,更好的满足应用的需求。
数据架构设计的基本思路大概是这样的,如图所示。
这个过程包括了需求分析,概念结构设计,逻辑结构设计,物理结构设计,数据库实施以及线上运行和维护,这六个阶段。
当然了,在开始之前,还可以做一些准备工作,比方说选定参加设计的人员,包括了系统分析人员、数据库设计人员,应用开发人员,数据库管理员以及用户代表等等。如果应用的功能比较复杂的话,还可以挑选好数据库设计的工具,从而提高数据库设计的质量,减少设计的工作量。数据设计工具推荐开源的PDMAN。当然了,如果项目比较简单的话,不用工具也是可以的。
准备工作完成后,下面再讲解下数据架构设计每一个阶段要做的工作。
需求分析阶段
需求分析阶段是整个设计过程的一个基础。需求分析做得是不是准确,是不是充分,决定了数据库设计的速度和质量。而且,在一些极端场景下,如果需求分析做得不好的话,可能会导致整个数据库设计的返工,甚至是重做。
需求分析阶段,是整个数据库设计里面最困难,也最耗时的一步。在互联网项目里面,我们的需求往往是非常不明确的,同时需求的变更又非常的快,这就导致需求分析更加困难了。所以可想而知,需求分析阶段的重要性。
为了更好地完成需求分析,一般可以分成四步进行,明确目标,调查需求,分析需求以及确认需求。
需求分析的目标是通过分析现实世界要处理的一个对象,比如组织机构(部门,企业等),并充分地了解原系统的工作情况,明确用户的各种需求,在此基础之上确定新系统的功能。通过调查我们应该会得到用户对数据的几点要求:
- 信息的要求,用户需要从数据库里面获得的信息的内容以及性质;
- 数据的要求,在数据库里面要存储哪些数据?
- 处理的要求,用户要完成数据处理的相关功能;
- 安全性要求
以上这是需求分析的目标,接下来再看一下如何调查用户需求。
- 调查组织机构的情况,包括了解这个组织的部门组成情况,各个部门的职责。了解这些是因为在进行数据库架构设计的时候,可能会涉及到多个部门的协作,因此,我们需要知道一次架构设计需要涉及到哪些部门?每个部门做什么的?
- 调查各个部门的业务活动,包括了解各个部门输入的是什么数据,输出的是什么数据,怎么样去加工数据的。输出数据的时候输出的格式是怎样的?这一步是调查的重点。
- 接着在熟悉业务活动的基础之上,协助用户明确对新系统的各种要求。包括信息要求,处理要求,安全性要求等。
- 确定新系统或者新业务的边界。但在这一步,会对前面调查的结果进行初步分析,确定哪些功能由计算机完成,哪些功能由人工去完成。那些计算机去完成的功能就是新系统应该去实现的功能了。在调查的过程中,我们可以根据不同的问题和条件去使用不同的调查方法。
常用的调查方法有以下几种:
- 开调查会,通过和用户座谈去了解业务活动的情况以及用户的需求;
- 跟班作业,通过亲身参加业务工作去了解业务的活动计划;
- 专人介绍,比方说请外部顾问,或者是询问熟悉这块业务的人;
- 调查问卷,设计调查表让用户去填写,如果调查表设计得比较合理的话,这种方式是非常有效的。而且成本很低;
- 查阅记录,就是查阅和原系统有关的一些数据记录,以此去了解用户的需求。
在调查业务需求的时候,我们需要同时采用多种方法,但是不管使用哪一种调查方法,都必须要有用户的积极参与和配合。用户的参与和配合是非常重要的,否则,很可能会偏离用户本身的需求。
在调查好用户的需求后,还需要进行进一步的分析,在众多的分析方法中,结构化分析方法(Structured Analysis,简称SA 法)是比较简单实用的,它采用自顶向下逐步分解的方式去分析系统,也就是先了解系统的整个情况是怎样的,然后再去逐步分析,逐步细化,了解系统的各方方面。当用户需求分析完成之后,我们还需要让用户确认需求,在这个阶段可以产生一个需求分析报告,并把这个报告提交给用户,从而获得用户的认可,再让用户慢慢去确认需求。在这里有一个比较规范的需求分析报告的模板,可以做一个参考(
https://wenku.baidu.com/view/f120aff2487302768e9951e79b89680202d86b87)
当然了,企业内部一般都会有自己的需求分析报告模板,所以实际项目中会使用企业内部的模板,另外需求分析报告是不拘泥于一种形式的,没必须要按部就班地完成这么一个文档,有的公司往往还直接输出一个PPT,PPT也非常的简单,有的企业输出只有几百个字的word描述,只要要讲清楚用户的需求就可以了,然后拉上用户去确认,这样也是完成了。
在需求分析阶段,还会产生一个数据字典,所谓数据字典是指有关数据的描述,通常认为数据字典就是数据的元数据,这个数据字典一般会在需求分析阶段建立出来。并且在数据库设计的过程中,不断地去修改完善。有关数据字典在百度百科有非常详细的描述(
https://baike.baidu.com/item/数据字典)。这里强烈建议大家去看一看,文中介绍了数据字典的数据项、数据结构,数据流程、数据存储以及处理过程这五个部分。其中数据项是数据的最小组成单位,若干个数据项就可以组成一个数据结构。数据流是数据结构在系统内部传输的路径。数据存储是指数据结构保存的地方,记录了数据流的来源或者是趋向的位置,最后,处理过程是数据的处理逻辑。
概念结构设计阶段
概念结构设计阶段是整个数据库设计的关键,它通过对用户的需求进行综合归纳和抽象,从而形成一个独立于具体数据库管理系统的概念模型,更加通俗一点的描述,就是把需求分析阶段得到的应用需求,抽象出一个概念模型。
逻辑结构设计阶段
逻辑结构设计是把概念结构转换为某个数据库管理系统所支持的数据模型,同时会做一些优化。
物理结构设计阶段
物理结构设计阶段,会为逻辑数据模型选择一个最合适的物理结构。
实施阶段
在实施阶段,研发人员可以根据逻辑设计和物理设计的结果,建立数据库,编写应用,组织数据入库并调试运行。
运行与维护阶段
最后是运行与维护阶段,那当应用调试成功之后,应用就可以发布到线上了。发布到线上,其实并不是终点,在数据库系统运行的过程中必须不断地进行评估,调整和修改,比方说当发现表结构设计不合理的时候,需要调整一下表结构。当发生性能瓶颈的时候,需要去建立合适的索引,这些都是运行与维护阶段要做的事情。
以上就是数据库架构设计的基本思路。在整个过程中,相对重要也是有难度的工作是概念结构设计,逻辑结构设计以及物理结构设计,都需要运用数据库的设计原则来完成。