
资料库开发工程师
资料库开发工程师(Database Developer)是从事资料库管理系统(DBMS)和资料库套用软体设计研发的相关工作人员的统称,他属于软体研发工程师,但又有一部分运维工作的内容。他主要从事软体研发的工作,但同时也要参与资料库生产环境的问题最佳化和解决。
资料库开发工程师与传统的资料库管理员(简称DBA,也称为资料库工程师)是不同的职位。传统的DBA主要属于运维职位,而资料库开发工程师则属于软体研发职位。但二者也有部分工作内容重合,比如都要跟进资料库生产环境出现的故障问题,其中DBA主要负责故障处理,而资料库开发工程师主要跟进自己开发的系统模组出现的bug或性能问题。
根据研发的内容不同,资料库开发工程师可以分为两大发展方向:资料库核心研发和资料库套用软体研发:
a) 资料库核心研发:主要负责设计和研发资料库管理系统,重点关注的是资料库管理系统内部架构的设计和实现,比如MySQL分支的开发、Oracle 10g新特性开发等;
b) 资料库套用软体研发:主要负责设计和研发资料库管理系统衍生的各种套用软体产品,重点关注的是资料库外部套用软体产品架构的设计和实现,比如分散式资料库、资料库中间件等。
基本介绍
- 中文名:资料库开发工程师
- 外文名:Database Developer
- 技能:资料库、软体研发
- 相关词条:资料库管理员、软体研发工程师
主要职责
- 深入研究资料库核心相关技术,设计并实现资料库管理系统
- 深入了解资料库套用的业务需求,主导设计不同资料库架构的套用软体,并持续最佳化
- 根据业务需求设计资料库逻辑和物理模型, 开发资料库生产环境所需要的存储过程、函式、脚本等
- 参与资料库生产环境的问题最佳化和解决
- 探索、研究新的资料库架构发展方向
工作内容
资料库开发工程师的日常工作是设计、开发资料库系统和资料库套用软体,因此与软体研发的过程一样,会覆盖需求、设计、编程和测试四个阶段:
- 需求:深入调研用户市场需求,认清项目的套用场景,解决的问题,性能指标等,需要与资料库系统使用方反覆沟通,确定具体的需求。
- 设计:根据收集整理的需求文档设计资料库系统软体的模型和架构,划分模组分别进行概要和详细设计。
- 编程:按照模组分工和设计文档,进行编码和调试。
- 测试:将开发完成的资料库系统交给测试人员进行测试,主要使用的测试方法有黑盒测试、白盒测试、压力测试、性能测试等,测试全部通过后即可等待发布。
当资料库系统软体完成发布后,资料库开发工程师还需要跟进具体的生产环境使用情况,参与具体问题的改进和最佳化,提供解决方案。
技能要求
1. 通用基础技能要求
1)精通一种常用程式语言(C/C++、JAVA、PHP等),了解主流的框架、库使用和原理
2)深入了解计算机数据结构和算法设计,具备Linux作业系统基础知识
3)掌握基本的网路编程知识,熟悉多执行绪编程及其技巧
4)熟练掌握Linux、web server、资料库、快取相关技术的使用,了解内部实现机制为最优
5)掌握资料库基本原理和知识,熟悉SQL语法规则和特点
6)有开源资料库(MySQL、PostgreSQL等)研究和开发经验
2. 高阶要求
1)熟练掌握分散式系统理论并有着大量实践
2)开源社区成员,为开源软体提交过patch
3)精通Linux系统IO、锁等调优技术
3. 软素质要求
1)有良好的英语阅读能力,能够阅读英文资料
2)自我驱动,主动的学习能力和较强的动手能力
3)工作认真细緻,有责任心,勤奋踏实,善于思考问题
4)有时间观念,独立性强,沟通能力好,具有团队合作精神
职业发展
1. 人才来源
资料库开发工程师的人才来源可以分为2个方面:应届毕业生和社招。
1)应届毕业生:对于应届毕业生来说,要想成长为资料库开发工程师需要具备一些软体研发方面的技能,同时对资料库理论基础有一定了解,对于资料库管理系统有一些实践经验,再加上较好的主动性、工作认真细緻、具有团队合作精神即可;
2)社招:社会招聘主要可以从软体研发和DBA两个方面来筛选人才。对于之前从事大型分散式软体系统研发的工程师,比较容易转型为资料库开发工程师,只需要熟悉一些资料库架构和理论基础即可。而对于DBA来说,已经拥有大量的资料库运维经验,对于资料库研发工作非常有帮助,此时再需要掌握一定的代码编写能力和分散式计算的基础,即可转型成为资料库开发工程师。
2. 职业发展方向
资料库开发工程师的职业发展主要分为两条线:技术方向和管理方向。
1)技术方向:根据研究领域的不同,主要分为资料库架构师和资料库运维技术专家两个方向。
- 资料库架构师:熟练掌握各种资料库管理系统的架构和内部原理,能够根据实际业务需求,设计出不同的资料库套用系统架构,并在业务高速发展时,提供资料库模型设计的最佳化建议和解决方案
- 资料库运维技术专家:这个发展路线与高阶DBA的发展路线比较相似。当资料库开发工程师在跟进和解决资料库生产环境问题的过程中,积累了大量的运维经验,熟练掌握了大量先进的资料库运维技术,比如分散式部署、性能监控、弹性扩容等,可以成长为资料库运维技术专家,为各产品提供资料库架构设计和最佳化建议。
2)管理方向:从资料库开发工程师开始持续发展,积累了一定技术深度,并且通过与业务部门互动沟通锻鍊了较强的协调和推进能力,可以转型为管理岗位。管理岗位的常见发展路径包括经理、总监、CTO、CEO等,往往在小型创业公司管理岗位发展迅速,在中大型公司的发展速度相对较慢。
3. 职业发展路径
资料库开发工程师的常见职业发展路径如下图,供参考:

行业竞争力
1. 薪酬竞争力
1)横向对比:资料库开发工程师属于专项领域的高质量技术人才,市场需求旺盛,薪酬竞争力较高,往往高于软体研发工程师
2)纵向对比:随着经验和技术深度的积累,越资深的研发工程师往往越值钱。但是公司规模不同,薪酬往往差别较大。由于小公司在资料库研发领域起步晚,需求低,因此中小公司的薪酬往往略低于BAT等大型公司。
3)第三方薪酬调查报告:
《2013年资料库工程师薪酬调查报告》
《Database Developer Salary》
2. 市场需求
1)资料库研发行业的市场价值:参考ITOM(IT Operation Management) 2013年的市场规模是190亿美金
2)人员需求:中大型公司尤其紧缺,初创公司需求量较低
3. 技术能力
1)资料库开发工程可以接触到最前沿的资料库系统,目前业界比较流行的资料库系统主要分为关係型的和非关係型的,这些资料库都成为当前国内外大型公司的底层存储系统。
关係型资料库:MySQL、Oracle、SQL Server、IBM DB2
非关係型资料库(NoSQL):Redis、MongoDB、HBase、Cassandra
2)根据不同套用场景,资料库架构又可以分为单机资料库、集群式资料库、分散式资料库和云资料库等。由于经验的不同,资料库开发工程熟练掌握的资料库架构往往不同,越高阶的资料库开发工程掌握和了解业界的资料库架构前沿知识越丰富。