项目组数据库脚本的维护方案

背景

  • 版本发布密集,为满足客户和领导的要求,项目经理决定每周必须发布并上线一个版本。
  • 功能修改频繁,相应的表结构、表数据的变动也比较频繁。
  • 产品满足两种部署方案,一是总部部署,由项目组直接来维护,供内部客户使用;二是客户自行安装、升级和维护,项目组提供版本和技术支持。
  • 项目选型使用MySQL作为数据存储软件。

方案

针对现状,设计出数据库脚本的维护方案,脚本分为全量脚本和升级脚本两套。
全量脚本,包括

  • 表结构定义,包括表结构定义、列的索引定义。
  • 初始化数据,包括系统正常运行时需要的初始化数据。
  • 存储过程定义,包括系统运行时使用到的存储过程的集合。
  • 函数定义,包括系统运行时使用到的、自定义的MySQL

升级脚本,相比于全量脚本,升级脚本的构成相对简单一些,以天为单位来维护脚本,比如2015年8月10日脚本有变化,那么就创建一个脚本文件,名为2015-08-10.sql,这个文件里保存对原有数据库表对象进行增量修改的语句。

方案的问题

由于团队成员中以刚毕业、工作不满一年的新员工为主,前述方案在实际使用时遇到几个问题:

  • 全量脚本和升级脚本中,经常会出现不一致。比如升级脚本中增加了字段,但全量脚本中没有增加;全量脚本中增加字段时出现了重复增加,导致建失败,等等。
  • 数据库脚本中存在语法错误,比如语句末尾的“;”经常忘记增加,导致同一文件中后面的脚本执行失败。
  • 数据库脚本中存在乱码,比如书写脚本时经常忘记切换输入法,导致分号、逗号等是中文符号,执行时失败。
  • 数据库脚本缺少注释,尤其是升级脚本中缺少注释,更别提场景描述,测试人员验证升级脚本时需要大量时间来确认脚本使用的场景。
  • 升级脚本的场景存在设计遗漏,测试经常在版本临上线前突然发现脚本未能覆盖全部场景,此时往往需要安排脚本的开发人员及骨干开发放下手上的工作,临时救场。
  • 。。。

针对遇到的问题,项目组在例会上时安排骨干开发人员来讲解脚本的作用及开发说明,但收效不明显。脚本中依然不断出现各式的问题,导致日常特性测试、数据库对象升级测试、性能测试过程中,测试人员和骨干开发人员花费大量时间来排查此类错误,极大的降低了团队的效率,相应的团队自身也很疲惫。

解决方法

经过分析,前述问题主要分为几类:

  • 注释不足,比如注释不全,缺少场景说明等;
  • 脚本维护中的低级错误,比如遗漏、语法错误、非法字符等;
  • 场景设计遗漏,场景考虑不全面,导致脚本实现不合理,不满足业务需求。

解决方案如下:

  • 注释不足。项目组周例会上宣讲脚本的注释要求,并指定专人负责检查脚本的规范符合度,不合要求的脚本直接要求提交人修改,同时作为关键事件通报批评;
  • 脚本维护中的低级错误。由于脚本比较多,代码量比较大,靠人去对比不太现实,因此利用MySQL备份工具mysqldump的能力,开发脚本对比工具来完成数据库表定义差异的对比,简化了人的操作,降低了脚本检查的工作量,人只需要查看报告即可以找到脚本中存在的问题。项目组指定专人负责阅读工具输出的报告,当发现脚本存在低级错误时,则要求提交人修改,同时通报批评;
  • 场景设计遗漏。修改当前的Story开发流程,增加专门章节,要求开发人员务必分析当前待开发特性在生产环境上线时的数据库对象升级策略;Story评审时,本章节作为必须评审的主题,如果开发人员未准备或者准备不足,测试人员有权要求Story重新评审,项目经理将此事件作为关键事件记录,迭代总结或者项目总结时将有专门议题要求开发人员作出解释。

脚本对比工具的工作流程比较简单,如下:

  1. 导出生产环境的数据库表结构定义,R.sql。
  2. 本地的数据库。
  3. 创建本地数据库DB_upgrade。
  4. 打开DB_upgrade,导入R.sql,同时导入本周内,从周一到周六的升级脚本,如无则直接跳过。
  5. 导出DB_upgrade的表结构定义,upgrade.sql。
  6. 创建本地数据库DB_install。
  7. 打开DB_install,导入全量数据库脚本,包括表定义、索引定义。
  8. 导出DB_install的表结构定义,install.sql。
  9. 使用工具对比upgrade.sql和install.sql。

工具开发过程中应用到了mysqldump、mysql、msys、jrunscript。

  • mysqldump,MySQL数据库自带的备份工具,通过指定选项可以只导出表定义。
  • mysql,MySQL数据库自带的客户端软件,用于执行脚本。
  • msys,有了它就可以在windows环境直接运行shell脚本。
  • jrunscript,JDK1.6版本起自带的js执行器,1.8版本还可以执行其它类型的脚本。shell虽然强大,但仍然有些工作不太方便完成,此时即可编写js代码来访问JDK中的API完成那部分操作,同时不需要引入更多的jar,使用时相当方便。

欢迎访问Jackie的家,http://jackieathome.sinaapp.com/,如需转载文章,请注明出处。
### 回答1: 银行ETL项目的项目组岗位组成可能会因公司、项目规模和需求而有所不同。但是一般来说,以下是可能出现的一些岗位: 1. 项目经理:负责项目计划、进度、质量和预算管理,协调项目组内外资源,确保项目顺利完成。 2. 业务分析师:负责收集、分析和整理客户需求,撰写需求文档,与开发团队沟通需求,协助测试人员进行测试。 3. 数据架构师:负责设计数据仓架构、数据模型和ETL流程,协助开发团队实现数据仓和ETL系统。 4. ETL开发工程师:负责实现ETL过程,包括数据抽取、转换和加载等,编写ETL脚本和程序。 5. 数据库管理员:负责数据库的管理和维护,包括数据库的安装、配置、备份和恢复等操作。 6. 测试工程师:负责测试ETL系统的功能、性能、安全性等方面,编写测试用例,执行测试,发现并报告缺陷。 7. 运维工程师:负责ETL系统的部署和维护,包括系统的安装、配置、监控、故障排除和日常维护等操作。 以上仅是一些常见的岗位,实际情况可能会因公司和项目需求而有所不同。 ### 回答2: 银行ETL项目的项目组通常由多个不同职能的岗位组成,以确保项目的顺利实施和运营。下面是一个可能的银行ETL项目组的岗位组成。 1. 项目经理:负责项目的整体规划、组织和执行。他们协调项目各个方面的工作,确保项目按照计划进行,并与客户和团队之间进行有效的沟通。 2. 数据分析师:负责收集和分析银行的数据需求,并与业务部门合作,确定数据转换和提取的最佳方法。他们使用数据分析工具和技术,以确保项目的数据质量和准确性。 3. 数据架构师:负责设计和规划银行ETL系统的数据架构。他们与数据分析师和开发团队合作,确定系统的数据模型和存储结构,并确保系统的可伸缩性和性能。 4. ETL开发工程师:负责实施ETL(提取、转换和加载)过程,将银行的数据从不同的源系统抽取、转换和加载到目标系统中。他们使用ETL工具和脚本编程语言编写和执行数据转换规则。 5. 数据质量分析师:负责评估和改进银行数据的质量。他们通过数据清洗、验证和校验,识别和纠正数据问题,以确保数据的准确性和一致性。 6. 测试工程师:负责设计和执行测试计划,验证ETL过程的正确性和稳定性。他们使用测试工具和技术,模拟实际环境中的数据情况,发现和解决潜在的问题。 7. 数据治理专员:负责制定数据管理策略和规范,确保数据的合规性和安全性。他们与数据管理团队合作,制定数据备份、恢复和灾难恢复计划。 8. 运维工程师:负责银行ETL系统的日常维护和监测。他们确保系统的正常运行,处理和解决技术故障,并进行性能优化和容量规划。 这些岗位共同合作,以确保银行ETL项目的成功实施和持续运营。团队成员在各自的领域贡献自己的专业知识和技能,共同推动项目的进展,并达到项目的目标。 ### 回答3: 银行ETL项目的项目组通常由以下几个岗位组成: 1. 项目经理:负责整个项目的规划、执行和管理。项目经理负责与客户沟通,确定项目目标和需求,并组织团队完成任务。 2. 业务分析师:负责与客户沟通,了解客户的业务需求,并将其转化为可执行的技术方案。业务分析师负责编写需求文档并与开发团队合作,确保项目能够按照客户需求进行开发。 3. 数据架构师:负责设计ETL系统的数据架构,包括数据模型、数据流程和数据规范等。数据架构师需要根据项目需求和业务规则设计合适的数据结构和管理策略,以确保数据能够被有效地提取、转换和加载。 4. ETL开发工程师:负责根据数据架构和业务分析师提供的需求文档,开发ETL系统的各个组件,包括数据提取、数据转换和数据加载等。ETL开发工程师需要熟悉ETL工具和编程语言,能够按照需求设计和实现ETL流程。 5. 数据质量专员:负责监控数据质量,确保数据在提取、转换和加载过程中的准确性和完整性。数据质量专员需要制定数据质量标准和监控指标,并与开发团队合作,解决数据质量问题。 6. 测试工程师:负责对ETL系统进行功能和性能测试,以确保系统运行稳定并符合用户需求。测试工程师需要制定测试计划和测试用例,并与开发团队合作,改进系统的质量。 7. 项目支持人员:负责项目的支持和维护工作,包括系统部署、故障排除和用户培训等。项目支持人员需要了解系统的运行和使用情况,并及时响应用户的问题和需求。 以上是银行ETL项目组常见的岗位组成,各个岗位之间密切合作,共同完成项目的开发和实施。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小南家的青蛙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值