2.3 当企业在招聘时,对数据库程序员通常有何要求?
下面来看看猎聘网给出的对Oracle DBA的招聘职位JD(Job Description,工作说明)。
岗位职责:
1)承担数据库逻辑结构设计、历史数据归档管理、数据库安装、调测、调优、日常维护、备份及恢复。
2)性能优化和数据库配置管理。
3)产品性能测试、分析和推动改善。
4)数据库技术支持。
5)数据架构研究工作。
职位要求:
1)具有3年以上的主流数据库开发经验,1年以上大型项目数据库架构设计及管理经验。
2)精通PostgreSQL数据库,熟悉Oracle、MySQL、SQL Server等主流数据库,熟悉数据存储、性能优化、数据挖掘及数据同步技术。
3)精通存储过程、函数。
4)具备通用数据库访问层逻辑代码封装能力。
5)精通数据建模技术,熟悉各种数据集成和数据迁移技术。
6)熟悉Linux/UNIX操作系统,具备TB级数据处理经验。
7)有OCP证书者优先。
8)具备良好的抽象思维,能理性地做出技术决策,具有风险控制意识。
下面再看看第二家公司的招聘MySQL职位JD。
工作职责:
1)负责线上、线下数据库环境的建设、迁移、维护。
2)负责数据库日常运行监控和性能调优。
3)负责预研新的数据库技术适应业务增长的需求。
4)建立数据库操作标准,开发数据库相关工具。
5)负责数据库方面技术难题的攻关。
岗位要求:
1)计算机及相关专业本科及以上学历,有大型互联网公司工作经验者优先。
2)5年以上分布式MySQL数据库系统的工作经验,精通/熟悉MySQL数据库的运行机制和体系架构。
3)精通/熟悉MySQL性能优化与调整,有大型分布式MySQL数据库系统的工作经验者优先。
4)较强基于RDBMS底层代码的优化和Debug经验。
5)对数据库系统中间件的开发,以及分布式环节运维工具有经验。
6)了解主流分布式存储产品,如Redis、Hbase、MongoDB等产品,并有应用、开发、运维等经验。
7)了解主流数据库,并对数据库安全有很强的经验。
8)有良好的沟通协调能力,有责任心,思维逻辑性强。
对DBA而言,掌握数据库的基本知识是必不可少的。从数据库的操作角度而言,SQL语句才是基础中的基础。DBA一方面要根据需求在数据库中实现某些功能,另一方面要指导非数据库专业人士在数据库中完成他们想要实现的功能,所以,关于数据库中很多细节性的东西都需要DBA去掌握。
另外,需要了解数据库架构方面的知识,掌握SQL底层的一些知识。例如,一般学过数据库的人都知道索引对提高查询性能十分重要,但却不知道过多的索引也会给数据的处理带来负担。如果不了解索引的内部实现机制以及SQL使用索引的原理,那么就无法合理地创建索引。
在实现了用户的需求后,接下来的工作就是维护。再好的数据库架构,也需要经常被维护和保养。例如,原来很有效的索引因为索引碎片的增多,读取的性能就会下降;因为业务的变化,有的索引被删除了,那么如何保证重要的数据不会丢失,敏感的数据不会被不该访问的人访问。这一系列的问题,除了要调查、分析,并制订出一套完整的方案外,还需要相关的知识来实施这套方案。日常维护的过程中会遇到非常多的问题,这些问题除了SQL的问题外,很多是跟系统或者网络相关的,甚至是程序中出现的问题需要调试。所以,对于一名优秀的DBA而言,操作系统、计算机网络与通信、程序设计语言等相关知识都需要有所涉猎。
为了管理好数据库,特别是管理好多台服务器,DBA有时也需要编写工具来辅助完成任务。所以,懂Shell或Python也是必不可少的。
通过上面的分析,可以得出DBA需要的技能如下:
1)数据库知识(熟练掌握),包括SQL语言、备份、恢复、管理、数据库结构知识、数据库运行原理。
2)至少熟练掌握一种数据库,了解其他数据库(有一定应用能力)。很少有不与其他类型数据库交互的数据库,如果只熟练掌握一种数据库,那么当需要与其他数据库交互时,就会无从下手。
3)综合能力(有一定的应用能力)。有一定的程序设计能力,包括操作系统、网络与安全等知识。