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