Rumba RdbVersion(以下简称Rumba)是用于简化数据库初始化过程以及运维人员安装和升级数据库过程的项目,由李希明老师设计。
2016年7月发布1.0版本,
仅支持Mysql数据库
2017年4月7日发布1.5版本,支持Oracle数据库
2018年3月28日
发布1.6版本,加入Postgresql
开发背景
由于我们大数据团队是公司较早一批使用该数据库的开发团队,李老师便邀请我们加入Rumba的开发队伍,完成Postgresql工具集的开发。
开发前期
2018年2月初,针对Postgresql工具集具体的开发内容,我们和李老师做了详细的探讨。因为涉及的内容较多,我们前前后后进行了三次讨论才将第一版的开发内容确认。
这期间,李老师对我们所列的开发内容反复审查,确保每个细节都无误后才让我们开始开发。在他看来,开发前期必须先把需求及问题理清楚,这样才能提升开发效率以及减少开发过程中出现的错误。
“我们要指哪儿打哪儿,而不是打哪儿指哪儿”,这是他多次和我们说的一句话。
开发过程
Postgresql工具集的开发工作于2018年春节之后正式展开。由于大数据这边本身也有着比较繁重的开发任务,所以对于工具集的开发只能并行展开。然而,虽然计划得很周到,但实际开发过程却没有想象得那么顺风顺水。
存在的问题
时间有限
由于大数据团队原有的工作安排和进度,使得Postgresql工具集开发的优先级被排在了后面。因为时间有限,所以前期并没有花太多时间在工具集的开发上。
缺乏经验
之前大家没有接触过Rumba项目,所以工具集的开发并没有想象中那么简单,很多技术内容需要临时去学习掌握。
缺乏沟通
我们大数据团队的开发风格、规范与公司其他团队存在差异,初期我们在开发过程中没有及时与李老师沟通,导致开发过程中的许多技术细节都是自己摸索,或是凭着自己的猜测去做,从而产生了很多不规范的地方。
总而言之,在Postgresql工具集开发前期,无论是开发效率还是质量,效果都是不尽人意的。
而这一切的转折点发生于3月20日那天。
开发后期
时间转眼便来到3月20日,这天李老师通过qq询问我们工具集的开发进度如何。
我们如实汇报了工作情况:
工具集才开发了一部分,单元测试还没开始整......
我们将已经完成的部分发给李老师看后,他开门见山地说,Postgresql工具集的开发进度现在完成了几乎10%都不到,而Rumba1.6版本是打算这个月底上线的(这着实让我们吃了一惊,因为之前没想到要在这个月底上线)。
另外,对于项目的开发质量,李老师也指出了其中的很多不规范之处——既然这个工具集是要提供给外部使用的,那么质量一定要可靠,否则就是对产品和客户的不负责。
他希望我们能加快进度,同时有什么疑惑和困难及时提出,大家一起解决,争取在月底如期发布。
沟通过后,我们及时对后续的工作计划做出了调整。
加快进度
将Rumba项目的优先级排在第一位。
自我总结
对于我们开发中的某些不规范之处,通过李老师的口头表述及分析Mysql工具集的代码,总结出以下几个需要额外注意的事项:
1.
保持风格一致
对于每个存储过程名和参数名,风格尽量保持一致。
2.
预判操作
存储过程中对相应的操作预先进行判断,避免无意义的操作。例:对于修改列是否允许为空的操作,预先判断该列是否存在,若不存在则不进行该操作。
3.
统一获取schema
表所对应的schema不需要通过参数传入,统一使用数据库中自带的函数获取当前所在schema。
4.
提供测试用例
每项功能都要有对应的单元测试用例,且测试用例涵盖的点要全面。
5.
统一构造器
测试代码中的sql构造器建议统一使用SelectBuilder。
6.
注释详细
文档上的注释一定要详细,包括函数的作用以及适用范围,每个参数的含义。
幸运的是,此时我们大数据原有的开发任务已暂时告一段落,全体人员都全身心投入到Postgresql工具集的开发任务中来。
而且,此次我们一改之前的草率,先从文档和测试用例开始讨论,每一个开发细节和功能测试都研究通透,落实到位。凭借这样的开发态度,我们比计划提前一周完成了Postgresql工具集的开发工作,还在原有的开发任务上进行了拓展,针对性地加入了Postgresql额外的一些常用功能。
之后,为保证项目质量,我们又花2天时间做了一次完整的测试。
3月28日,在解决一些代码之外的文字细节以后,Postgresql工具集终于加入到Rumba1.6版本中如期发布了。
这次Postgresql工具集的开发可谓是道路曲折,不过好在劳有所获,圆满收官。
从此Rumba项目便多了一种数据库的支持。
对于会经常使用到Postgresql数据库的开发团队,我们希望你们能尝试着使用Postgresql工具集,因为这里面封装了许多数据库常用操作,它能使你们更简便、高效、安全地操作数据库。
后续我们会继续对Postgresql工具集加以完善,使它服务更稳定,功能更宽广。
最后,对于Rumba项目,我们希望集思广益,能有更多的小伙伴参与进来做出自己的贡献。
如果你熟悉其他数据库,或者对其中的某些功能有改进/补充,我们都欢迎你加入到Rumba的开发队伍中来,为该项目贡献自己的一份力量。
我们相信,若能集百家之长,众人之智,Rumba一定会越做越好!
工作流程
1
用开发文档列出要开发的内容
2
确定可以实施后,开放开发者权限
3
在公司git上将Rumba项目代码克隆到本地,在对应的模块(或是你自己新增的模块)进行开发
4
开发测试完成后,提交给李老师进行审查即可
文/时明
无
海鼎Fun
有料,有爱,有梦想
空·
领取专属 10元无门槛券
私享最新 技术干货