长沙尚学堂|十年树人|成就高薪
致力推动IT教育,我们正在行动    咨询热线:0731-83072091

一文读懂大数据库程序员求职就业那些事儿

时间:2018-08-10 15:41:51   来源:长沙尚学堂   阅读:

1当前市场对于数据库程序员的需求如何?待遇如何?

 

数据库开发人员和维护人员在市场上一直都是急缺人才。

如果想往DBA这个方向发展,那么Oracle、MySQL、DB2或非关系型数据库(如MongoDB)都可以。在Oracle收购MySQL后,MySQL的发展势头也不错,大公司也都在将部分数据库往MySQL迁移,例如阿里巴巴、盛大网络等等公司的部分数据库,很多都使用的是MySQL数据库。所以,市场上也有很大一部分的MySQL DBA的需求。Oracle自然就不用说了,关系型数据库中的老大,大部分有实力的公司使用的都是Oracle或者DB2与MySQL的结合。如果都使用Oracle,则成本太高,使用DB2一般都能享受到IBM提供的一条龙服务,从服务器到数据库再到数据库管理软件,DB2大部分都应用于金融领域。SQL Server的使用者相对较少,主要因为微软的软件对平台依赖性比较大,发展受到了限制。不过现在微软在开发基于Linux平台的SQL Server。如果只是想了解数据库的简单操作,那么可以从事数据库的开发工作。

小公司数据量有限,使用SQL Server数据库就可以满足日常的需求,但SQL Server的可移植性差,且相比DB2和Oracle,数据处理功能较差。其实,公司使用什么数据库需要看公司的性质,金融行业的公司或大企业、巨型企业、银行等肯定首选DB2或Oracle,一般不会使用其他数据库。因为这类公司数据量大,日数据量可达到过亿条,每日要处理如此庞大的数据量,必须选择DB2或Oracle。对于普通民营小公司,待处理数据量有限,使用SQL Server也完全能够满足需求。

有关待遇方面,可以看看猎聘网给出的对DBA的薪资:

 

总体而言,在有工作经验的情况下,在上海、北京这些一线城市中,最低的工资水平都可以达到1万元/月以上,二线城市在7000元/月左右,具体月薪,因人而异(备注:以上工资标准为2016年市场行情)。

 

 

2数据库程序员有哪些可供选择的职业发展道路?

 

一般来说,可供数据库程序员选择的职业发展道路有以下几个:数据库开发转DBA,DBA升项目经理,DBA升公司技术总监,转行做技术销售,转到大数据上,转到云计算上,转到数据库架构师上。

 

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)综合能力(有一定的应用能力)。有一定的程序设计能力,包括操作系统、网络与安全等知识。

 

4数据库程序员的日常工作是什么?

 

从DBA的角度而言,DBA的工作职责基本包含以下几点:

l  每日监控数据库以保证其可用性。

l  收集系统统计和性能信息,以便做定向分析。

l  配置和调整数据库实例,以便可以在应用程序特定要求下达到最佳性能。

l  分析和管理数据库安全性。控制和监视用户对数据库的访问,必要时需要开启数据库的审计功能。

l  制定备份恢复策略,保证备份的可用性。

l  升级RDBMS软件,在必要时使用补丁。

l  安装、测试和评估Oracle新的相关产品。

l  设计数据库表结构。

l  创建、配置和设计新的数据库实例。

l  诊断,故障检测和解决任何数据库相关问题。在有必要时,需联系Oracle支持人员以便使问题得到解决。

            l  确保监听程序正常运行。

           l  与系统管理员一起工作,保证系统的高可用。

DBA的工作内容包含以下几点:

1.实时监控数据库告警日志

对于DBA来说,实时地监控数据库的告警日志是必须进行的工作,监控并且应该根据不同的告警级别,发送不同级别的告警信息(通过邮件、短信),这有助于及时了解数据库的变化与异常,及时响应并介入处理。

2.实时监控数据库的重要统计信息和等待事件

实时监控对于数据库的运行至关重要。要高度关注那些能够代表数据库重要变化的统计信息,并且据此发送告警信息。监控哪些统计信息应当根据不同的环境来区别对待,对于单机、RAC环境等各不   相同。

3.部署自动的AWR报告生成机制

每天要检查前一天的AWR报告(AWR报告是Oracle 10g下提供的一种性能收集和分析工具,它能提供一个时间段内整个系统资源使用情况的报告,通过这个报告,就可以了解一个系统的整体运行情况,这就像一个人的全面的体检报告),熟悉数据库的运行状况,做到对数据库了如指掌。

4.每天至少了解或熟悉一个Top SQL

根据AWR报告,每天至少了解或熟悉一个Top SQL,能优化的要提出优化和调整建议。一个DBA应当对稳定系统中的SQL非常熟悉和了解,这样才可能在系统出现性能问题时快速地作出判断和响应。

5.部署完善的监控系统,并对重要信息进行采样

DBA应该对数据库部署完善的监控系统,并对重要信息进行采样,能够实时或定期生成数据库重要指标的曲线图,展现数据库的运行趋势。

6.全面深入地了解应用架构

对于一名DBA而言,一定要深入了解应用。在数据库本身变得更加自动化和简化之后,未来的DBA应该不断走向前端,加深对于应用的了解,从应用角度对数据库及全局进行把握和优化。

7.撰写系统架构、现状、调整备忘录

根据对数据库的研究和了解,不断记录数据库的状况,撰写数据库架构、现状及调整备忘录,不放过任何可能的优化与改进的机会。

当然,DBA的工作内容远不止上面列出的这几点,像数据库安装、数据库备份、数据库恢复等都属于DBA的工作内容,这里不再详述。

 

5要想成为一名出色的数据库程序员,需要掌握哪些必备的知识?

 

数据库应用可以分为数据库开发、数据库管理、数据库优化、数据库设计等,要根据自己的工作性质来选择性地学习。从宏观角度来说,需要了解数据库有哪些功能,数据库应用可以如何分类,并且要知道哪些是重点知识。如果你是一个数据库开发人员,那么你就应该首先了解SQL和PL/SQL的编写,而不是数据库的备份与恢复。数据库开发要求开发人员能利用SQL完成数据库的增加、删除、修改、查询的基本操作,能用PL/SQL完成各类逻辑的实现。

相比数据库开发来说,数据库管理人员的人数需求在IT市场要少得多。这是由工作性质决定的。无论生产还是测试环境,搭建数据库都不可能非常频繁。如果数据崩溃需要恢复、数据需要迁移、紧急故障需要处理的情况频繁出现,那么这个企业基本上也就无法正常运营下去了。但是一旦出现问题,管理人员无法及时恢复故障,将会受到来自各方面的指责,压力非常大。和开发人员相比,管理人员不需要每时每刻地忙碌着,但是却要时刻注意充电,提升自己的应急处理能力,还需要时刻对系统进行健康检查,以防不测。此外,虽然开发在逻辑思维方面的要求要高于管理,但是责任和压力却远没有管理这么大。数据库管理人员能完成数据库的安装、部署、参数调试、备份恢复、数据迁移等系统相关的工作,能完成分配用户、控制权限、表空间划分等管理相关工作:能进行故障定位、问题分析等数据库诊断修复相关工作。

不少企业没有设置专门的数据库优化岗位,它可能被融入资深开发、资深管理和资深设计人员的技能之中。对于有这样角色的企业来说,场景可能是这样的:生产环境运行缓慢,数据库管理人员通过跟踪诊断,查出问题所在,原来是系列SQL运行缓慢导致的整个数据库性能低下。这个时候对于数据库管理人员来说,他的工作结束了,然后优化人员介入,利用自己的知识优化这些SQL。在没有专门角色的场景下,可能是这个管理人员有着丰富的技能,他优化了这些SQL,也可能是资深开发人员或者是资深设计人员优化了这些SQL。但是从工作职责划分、从更专业的角度来说,应该设置专职人员。数据库优化所需要的人员是最难估算的,或许很多,或许很少,甚至没有,但是却是最重要的技能之一。数据库优化能在深入了解数据库的运行原理的基础上,利用各类工具及手段发现并解决数据库存在的性能问题,从而提升数据库运行效率,这个说着轻巧,其实很不容易。

数据库设计需要掌握的知识点最多,从事数据库设计是很不容易的,这是属于核心岗位的位置,少数人的规划和部署决定了产品最终的质量和生命力。从市场需求来说,从事设计的人员最少。一般来说,一个应届毕业生在相关开发、管理岗位努力工作两年后,都可以把开发及管理工作做得比较出色。要把优化工作做到得心应手应该至少要3年以上。要想从事设计相关工作,一般需要5年以上的工作经验。数据库设计需要深刻理解业务需求和数据库原理,合理高效地完成数据库模型的建设,设计出各类表及索引等数据库对象,让后续应用开发可以高效稳定。

另外,在就业的时候很多人眼高手低,一毕业就想从事设计及优化相关工作,结果碰了一鼻子灰找不到工作,因为企业根本不给你这个机会。也有人一个劲地想做数据库管理工作,但是由于管理相关的岗位比较少,结果成功的人寥寥无几。很多时候当兴趣和工作不匹配时,不要强求,要耐心找机会。例如,掌握SQL开发技巧后,可以匹配到很多适合自己的岗位,轻易地获取工作机会,而精通SQL及PL/SQL开发技巧,对管理优化和设计都是非常有帮助的。

刚毕业从事数据库开发相关工作,后续有机会再从事管理相关工作,期间兼顾优化相关的技能学习,主动承担起优化的任务,争取成为一个兼职或者专职的优化人员。最后,随着业务的熟悉,水到渠成的从事数据库设计相关工作。当然,大家千万不要误认为设计就一定比管理好,管理就一定强过开发,市场的供需决定了人员的比例,但是各个岗位都可以有出色的专家,最完美的还是在自己感兴趣的领域中大展手脚。

要想成为一名出色的DBA,需要掌握的知识非常多,尤其现今的很多企业对DBA的要求极高,一般都是要求熟练掌握一种数据库,同时熟悉其他数据库。下图展示了一名优秀的DBA需要掌握的一些基本内容。

 

对于这些内容,可以从一些博客或著名网站去学习,如作者的博客、itpub论坛、Oracle官方网站等。一定要学会对Oracle官方文档的搜索。工作环境没有外网的读者可以先在有外网的环境下去编者的云盘下载离线的官方文档。在Oracle学习初期可以利用编者制作好的CHM格式的官方帮助文档进行全文搜索。另外,编者在个人云盘里分享了很多的学习资料,包括数据库、Java等其他资料,读者可以有选择性地下载需要的学习资料。所以,总体来说,获取Oracle知识的可靠途径包括官方文档(Concepts部分需要反复阅读)、好的培训机构、购买相关书籍、阅读博客和公众号、请教公司前辈、做实验摸索总结等。

接下来将业内名人的一些话送给大家:①勤奋、坚持,这两点非常重要;②在看不清方向的时候,低下头来把手中的工作做好;③向他人学习,向聪明人学习,借鉴成功者、同行者的经验非常重要;④敞开心胸,平淡看得失;⑤在正确的时间做正确的事;⑥行动有时候比思想更重要。

 

6各类数据库求职及市场使用情况

 

先看一组DB-Engines(该网站统计全球数据库的排行榜,网址为https://db-engines.com/en/ranking)发布的2017年8月份的数据库排名数据,前10名排名情况如下图所示。

 

在上图中,Oracle、MySQL和Microsoft SQL Server仍占据前三名,Oracle虽然排名第一,但得分却呈下降趋势,与上月相比少了7.00,与去年同期相比少了59.85。第二名的MySQL得分也有所下降,与去年同期相比少了16.73,与上月相比下降8.81。第三名的Microsoft SQL Server得分较上月下降了0.52,与去年同期相比,得分有比较高的提升。此外,PostgreSQL数据库排名也有所上升趋势。

下图是每个数据库的变化趋势。


 

可以看到,前3名一直保持着远高于其他数据库的地位。下图是前3名(Oracle、MySQL和Microsoft SQL Server)数据库的排名详图。

 

可以看到,第二名的MySQL和第三名的Microsoft SQL Server已经越来越接近第一名的Oracle,说不定在下一次排名发布时,就能看到不一样的三甲排名。

DB-Engines排名的数据依据于以下几个不同的因素:

            l  Google以及Bing搜索引擎的关键字搜索数量。

            l  Google Trends的搜索数量。

            l  Indeed网站中的职位搜索量。

            l  LinkedIn中提到关键字的个人资料数。

           l  Stackoverflow上相关的问题和关注者数量。

需要注意的是,这份榜单分析旨在为数据库相关从业人员提供一个技术方向的参考,其中涉及的排名情况并非基于产品的技术先进程度或市场占有率等因素。无论排名先后,选择适合与企业业务需求相匹配的技术,才是最重要的。

目前对于市场上数据库的求职,主要以Oracle和MySQL为主。对于NoSQL的要求,一般都是包含在Oracle或MySQL之内的,要求精通Oracle或MySQL,熟悉一种NoSQL数据库。Oracle主要在传统行业招聘,而MySQL主要在互联网行业招聘。

长沙尚学堂—IT行业资深教学品牌,IT软件工程师的培养摇篮!现:Java开发培训,Python,大数据培训开班进行中

 

分享:0
开班计划

试听申请表

全程面授,不高薪都难

报名成功后,尚学堂工作人员将在24小时内与您联系

热门文章
视频下载
猜你喜欢