开发一个完整的数据库系统具体的流程是什么

发布网友 发布时间:2022-04-20 06:28

我来回答

2个回答

懂视网 时间:2022-04-08 23:18


草拟时间:2015.11.23
制订时间:
修订时间:

0x00 目的

本文定义了业务在开发上线发布过程中涉及的数据库相关流程,指引业务人员高效完成数据库上线工作,最终确保上线质量可控。

0x01 适用范围

人员:所有研发人员,运维人员
数据库:业务所有MySQL 数据库


0x02 流程说明 

流程内容包含:
数据库申请-->功能开发---功能与性能测试-->提交审核-->运维审核--->上线变更---验证---上线结束

1. 数据库服务申请

流程负责人员:业务开发人员

 自建MySQL新集群申请

主要活动:自建新集群涉及到新服务器申请,需要至少提前1个月与运维接口人进行沟通和申请

申请途径:方案确认后,开发人员 提交申请工单。

 

托管数据库新实例申请

  主要活动:托管数据库 新实例涉及到其他部门资源,业务需要提前一周与运维同学进行沟通

  申请途径: 
 申请模板:
1.业务名称
2.需求背景
3.预估容量大小
4.数据清理规则
5.主要接口人员
6.实例名称与字符编码(默认utf8)

 

 新库,表申请和说明

  主要活动:新库表创建申请
 申请途径:确认DB服务器信息后,提交工单申请。 
 申请模板:
1.数据库IP和端口
2.业务名称与需求背景
3.库表信息简要描述说明

    
2. 数据库功能开发

流程负责人员:业务开发人员

主要活动: 业务开发必须在开发或测试环境数据库完成SQL脚本功能性开发,库表字段名尽可能做到见名知意,添加必要的备注信息。

 

3.功能与性能测试

流程负责人员:业务开发和测试人员

 主要活动: SQL脚本必须在测试环境数据库完成功能性和性能测试,对于可能查询频繁的字段创建好必要的索引。

 

4.提交数据库变更申请

流程负责人员:业务开发和测试人员

 主要活动:
      业务上线涉及数据库sql经测试环境功能和性能测试通过后,开发人员在工单系统进行提单,进行数据库发布操作申请。
      临时型数据库sql需求,涉及百万以上记录表批量数据只读(select)查询,需要开发人员内部double check并知会到运维人员,无需提交申请单。
      涉及到数据变更的需求,需要提交变更需求,走数据库变更流程。

  申请途径:

    库表结构修改的需求需提前一天或者选择一个访问量小的时候,全部放到上线时候处理,会对上线过程造成影响。
     提交变更语句。


5.运维审核

流程负责人员:业务运维人员

 主要活动:运维人员收到数据库变更工单后,第一时间对变更单内容进行审核,审核通过即可配合进行变更操作,审核不通过需打回进行内容修改,重新提单。
   运维审核阶段,运维人员需要关注表字段命名是否合理,是否能根据名称确定表的含义与用途:
1.sql语法是否存在错误
2.表是否创建主键,是否创建索引
3.update,delete等修改数据的条件是否合理
4.帐号申请的操作权限是否是必要的,比如drop,alter,delete权限。
5.insert,update,alter等语句是否合理,针对一个表的表结构修改操作在一个语句中完成,数据update和delete是否有where判断条件。

6.上线变更

流程负责人员:业务运维人员

要求上线申请提交的sql命令或文件明确指定操作的数据库和表以及编码。

 

7.验证

流程负责人员:流程涉及的所有人员

  主要活动:运维上线变更完毕后,由运维人员进行初步确认,由开发,测试人员进行二次变更确认。


8.上线结束

流程负责人员:业务运维和需求发起人员

 主要活动:变更确认通过后,运维人员 结单操作,需求发起人知会提单人本次数据库功能上线流程结束。


0x03 违反流程行为的处理


1.违反流程行为:

1.未按照流程进行变更
2.非授权行为进行变更

2.违反流程行为处罚:

对于违反数据库开发上线流程行为未造成影响的,QA记录过程偏离。

对于违反数据库开发上线流程行为并造成一定影响的,记录线上问题单并持续跟踪。

对于违反数据库开发上线流程行为并造成明显影响的,按照公司BG及部门相关处罚规定处理。


0x04 修订与发布


1.修订

通过与业务方人员沟通对数据库上线流程进行草拟修订。

2.发布

流程内容修订后,发布最新内容及变更内容邮件通知全体研发人员。


0x05 其他


业务功能变更涉及sql:
1.业务中sql语句由开发和测试人员在开发测试阶段把控,本文不涉及相关流程。
2.核心业务 系统重大版本变更,概设文档需要含数据库设计通知到运维人员
2. 变更SQL需要在测试结束提交给运维人员确认变更时间和审核内容。


可裁剪情况说明

1.已存在数据库配置时无需申请环节
2.开发测试环节在业务进度较紧张时可以同时进行
3.审核和变更环节在操作上可以合并进行
4.变更范围较小,数据少时验证通过,无需对外通知。
5.非核心DB部分操作,可根据紧急程度进行先操作后补单流程。


业务数据库开发上线流程v1.0

标签:数据库开发   数据库服务   

热心网友 时间:2022-04-08 20:26

一:表中应该避免可为空的列;二:表不应该有重复的值或者列;三: 表中记录应该有一个唯一的标识符   在数据库表设计的时候,数据库管理员应该养成一个好习惯,用一个ID号来 唯一的标识行记录,而不要通过名字、编号等字段来对纪录进行区分。每个表都应该有一个ID列,任何两个记录都不可以共享同一个ID值。另外,这个ID值最 好有数据库来进行自动管理,而不要把这个任务给前台应用程序。否则的话,很容易产生ID值不统一的情况。  另外,在数据库设计的时候,最好还能 够加入行号。如在销售订单管理中,ID号是用户不能够维护的。但是,行号用户就可以维护。如在销售订单的行中,用户可以通过调整行号的大小来对订单行进行 排序。通常情况下,ID列是以1为单位递进的。但是,行号就要以10为单位累进。如此,正常情况下,行号就以10、20、30依次扩展下去。若此时用户需 要把行号为30的纪录调到第一行显示。此时,用户在不能够更改ID列的情况下,可以更改行号来实现。如可以把行号改为1,在排序时就可以按行号来进行排 序。如此的话,原来行号为30的纪录现在行号变为了1,就可以在第一行中显示。这是在实际应用程序设计中对ID列的一个有效补充。这个内容在教科书上是没 有的。需要在实际应用程序设计中,才会掌握到这个技巧。四:数据库对象要有统一的前缀名   一个比较复杂的应用系统,其对应的数据库表往往以千计。若让数据库管理员看到对象名就了解这个数据库对象所起的作用,恐怕会比较困难。而且在数据库对象引用的时候,数据库管理员也会为不能迅速找到所需要的数据库对象而头疼。   为此,笔者建立,在开发数据库之前,最好能够花一定的时间,去制定一个数据库对象的前缀命名规范。如笔者在数据库设计时,喜欢跟前台应用程序协商,确定 合理的命名规范。笔者最常用的是根据前台应用程序的模块来定义后台数据库对象前缀名。如跟物料管理模块相关的表可以用M为前缀;而以订单管理相关的,则可 以利用C作为前缀。具体采用什么前缀可以以用户的爱好而定义。但是,需要注意的是,这个命名规范应该在数据库管理员与前台应用程序开发者之间达成共识,并 且严格按照这个命名规范来定义对象名。  其次,表、视图、函数等最好也有统一的前缀。如视图可以用V为前缀,而函数则可以利用F为前缀。如此数据库管理员无论是在日常管理还是对象引用的时候,都能够在最短的时间内找到自己所需要的对象。五:尽量只存储单一实体类型的数据   这里将的实体类型跟数据类型不是一回事,要注意区分。这里讲的实体类型 是指所需要描述对象的本身。笔者举一个例子,估计大家就可以明白其中的内容了。如现在有一个图书馆里系统,有图书基本信息、作者信息两个实体对象。若用户 要把这两个实体对象信息放在同一张表中也是可以的。如可以把表设计成图书名字、图书作者等等。可是如此设计的话,会给后续的维护带来不少的麻烦。   如当后续有图书出版时,则需要为每次出版的图书增加作者信息,这无疑会增加额外的存储空间,也会增加记录的长度。而且若作者的情况有所改变,如住址改变 了以后,则还需要去更改每本书的记录。若这个作者的图书从数据库中全部删除之后,这个作者的信息也就荡然无存了。很明显,这不符合数据库设计规范化的需 求。  遇到这种情况时,笔者建议可以把上面这张表分解成三种的表,分别为图书基本信息表、作者基本信息表、图书与作者对应表等等。如此设计以后,以上遇到的所有问题就都引刃而解了。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com